Audience and level of detail
The audience of a functional design often is made up of two parties, the customer and supplier. The customer’s interest is to get clear what the product to be delivered will look like. The supplier wants to know what he needs to get realized in great detail. Although these interests seems compatible, integrating them both in one document can be difficult.
To serve the customers purpose I’ve booked good result with use case and user stories. When applied well, these techniques make clear to a customer what the product will look like.
For suppliers its usually required to add some more level of detail. This can be accomplished by using models like sequences diagrams, data flow diagrams or state machine diagrams.
Waterfall or Agile
The software development methodology used, greatly determines the process of creating a functional design.
A traditional approach requires for all system details to be worked out in a functional design and agreed upon, before the actual realization of software commences. Especially with large projects this can prove cumbersome: for a long period the customer will get no deliverables except for documentation, no feeling of actual progress. And when the documentation is finally finished, the customer’s conditions might already have changed.
An agile approach focusses on delivering the most valuable requirements first and fast. Time is not spend in understanding all the details of the required system. Detail is added just in time and as much as requirement in the current stage. This implies a functional design is continuously being refined and revised. The advantage compared to the traditional waterfall approach is that customers will generally get (useful) parts of the system delivered faster and are able to steer based on that. Disadvantage is that it’s difficult to say anything about total costs, especially early in the project and with new scrum teams.
- Requirements management
- Use cases
- Data Flow Diagram
- Process model
- Data model