A Simulation-Based Approach to Software Project Risk Management

Article excerpt

For most software development environments, software aids/automated tools for managing risk factors in software development projects are not available with a generic label. However, a generic class of computer-based automated tools, called ROI (risk on investment) analysis tools is available, yet, these tools lack features specific to software project risk management. As a matter of fact these tools have been developed with multi-person multi-activity engineering projects as target applications in mind. This paper describes a simulation based software project risk management tool which helps manager to identify high risk areas of software process and software product and plan, organize and manage the software development project in a judicious way.

Introduction

Is software project management really different from management of any engineering project, for example, a house construction project? (Simpson, 1987) "Yes", and "No" as well. For applying project management tools and techniques described in this paper, an activity network for the software project is created as follows:

* A set of software project activities is identified;

* Interdependencies between project activities are established;

* Concurrencies between project activities are established;

* Effort required to carry out each software engineering activity is estimated;

* High-risk areas of 1) software process (i.e., critical software development activities) and 2) software product (i.e., critical software modules) are identified.

* Temporal, human, computing and other resources are assigned to software engineering activities and product modules, using findings in previous step as an indicator (Thayer, 1988).

Managing a software development project can be viewed from two different perspectives. In the first, an end date for the release of a software product has already been established. The effort needs to be distributed within the prescribed time frame. The second view of management assumes that rough time bounds have been discussed but the release date is set by the high-ups in software development house after careful analysis of the software system. Effort is distributed to make best utilization of resources. The first perspective is encountered far more frequently than the second (Whitten, 1989; Ince, 1993).

Objective of the software project risk management is to minimize: (1) the ROI (risk on investment), (2) cost of software development, and (3) in-time delivery. Sometimes, accuracy in the time schedule can be more important than accuracy in the costing. In software product environments, added cost can be offset by re-pricing or by distributing the added cost over a large number of product sales. A missed schedule can reduce market impact, create customer dissatisfaction and can raise internal costs also (Weinberg, 1986). Following questions assume importance while managing a software project:

--How do we distribute human resource over calendar time?

--What software development activities are expected?

--What task parallelism is expected?

--What milestones might be used to show progress?

--How is effort distributed over spectrum of software engineering activities?

--Are risk management tools/methods available?

Answers to all but last question depend upon a particular software development project. And, yes as well as no, risk management methods are available for general business and engineering processes, but such tools are not available specifically for software process. In this section is addressed the last question and a simulator has been developed that assigns each software development activity a degree of being critical during project development. These degrees are called criticality indices and are used in effort distribution (1) over the project development time and (2) over spectrum of project activities (Averill, 2000). …