Functional Specification - The All Important Roadmap
Everybody knows it's madness to embark on any code development without some form of functional specification, so why do so many do it? Perhaps they think it's saving time? Perhaps they think they know what they're doing, or maybe they're just not sure how to go about writing a formal specification?
Failing to write a functional specification is the single biggest unnecessary risk you can expose yourself to in a software development project. Without a thoroughly thought our plan you will always spend more time and therefore money on your project, and often result in an inferior programme.
The most important outcome of a functional specification is to actually design the programme. The act of us collaboratively writing the functional specification (describing how the programme will work in minute detail) forces you to look at every aspect of your software development, including how it will actually be used, which in turn drives you to better design the programme. It's all too easy to create an overcomplicated system which negatively impacts on your business performance as users struggle to complete basic tasks.
Impacts' Approach to Functional Specifications:
Following a thorough requirements capture process with our clients we prepare the first draft of a functional specification - this will provide a basis for the software design. This is of course an iterative process and may involve several different departments input. At each iteration we consult with your project team to ascertain whether the current version satisfies your requirements.
The following items will form the basis for the content of our Functional Specification:
- System overview
This shall provide an overview of the proposed system, such as a functional block diagram ie a graphical representation of the system showing the relationship between inputs, processes, data storage and outputs.
- Software functions and facilities
These shall be considered as follows;
- the facilities (services) required of the software product shall be defined as functional components
- the functional components shall be refined and specified as detailed processes (eg data transformations) which operate on data passed to them.
- Software interfaces
The system/software interfaces shall be specified ie:
- user interfaces (eg look and feel, input, displays, hard copies)
- system interfaces (eg comms protocol, input/output format, hardware subsystems).
- Non-functional specifications
The non-functional requirements (eg performance, scalability, compatibility, efficiency etc) applicable to the specification shall be laid out in natural language.
This is of course a flexible process so should you need any other elements included in your functional specification, please don't hesitate to contact us.
Read more about our software consultancy services: