In order to ensure consistency in the level of detail at each requirements level and to improve the accuracy of analysis, the retrieved data was normalized in the next step. The normalization of the capability goals of a project included, for instance, merging related low-level capability goals into one high-level capability goal. As an example, one of these 25 projects specified “Add an entry”, “Edit an entry”, and “Delete an entry” as three separate capability goals. During the normalization process, these three capability goals were merged into one “Manage entry” capability goal. The normalization of capability requirements involved steps like splitting aggregate requirements into their individual components and treating each component as a separate capability requirement. One project, for instance, treated generating five different types of reports as one capability requirement. During normalization, each of these five types of reports was counted as a separate capability requirement. A similar procedure was followed in normalizing use cases and use case steps. SLOC were normalized by ensuring that auto-generated code was not counted.
Replaced/Superseded by document(s)
During a software development project’s life cycle, requirements are specified at multiple levels of detail e.g. objectives, shall statements, use cases, etc. The elaboration of requirements proceeds from one level of detail to the other till the final level – lines of code – is reached. This empirical study conducts a quantitative analysis of this hierarchical process of requirements elaboration. Multi-level requirements data from 25 small e-services projects is examined and the ratios between the numbers of requirements at consecutive levels are determined. Knowledge of these ratios – called elaboration factors – can play a crucial role in early software cost estimation. A case study demonstrating the utility of this approach in producing an early size estimate of a large commercial project is also presented.