Requirements engineering is the first stage of the development process in computer based systems. It is probably the most important and the most ignored stage also. For any project to succeed, it is imperative that the requirements are accurately defined, and that there is a consensus on requirements between the project stake holders.  According to the The Standish Groups’ “CHAOS” report, 68% percent of the IT projects fail due to poorly defined requirements.

Although it is true that the requirements engineering is the first stage in development process, it does not end there. Requirements should evolve and become clear during the life of the project, therefore, the requirements document should be a live document, which should be updated as the project progresses.

Most of the organizations involved in IT development projects feel that requirements engineering is only useful for complex projects and thus do not formally document requirements. Essentially, this means that the project is doomed from the start. In typical web development or mobile application development project, the developers ask the customers what they want and then start coding according to what they think the customer wants. There is little communication between the developers and clients after the initial discussions and the final product is often not what the customer had in mind. Following cartoon nicely sums up what happens when projects are carried out this way:

Requirements Engineering Cartoon

So if requirements engineering can reduce project failures, how can you incorporate this important stage in small projects?

1. Use appropriate requirements gathering techniques

It is always useful to learn about and master a few requirements gathering techniques. There is a long list of techniques and pros and cons of each. Popular techniques include: Interviews, Brainstorming, Story Boarding, and Prototyping. It is important to select a technique which is appropriate for the stage. For example at initial stages, unstructured interviews, or brain storming sessions could be useful, while at a design stage, story boarding will be appropriate.

2. Communication

Importance of communication can not be stressed enough. Developers should have a communication plan at hand before starting the project. This plan should include when, how, and with whom to communicate.

3. Managing requirements

Documenting requirements and managing requirements as they become clear is also very important. Firstly, you can formally agree on the requirements with the stake holders based on the requirements that have been documented. Secondly, this document will become an important piece in generating test cases.

4. Test the project against requirements

Once the requirements have been clearly defined and understood, this step should not be difficult. To test the project against requirements, the requirements have to be testable. Therefore, when writing requirements, think also think about how it will be tested.

It is true that getting the requirements right is difficult, which is true for any processes that involve communication between human beings. But following this process will result in successful projects, and thus should not be ignored.