In this project (as shown in Figure 1), initially, information was collected from many potential customers and then workshops were organized to define a vision and scope, and to identify functions and features at a high level (such as just the names of use cases and features). All information defined in these sessions was collected within a requirement repository. At any point in time, a large number of ‘could do’, ‘should do’ and ‘must do’ requirements were collected. These had to be aggregated in a centralized repository where they could be viewed, prioritized and ‘mined’ for future iterations. Setting priorities early in the project helped in deciding which features to skip under time pressure. Requirements prioritization should be done by the customer. Both the customer and the developer had to provide input to requirements prioritization. The customer marked features providing the greatest benefit to users with the highest priority. Developers point out the technical risks, costs or difficulties [46]. Requirements had to be readily accessible to all team members, available to be enhanced and revised over time, and remain reasonably current to directly drive testing as they are implemented. It was observed that the product would
consist of: