Many different kinds of process are used to develop software intensive products, but there is little agreement as to which processes give the best results under which circumstances. Practitioners and researchers believe that project outcomes would be improved if the development process was constructed according to project-specific factors. In order to achieve this goal, greater understanding of the factors that most affect outcomes is needed. To improve understanding, researchers build models of the process and carry out studies based on these models. However, current models contain many ambiguities and assumptions, and so it is not clear what the results of the studies mean. The statement of this thesis is that it is possible to create an abstraction of the software development process that will provide a mechanism for comparing software processes and software process models. The long term goal of the research is to provide planners with a means of tailoring the development process on a project by project basis, with the aim of reducing risk and improving outcomes. i Introduction
Research Area OverviewMany researchers and practitioners are interested in exploring different ways of producing software-intensive products. The reason is that it is generally agreed in the software industry that the kind of process used in a software project is a key factor in determining what are the outcomes for the project. Example outcomes are the ability of the project to deliver the software product on-time and within budget.At the present time, there are a number of different kinds of process in use in industry. These are often categorised as either 'traditional' (commonly referred to as 'heavyweight') or 'lightweight'. Traditional processes were created to help control very large software projects spanning several years, many of which exhibited safety-critical or other 'large loss' aspects. These processes are based on a manufacturing paradigm and are characterised by a phased approach, in which, for example, design tasks are strictly separated from coding tasks. Different phases tend to be carried out by different people, for example, 'systems analysts', 'architects', 'coders' and 'testers'. As a result of the strict separation, large quantities of documentation are required to communicate decisions among the various parties. The well-known 'Waterfall' model represents an example of this kind of process.The 'light' processes have emerged more recently as a response to the perceived ineffec-together than alone. Although this represents some consideration of human factors, there is no mechanism for accommodating differences between developers.In an attempt to accumulate data to increase the industry's ability to predict process outcomes, researchers have carried out different kinds of studies. There are a number of concerns that relate to these studies. One such concern is the issue of how to measure the various factors He applied an elliptical model to the motion of the planets and from this model produced laws that appeared t...