A Unified Approach to Quantitative Software Lifecycle Modeling
Abstract
An evolutionary process currently taking place in engineering systems is the shift from hardware to software where the role of software engineering is becoming more central in developing large engineering systems. This shift represents a trend from a piece-meal vision of software development to a holistic, system-wide vision. The term "software crisis" of 1960's and 1970's was the observation that most software development projects end up with massive cost overruns and schedule delays. The growing complexity of software projects led to Waterfall, Spiral and other models to depict the software development lifecycle. These models are qualitative and study the product, process and project issues in isolation, and do not provide a quantitative framework to depict the various facets of development, testing, maintenance and reuse.
In this thesis, a generic, unified lifecycle model (ULM) integrating the product, process and project view of software development based on re-entrant lines is proposed. A reentrant line is a multi-class queueing network that consists of several types of artifacts visiting a set of development teams more than once. An artifact is a general term for any object of information created, produced, changed or used by development teams and it includes items such as requirements specification documents, preliminary and detailed module designs and design documents, code, components, test plans and test suites. The artifacts visit the development teams several times before exiting the system, thus making the flow of artifacts non-acyclic. The main consequence of the re-entrant flow is that several artifacts at different stages of completion compete with each other for service by a development team.
The ULM model output is obtained by using the criticality, complexity and usage of artifacts. The model is solved using linear programming and simulation methods. The software development process in a software organisation is represented by the proposed re-entrant line model. The model is used to predict project metrics such as the development time, cost and product quality for any new project to be taken up by the organization. The routing matrix of the artifacts in the ULM can be modified to derive different types of lifecycle models such as Waterfall, Prototyping, Spiral and Hybrid models.
The ULM may be modified to include software reuse and component-based development. We investigate certain issues involved in software reuse. Reuse of components is modeled as an external arrival of artifacts at different stages in the ULM. Two distinct lifecycles in component based software development, namely, 'development for reuse' and 'development with reuse', are distinguished and the development time and cost for projects are estimated using LP bounds and simulation.
The 'development for reuse' lifecycle involves reusable components development that is stored in a reuse library. As the number of components in the reuse library grows over time and with projects, the problem of effective and efficient retrieval of candidate components in order to facilitate systematic reuse becomes the bottleneck. A novel approach where components are stored in a case-base is proposed. The retrieval process is based on a reasoning approach that relies on similar cases (components) in the past to find solutions to the current problem (new software requirements in projects). The selection of candidate components for decisions pertaining to four levels of reuse {reuse as-is, reuse with minor code modifications, reuse of specifications, no reuse or develop afresh} in the current application is modeled using Rough and Fuzzy sets. These methodologies are illustrated with suitable case studies.
Maintenance of legacy systems, representing a massive, long-term business investment, is an important but relatively new research area. The ULM is modified to depict the complex set of activities associated with software maintenance. Quantitative metrics such as release time of versions, cost, time and effort for maintenance are estimated using this model. Some of the specific contributions of this thesis are:
1. A unified quantitative lifecycle model (ULM) depicting the software development process is used to obtain project metrics such as development cost, development time and quality based on the product and process attributes for the Waterfall, Prototyping, Spiral and Hybrid lifecycle models.
2. Analytic hierarchy process (AHP) methodology is used to rank order the suitability of different lifecycle models for a new development project at hand, based on the metrics obtained from ULM.
3. The ULM is modified to depict component-based software development and to integrate reuse as an important basis for software development. Two distinct lifecycles for development for reuse and development with reuse are studied. The 'development for reuse' strategy generates reusable components that are organized and stored in a reuse library. The selection-decision regarding candidate components from this library for reuse in the current application is derived using a Rough and Fussy set methodology.
4. The ULM is adapted to represent the various activities associated with software maintenance. Estimates of maintenance metrics for different strategies of maintenance of legacy systems are obtained.