| |||||||||
Requirements Analysis is an important part of the software engineering project process. It is the process by which business analysts or software developers identify the needs or requirements of a client. Having identified these requirements they are then in a position to design a solution. For most of the history of software engineering it has been considered to be a relatively easy part of the process. However, in the last decade or so, it has become recognised as an vital part of the process; if the requirements are wrong in the first place, it is recognised, it makes it highly unlikely that the finished piece of software will suit the needs of the client.
If you imagine a scenario, a person approaches a company and asks them to build a system to carry out some task, or automate some task for them. This is all very well, but what do they require the system to do?
The main issue of requirements analysis is to truly find out what the person wants, and find it out in detail. Only this way can a system that truly meets their needs be made.
The problems involved with requirements analysis are increasingly well known.
Typical problems caused by software developers are:
Steve McConnell, in his book Rapid Development, details a number of ways users can inhibit requirements gathering:
One of the solutions to this problem has been recognising that requirements analysis is a specialist field best carried out by experts. Business or system analysts, who could bridge the gap between the business and IT worlds were seen as they answer. However, this has not solved the problem, because the techniques used to analyse requirements have not proved sufficiently effective.
Modern techniques introduced in the nineties like UML, use cases, and Agile software development seem closer to resolving the dilemma.
Requirements Analysis is a long and arduous process, and can employ serveral techniques to get the requirements from the customer. These include such things as holding interviews, or holding focus groups, more aptly named in this context as