Development Approach Concepts
Lead Authors: David Endler Contributing Authors: Mike Yokell, Garry Roedler
A life cycle is the evolution of a system, product, service, project or other human-made entity from conception through retirement. (ISO/IEC/IEEE 24748-1) A stage is a period within the life cycle of an entity that relates to the state of its description or realization. Stages relate to major progress, achievement milestones, or decision points of the entity through its life cycle. It can be helpful to create models to depict and manage the progression from beginning to end. These models are called life cycle models.
Basic terms and concepts
A life cycle model is a framework of processes and activities concerned with the life cycle. Each of the life cycle stages has its specific needs and goals. In order to support these, approaches should be in place to ensure continuous learning and improvement. In the context of systems engineering, the development stage is of particular importance. Therefore, this article elaborates on concepts for the development stage.
With the exception of services, the terms "waterfall," "incremental," and "evolutionary" almost always occur adjacent to "development," and almost never adjacent to the names of other life cycle stages (e.g. "waterfall production", "incremental utilization" or "evolutionary retirement". These adjectives apply only to the development stage and not to the life cycle as a whole.
As projects can have very different starting points, there are a variety of development approaches; several with combinations of features including sequential, incremental and evolutionary as shown in Figure 1 below. The boundaries between these groups are not clear-cut and there can be overlaps.
The classification into the groups is mainly based on the criteria of the extent to which the requirements for the system of interest are known, whether there are increments or not, and what these increments are used for. It is important to keep in mind that development will always be concurrent and iterative to a certain degree (which is never zero in practice) as is indicated in Figure 1 by the round symbol along the development stage. In practice, it is often the case that a system of interest consists of system elements for which different development approaches are recommended. This can be caused by most common approaches to hardware and software or even because it has differing delivery goals (e.g., ongoing research vs. in-service support).
An agile approach is an iterative and incremental approach to product and service delivery. DevOps (development and operations) is the set of principles and practices which enable better communication and collaboration between relevant stakeholders for the purpose of specifying, developing and operating software, and systems products and services, and continuous improvements in all aspects of the life cycle. Having similar objectives, agile and DevOps approaches are frequently combined.
Agile and DevOps practices are commonly associated with both incremental and evolutionary approaches.
Sequential approaches
Fully sequential approaches are purely theoretical and unfairly maligned because they don’t appear in practice. Sequential development approaches typically consist of performing the development tasks in a specific order with some iteration to allow learning and change. Information needs to flow between stages to manage risk. Sequential approaches are intuitive, they have well-defined processes, and it is relatively easy to measure progress. Typically, they are applied to manageable projects in familiar domains where risk is manageable.
Incremental approaches
Incremental approaches are typically applied when a sequence of increments with increasing capabilities or effectiveness are developed. These increments support learning and assessment of potential design solutions. As the development progresses, some of these increments can be released and delivered. The last increment finally meets all requirements and provides all capabilities.
The benefits of incremental approaches are the focus on technical risk and the possibility to introduce emerging technologies.
Evolutionary approaches
Evolutionary approaches start with a limited set of requirements. A series of evolutionary cycles intended to both provide stakeholder value and increase problem understanding is initiated. Each cycle provides an opportunity to examine how the solution is used so the lessons learned can be incorporated in the next iteration.
The benefits of evolutionary approaches are early and steady feedback from stakeholders and the possibility to introduce emerging technologies.
References
Works Cited
INCOSE. 2023. "Chapter 2.1.2" in Systems Engineering Handbook: A Guide for System Life Cycle Processes and Activities, 5th Edition. Ed(s): D. Walden, T.M. Shortell, G.J. Roedler, B.A. Delicado, O. Mornas, Y. Yew-Seng, D. Endler. San Diego, CA: International Council on Systems Engineering (INCOSE). Available at https://www.incose.org/publications/se-handbook-v5.
INCOSE. 2023. "Chapter 4.2" in Systems Engineering Handbook: A Guide for System Life Cycle Processes and Activities, 5th Edition. Ed(s): D. Walden, T.M. Shortell, G.J. Roedler, B.A. Delicado, O. Mornas, Y. Yew-Seng, D. Endler. San Diego, CA: International Council on Systems Engineering (INCOSE). Available at https://www.incose.org/publications/se-handbook-v5.
ISO/IEC/IEEE 24748-1. 2024. Systems and software engineering — Life cycle management, Part 1: Guidelines for life cycle management. Geneva, Switzerland: International Organization for Standardization (ISO), International Electrotechnical Commission, and Institute of Electrical and Electronics Engineers. Available at https://www.iso.org/standard/84709.html.
Primary References
None.
Additional References
None.