How Functional Design diferent from the Technical Design ? As per my understanding Functional Design means HighLevelDesign(UseCases), Technical Design means LowLevelDesign(Class dia, Obj dia, Sequence dia,...). Is it correct ?
Jeroen T Wenting
Joined: Apr 21, 2006
The functional design specifies WHAT a program should do, the technical design described how that functionality is to be implemented in code.
So the functional design may state that the program must attach a courtdate to a file when the user clicks a button with a specific name and position on screen. The technical design would indicate which fields in which tables of the database will be involved, maybe even how to name the method to be called when that button is clicked.
Joined: Apr 08, 2004
Hi Joren, Whether Functional desgin means UI design ( Navigation, Menu design) & Technical desgin means High Level(use case ) and Low Level(class, sequence diagrams) design ?
Joined: Jan 07, 1999
Functional design is the kind of design that is agreed between software architects and business customers. It describes what the system has to do in a way that both parties can understand and agree. It might describe user interface requirements, it might discuss database access, it might discuss web services or other forms of communication, it might discuss service level agreements or clustering and redundancy. The point is that it should be detailled enough to become the agreed definition of what the system will do.
Technical design, on the other hand, is the kind of design that is agreed between software architects and software developers. It describes how the system will be built to meet the functional design. It contains detail and terminology not appropriate to business customers but needed by developers. It might describe screen layouts, it might describe database table and column names, it might discuss WSDL or communication protocols and file formats, it might discuss server and operating system versions and dependencies. The point is that it should be detailled enough to enable unit tests, code, configurations, and technical documentation work to begin.
We try to approach functional design at three levels.
Describe the business process and requirements in a system-free context. Don't reference specific computer systems.
Describe one computer system in an implementation-free context. Don't reference specific screens, widgets, user gestures.
Describe some subset of the UI or a system-to-system interface in excruciating detail. Every screen, widget, user gesture, data entry field values, lengths & edits, etc.
In practice, the first level is just conversation while the others are separate documents. I think it's unfortunate that the top level is often lost over time. It becomes difficult to make changes in the second because nobody knows which details are important and which are icing on the cake and the whole document becomes gospel.
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi