What could I design?

What is detailed design? what are the advantage disadvantages using it?

  • Im really not getting the idea: What is Detailed Design. Why use Detailed Design. Advantages/Disadvantage of using Detailed Design. Any alternative methods other than using Detailed Design. Could some one please guide/explain me ?

  • Answer:

    1) When most people talk about detailed design, they are referring to a process known as top-down design. In short, when you think about the problem you are trying to solve, you start at the highest level and then work yourself into the details. This approach works very well when you have an overall structure you want your application to live within. At the macro level you are considering how many machines will be needed to host your application, which existing services you will need to use, etc. As you dive deeper, you are looking at use cases (or user stories if you prefer that terminology), and error handling (use cases have both normal and error condition paths to worry about). As you go even further into the details, you are looking at your algorithm, state transitions, logical sequence, and how internal parts of the code work together. 2) The classic top-down approach to detailed design is what is taught with the "waterfall" methodology, IEEE process guides, UML vendors, universities, and CMMI among others. In many of these heavy processes they have you writing two design documents. One is the overall architectural diagram (the top level design). The other is the detailed design where you go further down the rabit hole. In many cases it is the only approach to design many people know. It is a very logical and methodical approach to breaking down a software problem. 3) The main advantage is that you have identified what the critical sections are likely going to be. If you will need to start working on how your software will be using another existing service, you have compiled your list of integration points. You would be able to start talks with the owners of those services to plan your integration along with how to handle unexpected events. The main disadvantage is that many times people go too far down the rabit hole, and the design document takes a life of its own. While it is advantageous to have an overall vision and architecture for how an application will work, you will invariably find your initial thoughts on the core details were flat wrong. When that happens, either the design document is neglected or you have whole teams maintaining the paper and slowing progress on work. 4) I've already mentioned top-down design, so it follows there must be a "bottom-up" approach, right? As it turns out, there is. Essentially, the "bottom-up" approach is the core thought process behind Test Driven Development and Continuous Design methodologies. Essentially, the details of working code start driving the design of how larger chunks of working code cooperate and interface with each other. With TDD, you have unit tests to ensure that the details behave properly and keep validating your design. Continous design teaches us that we will never truly know the details until the software is done. Therefore, why try to fight the fact? Instead of a big up-front design stage, the design is built in increments over several iterations of design/code and testing. It is actually a very liberating concept that lets you concentrate on solving problems. Bottom line, there is no perfect answer. For me, I find a healthy balance between top-down and bottom-up design works well. Essentially, I still take the time to think about the big picture. I even map out a plan for the user interface idioms and my best ideas for it's design. However, I don't go into great detail because I know the details will change. Basically, you need to stop the top-down process when you are getting to areas you are not sure about. Once you get to those areas, start with the bottom-up approach. This lets you try different things, verify with the customer if it makes sense to them, and continue to improve over time.

Mafahir Fairoze at Programmers Visit the source

Was this solution helpful to you?

Other answers

A detailed design allows you to evaluate design options prior to actually implementing them. It can potentially save you a ton of needless work you would otherwise have spent on an implementation that was deeply flawed due to a high level design choice and had to be extensively rewritten.

Kris

Detailed design is more like an outline than anything else. It's no more advantageous or disadvantageous than an outline of a thesis is advantageous or disadvantageous. And like an outline of a thesis, it only summarizes the paper assuming your outline is either extremely clear or some context is assigned to it which makes sense of it.

Neil

When most people talk about detailed design, they are referring to a process known as top-down design. In short, when you think about the problem you are trying to solve, you start at the highest level and then work yourself into the details. This approach works very well when you have an overall structure you want your application to live within. At the macro level you are considering how many machines will be needed to host your application, which existing services you will need to use, etc. As you dive deeper, you are looking at use cases (or user stories if you prefer that terminology), and error handling (use cases have both normal and error condition paths to worry about). As you go even further into the details, you are looking at your algorithm, state transitions, logical sequence, and how internal parts of the code work together

vikash sharma

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.