[an error occurred while processing this directive]

Software Development Process


The description of process given here is intended to cover both complete software applications and their individual components. There are important aspects of application-level process that are not covered here. For example, iterative development is an important approach that allows development to proceed while permitting some changes in requirements. See [FS97] for a good presentation of the application-level process.

For experienced software developers, the component-level process is often less conspicuous, involving well-established and automated patterns of thinking. This does not diminish its importance. Software developers need good automated thinking habits to free their minds for dealing with more complex issues.

Phases of Software Development

Some of the activities in the software development process are sequential in nature, dividing the process into the following phases.

Ongoing Activities in Software Development

The following software development activities cannot be isolated to a single phase. They are repeated throughout the process.

The Importance of a Disciplined Process

A disciplined process serves two main purposes: it helps the developers to better understand the what they are doing, and it helps managers to make more accurate predictions about how long a project will take. Predictatability is crucial for setting reasonable goals and planning resource allocation.

Understanding
As software developers work through a disciplined process, they are developing a complex mental roadmap of the values of the client, the concepts that are important to the client, software patterns for achieving the desired behavior, and implementation methods. Common sense and experience both support the importance of this understanding.

Predictability
A disciplined process is also essential for management of resources so that managers can anticipate needs and coordinate between multiple projects. Software development firms will often impose a more stringent process than is needed to just get the job done. Part of the reason for this is that over time, the managers develop a better sense of how long it takes to accomplish various kinds of tasks and what kinds of skills are needed. Without a disciplined process, it is impossible to develop this sense - with an undisciplined process, there is just too much variation in how long it takes to accomplish a task, and the variation is usually in an undesirable direction.

[an error occurred while processing this directive]