Aiming at a fast delivery of an appropriate service
Functional specification replaces the traditional slow and heavy requirement gathering. With less work it produces a more detailed and descriptive result, which is a good basis for implementation.
A successful functional specification
- reduces the working hours of the software user significantly, or makes entire work phases unnecessary
- gives an accurate picture of the software to be implemented: which functionalities it will contain and which not
- produces an efficient and intuitive user interface; particularly the most frequently needed functionality is very straightforward to use
- minimizes expensive changes resulting from missing or unnecessary functionality
Based on user interviews
The functional specification is designed and tested with use situations, i.e. the tasks and problems the users try to solve by using the system. To collect them, our functional architects observe and interview the future users of the system. For example, if the sytem is a search engine for legislation, they interview and and observe lawyers at their workplace.
After use situations have been discovered, functional architects design the system to support them in a straightforward manner. The design is created in the most efficient ways possible, typically using a pen and paper. Editing the design at this point is quick and easy, because changes are only made to the user interface pictures drawn on paper.
Testing with real users
The resulting user interface prototype is tested with real users in order to find and fix any problems well in time before the implementation begins. The protypes are iterated several times before the best possible functionality is crystallized.
When the user interface has been evaluated with the users and the customer, the visual appearance of the software is completed to match the customer’s graphic style. The final user interface is described in a document consisting of screenshots, a kind of a miniature model of the software. All user interface views of the software are covered in order to give the customer and the project team a detailed and concrete idea of the software already in the beginning of the project.
Functional architects are involved throughout the project
The project team including the functional architects estimate together the extent and complexity of the implementation based on the functional specification. Decisions on task priority and the extent of the software implementation can be made based on those estimates.
The functional architects who created the functional specification participate in the development of the software as a part of the development team. When the team completes a part of the functionality, the functional architects along with the rest of the team verify that the implementation works flawlessly in real use. If new, important use situations are discovered during implementation, the functional architects modify the design to support the new situations seamlessly.
A functional specification based on the users’ tasks offers several benefits:
- The functionality is tested with real users and polished up even before the implementation begins.
- A tested user interface solution reduces problems and lacking functionality, which is typically discovered only when the software is taken to use.
- The software can be released early, because the most important required functionality is known from the beginning.
Functional specification pays for itself many times over, because users evaluate the quality of the software primarily based on its user interface.