Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

As i try to program a solution to a request arise. I can't separate the difference between implementation problems and design problems.

How do you specifically express the design problem?

share|improve this question
    
While creating a new system, or modifying existing code? –  Michael K Nov 10 '10 at 15:53
    
I feel like a magic loop too! –  Malfist Nov 10 '10 at 19:27
add comment

4 Answers

up vote 1 down vote accepted

Firstly: design looks at the system from a more high level view than implementation.

Every software question has both design and implementation aspects. In terms of design, you need to know how the request will fit with your current implementation. If you do not have a current implementation (its a new project) then you need to weigh all desired aspects of the project to determine how everything will fit together. You should do this before worrying about the implementation, since the implementation depends on this work.

After you have an idea of how the system should look, then do it. Just start implementing your idea of the solution. Most likely you will realize during the implementation that you forgot to address an problem. When that happens, just slow down, answer the design decision, and then implement that.

If your customers are asking you straight programming requests, then you should never agree to a definitive answer without thinking it overnight. This will allow you to consider alternatives that they may not have realized. The customer may (not always, but potentially) have heard about a new technology and thought they MUST have it. You as the developer need to use technologies for a distinct reason, and "because the customer said it was awesome" is not a very good reason.

To a small extent, everything in software development is related. Using the waterfall methodology (which is still used as the basis for many methodologies today - a topic for another time perhaps) allows for small upstream adjustments as needed. That said, design looks at the system from a farther view point then implementation. Use that as a means to determine what level the question addresses.

share|improve this answer
add comment

Design problems are a subset of implementation problems since technically everything is an implementation.

Design problems have the distinct bonus of requiring you to change large sections of code in order to make it work. If you're having to rewire half your program due to this request, it's a design problem. Pray it isn't.

share|improve this answer
1  
I think implementation problems are a subset of design problems. You have it the wrong way. Design is the overall "design" of the solution to some problem. Implementation details are encompassed by the design and thus a subset of the design. –  Chris Nov 10 '10 at 15:55
    
I'm pretty sure that the chicken came first. –  Jefromi Nov 10 '10 at 16:19
    
Jefromi: Its not about chicken/egg problem, this is about understanding the design is high level and the implementation specifics are a lower level. This answer suggests that the design is a subset of the implementation which means the implementation is a higher level than the design. Perhaps I misunderstand your comment altogether? –  Chris Nov 10 '10 at 18:01
    
en.wikipedia.org/wiki/Implementation Implementation is fairly generic and doesn't necessarily imply detailed work. Rather, design work specifically pertains to architectural work and is hence a subset. I think it's a common misnomer. –  Neil Nov 11 '10 at 13:58
add comment

You can say: design is a type of implementation problem. You get a request, and sometimes it is a straightforward implementation (add X to Y, modify A, B, and C), but sometimes it requires a broader change (refactoring!) to make it straightforward. The first is an implementation problem, and the second is a design problem.

You can say: implementation is a type of design problem. You get a request, and you must design a solution. You meet some design goals (make X faster, or B more usable), and then you design the rest of it so that it works in a way that doesn't impede your design goals in the future. The second is an implementation, but the entire thing is a design problem.

You can express your design in UML or sketches/cartoons, so you can say that a design problem is something you sketch out to solve, while an implementation problem is something you write code to solve. You will want your design to be specific enough that it tells you what elements meet your requirements and goals, but not so specific that it repeats the implementation. The exact balance is tricky, depends on your audience (as in all communication), and takes time to get right.

share|improve this answer
    
its hard to use uml. it always get sketchy with a lot of cross and pen erasing. using a rubber is useless, since it stops the line of thought. so i gave up uml, as a main tool, i use it occasionally. –  Display Name Nov 12 '10 at 10:29
add comment

Usually there is design before implementation, if I recall my Waterfall methodology stuff. What is the general idea being used to solve the problem is how I see design and possibly picking design patterns or other existing solutions to problems are at the design level. The implementation has all the details of taking what was general and hypothetical and making it real. This is kind of like Neil's answer. Another way to see this is that the design is what an architect has when he is done while the implementation is what the developer does, at least in bigger projects I believe.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.