One of the essential steps in the process of computer programming is the function known
as requirements analysis, which includes all of the ways in which the needs of a new or newly altered product are determined, especially in light of the possibly conflicting demands of the product’s varied users. This is one of the less technically involved aspects of computer programming, beginning with the holding of interviews with the people who will benefit from the end product computer, whether as prospective or financial backers. As such, requirements analysis attempts to meld the intuitive and opinionated nature of human planning with a basis of understanding of the practical issues of achieving it. The document or program that results from the process of requirements analysis must, in order to be useful for the final stages of computer programming, rigorously list all of the requirements gleaned from the product’s intended beneficiaries in a usable and accessible manner.
Because of the inherent challenges of compiling the results of requirements analysis, a number of approaches exist towards this task. The traditional approach in computer programming has been to draw up a lengthy list, which is treated as a contract and has the virtue of mutually clarifying intentions between the computer programmers and their supervisors. Some programmers have found such lists, however, to be overly large and unwieldy, lacking in practical purpose in obscuring the relative value of various requirements and ducking the issue of how to meet the technical demands they might pose.
A more recent approach taken to the task of requirements analysis in the computer programming field has been to produce a chart composed of goals that can be measured as to how close they are to implementation. The original list of requirements plays a less primary role in this approach to computer programming, providing a means to reach a smaller list of central goals, which are charted accordingly for their nearness to being implemented. This may also have the advantage of clarifying the relationship between the programmers and their backers in making clear how much value is already implicitly ready to be realized from the product.
A key step in realizing this approach to computer programming was the development of prototypes. Prototypes allow the finished products of computer programming to be seen as a whole before they are produced, thus potentially saving costs, time and energy by allowing the programmers a better idea of what is required and a clearer way of imparting this information to a project’s backers. In a similar vein, individual decisions to be made about the direction of a product can be presented through use cases, which show the requirements of a new system or an alteration performed on it. They focus on the behavior of the user in relation to the product, with less clarity as to how the product will perform its task. A group of use cases can be bundled together through the model of a software requirements specification, which comprehensively describes the behavior of the finished product.


