Skip Navigation Links > Process

Process

Rationale | Principals | Phases | Workflow | Graph


Developing complex software systems is hard work and the risks are high. In order to manage the complexity and mitigate risks that could jeopardize the success of a project a development process is needed to serve as a conceptual framework for planning and executing activities. The diagram below illustrates that activities in an incremental/iterative software development project are performed again and again over several cycles (iterations) to produce stable releases in controlled increments. devt_process_logo

A development process must accommodate various project criteria. For example, requirements capture, analysis, design, code, and test activities must be able to occur in parallel. Features must be carefully managed and be traceable to areas of the code and back. The architecture must be visually modeled, strictly enforced, and never fall out of sync with the code. And finally, each release must be based on validated software components. The only pragmatic way to develop software that satisfies these criteria is to use an incremental/iterative process which acknowledges that during development, discoveries will occur that require evolutionary changes to artifacts associated with each activity. These changes must occur in a controlled manner within a process in which mechanisms exist to prevent hacking, short-cuts, coordination chaos, and schedule slip. The objective of the process is to produce a working, bug-free, and high-quality software release every 4 to 6 weeks. Frequent releases are necessary to obtain feedback - especially from the customer - and to provide a solid foundation for the next incremental release.

A well-bounded development process:

  • Provides sufficient structure to guide innovation and creativity and yet constrain it at appropriate times and places to prevent unbridled freedom from running wild.
  • Allows project leaders to identify tasks that are focused on results and priorities without having to specify minutia so that developers can progress efficiently on their own initiative.
  • Produces accurate and meaningful progress and status reports for the while minimizing the impact on developers time.
  • Is lightweight and quickly becomes a matter of habit rather than a set of conscious acts that require developers to reference a huge manual every time they reach a new step in an activity.
  • Helps the team to manage complexity and identify risks.
  • Manages the flow of information both within and outside the team.

When software projects fail it is usually not for a lack of programmers, managers, equipment resources or time, but rather because control over the complexity was lost. In order to succeed, an agile development process is a necessary requirement.

Summary

 

Quote StartA process is a conceptual framework for managing complexity and mitigating risk.

 

Quote StartDifferent development activities must be able to occur in parallel.

 

Quote StartFor large projects the objective is to produce a high-quality release every 4 to 6 weeks.

 

Quote StartFrequent releases are necessary to obtain feedback and provide a solid foundation for the next release.

 

Quote StartThe architecture must be visually modeled.

 

Quote StartWhen software projects fail it is usually because control over the complexity was lost.

Top-of-page