As easy as it sounds, software requirements are requirements for software. But let’s dig a little bit deeper. Requirements are not only the functions required, actually this might be the least of the concerns in terms of requirements. Requirements must surpass all of the client’s expectations.
There’s even a science in charged of this analysis; and it is called Requirement Engineering its goal is to develop a very very very special and important document called the System Requirements Specification.
It involves mainly four steps, although there are text that claim it to be more than that and they are:
- Feasibility Study: This is the initial stage. In this one, the requirement engineer must meet the client in order to talk about the general expectations. Then, he produces a very wide and thorough analysis on the possible constrains, implementation cost, and objectives. It also explores the technical aspects of the project wit the future always in mind.
- Requirement Gathering: This is the solid, concrete and full list of requirements. Usually, this list contains the explicit requirements and specifications of the project.
- Software Requirement Specification: This is the formal and official document I talked about in the introduction. This is a natural language document in which all the interactions must be stated. And by all, I mean it. Every single interaction between hardware and software must be in there. Cross-plattform specification, security, limitations, maintainability must be there too.
- Software Requirement Validation: All the previous was never validated nor analyzed. In this stage, the document is impressively analyzed. All variables are taken into account, feasibility, ethics, security, ambiguities, cost and many others. This is the most important stage, because what is stated in this final revision is what devs are going to work with.
There are several types of requirements, (mainly two, read more