A common problem in the software industry is the lack of standardized terms to describe our work. The "requirement" defined by the customer seems to be a high-level product concept for the developer, and the "requirement" defined by the developer seems to be a detailed design for the user. In fact, software requirements contain multiple layers. Different Levels of requirements reflect the details from different angles and degrees.
The IEEE software engineering standard vocabulary (1997) defines requirements:
(1) Conditions or capabilities required by the user to solve the problem or achieve the goal.
(2) systems or system components shall meet the conditions or capabilities required by the contract, standard, specification or other formal provision documents.
(3) A document describing the conditions or capabilities described above (1) or (2.
The definition of IEEE includes describing requirements from the user perspective (external behaviors of the system) and from the developer perspective (some internal features). The key issue is that you must write the requirement documents.
In addition, the following lists several other definitions of "requirements:
* The requirement is what the user needs and can trigger Program Or a description of system development;
* The requirement is to discover the characteristics, functions, and attributes of the system that meet the needs of users from outside the system;
* The requirement is to specify the specifications that must be implemented. It describes the behaviors, features, or attributes of the system and is a constraint on the system during development.
From the above definition, we still cannot get a clear concept of "demand". The real "demand" actually exists in people's minds, any document form of requirement (for example: requirement Specification Description) is only a model or description.
requirement analysis lays the foundation for software engineering and project management. When we build the building of software systems, if the demand analysis foundation is not solid enough, it will often lead to hundreds of problems with the software system, or even be discarded immediately. In the process of building software systems, we often use Nonstandard methods, the consequence is that there is a gap-there is a huge "expectation difference" between the software developed by developers and what users think ".
we may ask: why is it much harder for people to develop a software system than to build a skyscraper? First, the software industry lacks an accurate and unified language to define or describe the corresponding work. The real "demand" actually exists in people's minds; second, it is difficult to use an engineering method to standardize and effectively implement the software development process. Therefore, the term "requirement" is not only a description of the external behaviors of the system from the user perspective, but also a description of the internal characteristics of the system from the developer perspective, the key point is that "requirements" must be documented.