Agile Development Approach

From SEBoK Draft
Jump to navigation Jump to search

Lead Authors: David Endler Contributing Authors: Mike Yokell, Garry Roedler


Agile development is an approach based on iterative development, frequent inspection and adaptation, and incremental deliveries in which requirements and solutions evolve through collaboration in cross-functional teams and through continual stakeholder feedback.

Concepts

Agile simply means able to move quickly and easily. Agile is an adjective, as in an agile development approach or an agile person. Agility is a noun, as in systems engineering agility, or someone who has impressive agility for a person of their size.

Agile development is an approach based on iterative development, frequent inspection and adaptation, and incremental deliveries in which requirements and solutions evolve through collaboration in cross-functional teams and through continual stakeholder feedback (ISO/IEC/IEEE 26515).

Iteration is repeating the application of the same process or set of processes on the same level of the system structure (ISO/IEC/IEEE 15288:2023).

In contrast to sequential approaches, agile development approaches break development into small, manageable units of work called iterations or sprints, usually lasting 1 to 4 weeks. At the end of each iteration, the team delivers a potentially shippable product increment. This allows for frequent reassessment of priorities and adaptation to new information or customer needs.

Agile principles were formally introduced in 2001 with the publication of the Agile Manifesto, which was specifically designed for software development. The Manifesto outlines four core values for guiding the development of software systems:

  1. Individuals and interactions over processes and tools
  2. Working systems over comprehensive documentation
  3. Customer collaboration over contract negotiation
  4. Responding to change over following a plan

While these values were crafted for software development, many systems engineers adopt agile principles in their practices. However, it is important to recognize that these principles were initially formulated within the context of software engineering and may not transfer seamlessly to the broader, more complex domain of systems engineering. Systems engineering involves not only software but also hardware, human elements, processes, and other components that may require different considerations, timelines, and integration points.

The agile methodology is supported by 12 principles that emphasize continuous delivery, responsiveness to change, and high-quality, sustainable development practices. However, these principles were originally intended for software systems, and the direct application of these ideas to complex systems engineering projects can require adaptation. Agile methods can be highly effective in dynamic environments where customer needs evolve rapidly. Teams are encouraged to deliver value early and often, potentially improving responsiveness and customer satisfaction. At the same time, these approaches must be carefully adapted when applied to large-scale, multi-disciplinary systems engineering projects.

Practical considerations

In an agile systems engineering environment, team members collaborate in a fast-moving, feedback-driven manner. A core aspect of agile systems engineering is the use of system-level user stories. These are short, simple descriptions of system features or capabilities from the perspective of the end user. Each story typically follows a format like: “As a <role (who wants to accomplish something)>, I want <activity (what they want to accomplish)> so that <business value (why they want to accomplish that thing)>.” These stories help clarify not just the technical requirements but also the rationale behind them.

User stories are often grouped into user journeys or epics, giving context to how individual features contribute to the broader product experience. During sprint planning, the team breaks stories into smaller tasks, estimates their complexity (often using story points), and commits to what can realistically be delivered in the upcoming sprint. Frequent communication is vital in agile systems engineering to share progress, identify obstacles, and coordinate efforts, ensure alignment and foster transparency.

Using an agile development approach also means team members are expected to respond to change. As requirements evolve throughout the project, teams are expected to pivot and adjust without disrupting the overall progress. Continuous engagement with stakeholders, including system architects, designers, and product owners, ensures that changing priorities are clearly communicated and understood.

Sprints are a core element of most agile methodologies, but there are some agile approaches that do not strictly rely on sprints. In case sprints are used, retrospectives at the end of each sprint allow team members to reflect on their processes, discuss what worked well, and identify areas for improvement. This fosters a culture of continuous learning and refinement, encouraging ongoing process optimization. In the agile development approach, decision points tend to avoid the terms "milestones" and "decision gates." With agile development approaches, interaction with stakeholders can be more frequent, smaller in scope and less formal than other approaches. (ISO/IEC/IEEE 24748-1)

Example development approach

Several frameworks have emerged to help teams implement agile principles effectively. The following text introduces a few non-exhaustive examples to demonstrate the existing variation in agile methods and do not constitute an endorsement.

Scrum is the most widely used. It structures work into time-boxed sprints (sometimes 2 to 4 weeks) and includes defined roles such as Product Owner, Scrum Master, and Development Team. Scrum emphasizes clear priorities, daily stand-ups, sprint planning, reviews, and retrospectives to promote continuous improvement and team alignment.

For larger organizations, SAFe (Scaled Agile Framework) provides a structured way to scale Agile across multiple teams and departments. It introduces roles like Release Train Engineer and events like PI Planning (Program Increment Planning), aligning teams around shared goals and synchronized delivery cycles. SAFe blends Agile, Lean, and systems thinking to support complex enterprise needs.

LeSS (Large-Scale Scrum) is a lighter-weight alternative to SAFe. It extends Scrum principles to multiple teams working on the same product. Instead of adding layers of management, LeSS encourages simplification and emphasizes team autonomy and shared product ownership.

Each framework offers different levels of structure, but all aim to improve collaboration, transparency, and adaptability which are key benefits of working in an Agile environment.

Figure 1 shows an example of a mixed approach that is both incremental, evolutionary and agile. In this example, teams working on electronic-board hardware, firmware, and software have different timings for hardware increments and firmware and software epics (versions). The teams accomplish integrated work-in-process test with the latest increments and versions from each of the disciplines.

Figure 1. Asynchronous iterations and increments across agile mixed discipline engineering. (Dove, et al. (2017). Used with permission. All other rights reserved.)

This example shows bringing the individual strands together at certain points in time. This reduces inconsistencies at the interfaces and strengthens the team spirit.

References

Works Cited

INCOSE. 2023. "Chapter 2.2 and 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.

ISO/IEC/IEEE 24748-2. 2024. Systems and Software Engineering -- Life Cycle Management – Part 2: Guidelines for the application of ISO/IEC/IEEE 15288 (system life cycle processes). Geneva, Switzerland: International Organisation for Standardisation (ISO) / International Electrotechnical Commissions / Institute of Electrical and Electronics Engineers. Available at https://www.iso.org/standard/84661.html.

ISO/IEC/IEEE 26515. 2018. Systems and software engineering — Developing information for users in an agile environment. Geneva, Switzerland: International Organisation for Standardisation (ISO) / International Electrotechnical Commissions / Institute of Electrical and Electronics Engineers. Available at https://www.iso.org/standard/70880.html.

ISO/IEC/IEEE 15288. 2023. Systems and software engineering — System life cycle processes. Geneva, Switzerland: International Organization for Standardization (ISO), International Electrotechnical Commission, and Institute of Electrical and Electronics Engineers. Available at https://www.iso.org/standard/81702.html.

Beck, K., et al. (2001) The Agile Manifesto. Agile Alliance. http://agilemanifesto.org/

Primary References

None.

Additional References

None.


< Previous Article | Parent Article | Next Article >
SEBoK v. 2.12, released 27 May 2025