views:

43

answers:

2

I have gone through the topics Functional Specification, High Level Design, Low Level Design. I read their description & template from different sites. I know the difference between High Level Design & Low Level Design. Both the functional specification & Hign/Low level design provides the guide for coding the programmer, both describes the functionality of the system, both provides the overview of the system etc. Then what is the specific difference between them ? In which stage of the SDLC they are used ? Please explain in detail.

A: 

A Functional Spec usually describes what is required (it clearly describes the features and user interfaces that the user needs to do their task). Often a Functional Spec defines the list of features that the customer expects on delivery, and can form the basis of a contract between a customer and a developer.

Design documents are usually written more from the programmer's point of view (how those features should be implemented), and while they can describe high level details such as user interface, they can also delve into lower level "internal" details like class hierarchies and database designs. The design is unlikely to be written before you have signed the contract with the customer (because you don't want to invest time on the nitty-gritty implementation details if you don't know if the project will go ahead)

With Agile, you may have one Func Spec, and then write small design documents for specific bits of that product as you go.

Often (especially in Agile approaches) the two can be combined - a functional spec is written that has enough detail to satisfy both the customer and the programmers, and the lower level implementation details are simple enough that the programmers can "design as they go" - e.g. If you were asked to implement a preferences dialog you might just apply a standard pattern, and therefore the design wouldn't need to say more than "there will be a standard preferences dialog")

Jason Williams
A: 

Be aware that the meaning of those phrases can shift enormously between different organizations...

To put the document names in a wider context, have you looked at the venerable Zachman framework? Its original purpose was to provide a taxonomy of architectural views (sounds great, doesn't it!): this can also help structure and classify documentation, both in terms of who should understand it (the rows) and in terms of what is addressed (the columns).

The Zachman rows have strong relations to various audiences, from pure business people via software guys to operations shift engineers. A way of interpreting it in this case would be that functional specifications belong to the Conceptual level which should be understandable by business and IT people both; high level design documents belong to the Logical level and should be understandable by IT people, with particular consideration for integration; low level design documents correspond to the Physical level and should be understandable by those who actually implement and operate the detailed technology.

Pontus Gagge