Project lifecycle
|
In software engineering, a project lifecycle models how a project is planned, controlled and monitored from its inception to its completion. In the earliest stages, and in the last stages, of the lifecycle, software architecture, requirements, and system definition is an issue:
- What is the market for the system/software?
- What is the competition?
- What is the platform of the system/software?
- How much time is available to the project?
- How many skill-sets are needed?
Over the years, a number of different models have been developed, beginning with the oldest and simplest being the Waterfall Model. However, as software has become larger and more complex, this method of development has been found to be counter productive, especially when large teams are involved. Models that are iterative have evolved including Prototyping, Evolutionary Prototyping, Incremental Development, spiral model, V model, and Chaos model.
The use of these models was for the most part confined to the overall management of the project, however projects are now considered better controlled if the model best suited to them controls the individual aspects of the project. For example, a project may be managed using the Incremental Development model, but during each increment the Documentation is created managed using the Waterfall Model and the Code development managed using the 'V' model.
The level of formality and complexity of the lifecycle for each project is constrained by any number of factors, including budgetary constraints, experience and size and complexity of the project and development team.
Some experienced and highly respected project leaders and programmers consider rigid application of lifecycle plans to be a theory that does not work well in practice. Linus Torvalds, the very highly regarded project leader of the Linux kernel, made the following statement on the Linux kernel mailing list:
- No major software project that has been successful in a general marketplace (as opposed to niches) has ever gone through those nice lifecycles they tell you about in CompSci classes.
- Source: Google Groups archive of fa.linux.kernel discussion (http://groups-beta.google.com/group/fa.linux.kernel/browse_thread/thread/6f3b8aefb5563480/d9eade9159ae9ba5?q=%22No+major+software+project+that+has+been+successful+in+a+general+marketplace+(as+opposed+to+niches)+has+ever+gone+through+those+nice+lifecycles+they+tell+you+about+in+CompSci+classes.%22&_done=%2Fgroups%3Fq%3D%22No+major+software+project+that+has+been+successful+in+a+general+marketplace+(as+opposed+to+niches)+has+ever+gone+through+those+nice+lifecycles+they+tell+you+about+in+CompSci+classes.%22%26&_doneTitle=Back+to+Search&&d#d9eade9159ae9ba5)
ISO 12207 is a standard that was developed to describe the method of selecting, implementing and monitoring a lifecycle for a project.