2.2 The role of development processes
A development process is a set of rules that defines how a software development project should be carried out, and a set of software engineering activities associated with the development of software. Each activity undertakes some clearly defined process, starting with a number of inputs from any preceding activities. On completion of an activity there may be one or more outputs, which are known as deliverables.
The order in which these activities are carried out is called a life cycle or process model, and outlines an overall process for the development of a software system. Project management and quality management activities permeate the life cycle of software development. A complete life cycle takes us from the first ideas about the need for a software system to its final withdrawal.
This approach of following a well-defined process has been promoted as the best way to meet the potential diversity of users’ needs, and the primary mechanism to understand and harmonise conflicting demands on the development process. However, this approach has also been contested as too prescriptive, heavy on documentation, and not helping to meet the expectations of customers. In this section, we will start by presenting a well-defined process for software development but will also discuss some lighter-weight alternatives.
In Section 1, we introduced the notion that a good software system is one that meets its users’ needs. In general, we will identify a customer as someone who pays for a software system, in contrast to the people who use it on a day-to-day basis – the users (although a customer may also be one of the intended users). A successful development project will deliver a product that meets, or even exceeds, the customer’s expectations.
Software can also be developed without an identified customer – in that case it is successful if it can find someone who will become a customer and buy it.
We will assume that a customer (or someone acting as a customer) has assessed the feasibility of some initial ideas with a potential group of users and has decided that a software system may be required.