Where application development is concerned, the ability to produce great code is just one small component of overall success. Just as essential is the ability for the developers to clearly grasp the business requirement - and deliver against an accurate functional specification.
Nick McKenzie, technical director at nVisionIT, notes that the process for the creation of an application is not always clearly understood. “From the business owner, to the user, to the developer, there are different perspectives and different expectations at play. As requirements pass through this chain, inconsistencies or assumptions can be introduced which can derail this process.”
It comes down to effective communication - but that is made more challenging by the reality that the various links in the value chain are, to all intents and purposes, speaking in different languages. “For any IT project, this is often where things fall down. When taking requirements from a user who has a particular viewpoint, preconceptions and reality filter, to compiling these into a functional specification, there has to be some mechanism to ensure there is no loss of intent in the process,” says McKenzie.
Using the functional specification, the developers then turn what started out as a freeform thought or concept, into lines of code which comprise the application.
The business analyst plays a central role in the process of understanding the requirement and 'translating' it so that developers can produce the application accurately and with the necessary functionality. But the business analyst, too, cannot work in isolation from the developers, say McKenzie.
He explains that often it is believed that the technical team should be brought in only once the functional specification is determined, but it is essential that they are included in the application design sessions. “The business analyst plays an essential role in understanding what the client requires, but they cannot always fully appreciate what is possible from a coding or technology perspective. The programmer's input is therefore necessary to manage the expectations of the client; without this input, the functional spec runs the risk of being written just to get signoff from the client without objection,” he says.
Dealing with assumptions
It is said there is a hidden message in the word 'assume' - it makes an ass out of you and me - and while slightly crude, this rings true for application development. McKenzie says assumptions are rife when dealing with the different levels of the application development value chain, and notes that this is where the process can get horribly tortured. “Assumptions usually come about as the result of the familiarity which each link has with their work. The business owner, for example, might include one line in a specification: To do A you need to have B. However, B is not specified. He assumes that because he knows what B is, that the business analyst and the programmers will also know it.”
B, says McKenzie, could be of such consequence that it can completely change the scope of a project. “This highlights the need for requirements traceability. When developers are writing code, they need to know how it relates to requirements, how those requirements fit into scenarios and how those scenarios roll up to form a complete product,” he says.
The answer to what is a tricky and recurrent challenge for software developers lies in process and approach, which comes from years of experience. But it also lies in using appropriate tools to support the process and approach. “You want whatever tool you are using to understand that you are writing a functional specification. In the process, the tool helps check assumptions and create outputs that your downstream development applications can use - such as, for example, generating a work breakdown structure from the use cases detailed in the functional specification,” McKenzie says.
He adds that such tools allow more people to participate in application design, effectively including all the links of the chain, and equipping developers to write applications at a much higher level of abstraction.
“Together with proven process and approach, such tools are a step forward in ensuring that application developers consistently and accurately meet the requirements of their clients,” McKenzie concludes.
Share