Difference between revisions of "System Lifecycle Process Models: Vee"

From SEBoK
Jump to navigation Jump to search
Line 265: Line 265:
 
===Overview of the Incremental Commitment Spiral Model===
 
===Overview of the Incremental Commitment Spiral Model===
  
A view of the Incremental Commitment Spiral Model is shown in Figure 18.  As with the original spiral model (Boehm 1988), its expanding spirals reflect increasing cumulative levels of system understanding, product detail and process detail.  These do not expand uniformly, but as a function of the relative risks of doing too much or too little of product and process definition.  Thus, valuation and selection of COTS products may be the highest-risk item and receive most of the early effort, or it might be prototyping of user interfaces, of operational concept scenarios, or of alternative vehicle platform configurations.
+
A view of the Incremental Commitment Spiral Model is shown in Figure 18.  
  
 
[[File:KF_IncrementalCommitmentSpiral.png|600px|The Incremental Commitment Spiral Model (Pew and Mavor 2007, Figure 2-5)]]
 
[[File:KF_IncrementalCommitmentSpiral.png|600px|The Incremental Commitment Spiral Model (Pew and Mavor 2007, Figure 2-5)]]
Line 271: Line 271:
 
Figure 18 - The Incremental Commitment Spiral Model (Pew and Mavor 2007, Figure 2-5)
 
Figure 18 - The Incremental Commitment Spiral Model (Pew and Mavor 2007, Figure 2-5)
  
Each spiral will be concurrently rather than sequentially addressing requirements and solutions; products and processes; hardware, software and human factors aspects; and business case analysis of alternative product configurations or product line investments.  All of this concurrency is synchronized and stabilized by having the development team collaborate in producing not only artifacts, but also evidence of their combined feasibility.  This evidence is then assessed at the various stakeholder commitment decision milestones by independent experts, and any shortfalls in evidence are considered as uncertainties or probabilities of loss, which when multiplied by the relative or absolute size of the prospective loss, becomes its level of Risk Exposure.  Any such significant risks should then be addressed by a risk mitigation plan.
+
Each spiral will be concurrently rather than sequentially addressing requirements and solutions; products and processes; hardware, software and human factors aspects; and business case analysis of alternative product configurations or product line investments.  
  
The stakeholders then consider the risks and risk mitigation plans, and decide on a course of action.  If the risks are acceptable and will covered by risk mitigation plans, the project would proceed into the next spiral.  If the risks were high but addressable, the project would remain in the current spiral until the risks are resolved (e.g., working out safety cases for a safety-critical system, or producing acceptable versions of missing risk mitigation plans).  If the risks are negligible (e.g., finding at the end of the Exploration spiral that the solution can be easily produced via an already-owned COTS package which has been successfully used to produce more complex applications), there would be no need to perform a Valuation and a Foundations spiral, and the project could go straight into Development.
+
The stakeholders consider the risks and risk mitigation plans, and decide on a course of action.  If the risks are acceptable and will covered by risk mitigation plans, the project would proceed into the next spiral.  
 
 
If the risk is too high and unaddressable (e.g., the market window for such a product has already closed), the project should be terminated or rescoped, perhaps to address a different market sector whose market window is clearly sufficiently open.  This outcome is shown by the dotted line “going into the third dimension” in the Risk-Based Decisions figure at the lower left of Figure 18, but is not visible for simplicity on the numbered circles in the larger spiral diagram.
 
  
 
The Development spirals after the first Development Commitment Review follow the three-team incremental development approach for achieving both agility and assurance shown in Figure 2 and discussed in [[System Life Cycle Process Drivers and Choices]].
 
The Development spirals after the first Development Commitment Review follow the three-team incremental development approach for achieving both agility and assurance shown in Figure 2 and discussed in [[System Life Cycle Process Drivers and Choices]].
Line 284: Line 282:
 
The ICSM builds on the strengths of current process models: early verification and validation concepts in the V-model, concurrency concepts in the Concurrent Engineering model, lighter-weight concepts in the Agile and Lean models, risk-driven concepts in the spiral model, the phases and anchor points in the Rational Unified Process (RUP) (Kruchten 1999; Boehm 1996), and recent extensions of the spiral model to address SoS capability acquisition (Boehm and Lane 2007).
 
The ICSM builds on the strengths of current process models: early verification and validation concepts in the V-model, concurrency concepts in the Concurrent Engineering model, lighter-weight concepts in the Agile and Lean models, risk-driven concepts in the spiral model, the phases and anchor points in the Rational Unified Process (RUP) (Kruchten 1999; Boehm 1996), and recent extensions of the spiral model to address SoS capability acquisition (Boehm and Lane 2007).
  
In comparison to the software-intensive RUP (the closest widely-used predecessor to the ICM), the ICM also addresses hardware and human factors integration.  It extends the RUP phases to cover the full system life cycle: an Exploration phase precedes the RUP Inception phase, which is refocused on valuation and investment analysis.  The RUP Elaboration phase is refocused on Foundations (a term based on the (Rechtin 1991) approach to Systems Architecting, describing concurrent development of requirements, architecture, and plans as the essential foundations for Engineering and Manufacturing Development), to which it adds feasibility evidence as a first-class deliverable.  The RUP Construction and Transition phases are combined into Development; and an additional Operations phase combines operations, production, maintenance, and phase-out.  Also, the names of the milestones are changed to emphasize that their objectives are to ensure stakeholder commitment to proceed to the next level of resource expenditure based on a thorough feasibility and risk analysis, and not just on the existence of a set of system objectives and a set of architecture diagrams.  Thus, the RUP Life Cycle Objectives (LCO) milestone is called the Foundations Commitment Review (FCR) in the ICM and the RUP Life Cycle Architecture (LCA) milestone is called the Development Commitment Review (DCR).
 
 
   
 
   
 
[[File:KF_Phase_GenericIncremental.png|600px|Phased View of the Generic Incremental Commitment Spiral Model Process (Pew and Mavor 2007 Fig 2-1)]]
 
[[File:KF_Phase_GenericIncremental.png|600px|Phased View of the Generic Incremental Commitment Spiral Model Process (Pew and Mavor 2007 Fig 2-1)]]
Line 296: Line 293:
 
Figure 20 - ICSM Activity Categories and Level of Effort (Pew and Mavor 2007 Fig 2-3)
 
Figure 20 - ICSM Activity Categories and Level of Effort (Pew and Mavor 2007 Fig 2-3)
  
As with the RUP version, it should be emphasized that the magnitude and shape of the levels of effort will be risk-driven and likely to vary from project to project.  In particular, they are likely to have mini risk/opportunity-driven peaks and valleys, rather than the smooth curves shown for simplicity in Figure 20.  The main intent of this view is to emphasize the necessary concurrency of the primary success-critical activities shown as rows in Figure 20.  Thus, in interpreting the Exploration column, although system scoping is the primary objective of the Exploration phase, doing it well involves a considerable amount of activity in understanding needs, envisioning opportunities, identifying and reconciling stakeholder goals and objectives, architecting solutions, life cycle planning, evaluating alternatives, and negotiating stakeholder commitments.
+
As with the RUP version, the magnitude and shape of the levels of effort will be risk-driven and likely to vary from project to project.   
 
 
For example, if one were exploring the initial scoping of a new medical device product line, one would not just interview a number of stakeholders and compile a list of their expressed needs into a requirements specification.  One would also envision and explore opportunities for using alternative technologies, perhaps via competitive prototyping.  In the area of understanding needs, one would determine relevant key performance parameters, scenarios, and evaluation criteria for evaluating the [[prototype (glossary)|prototypers’]] results.  And via the [[prototype (glossary)|prototypes]], one would explore alternative architectural concepts for developing, producing, and evolving the medical device product line; evaluate their relative feasibility, benefits, and risks for stakeholders to review; and if the risks and rewards are acceptable to the stakeholders, to negotiate commitments of further resources to proceed into a Valuation phase with a clearer understanding of what level of capabilities would be worth exploring as downstream requirements.
 
  
Figure 20 indicates that a great deal of concurrent activity occurs within and across the various ICM phases, all of which needs to be synchronized and stabilized (a best-practice term taken from Microsoft Secrets (Cusumano and Selby 1996) to keep the project under control.  To make this concurrency work, the evidence-based anchor point milestone reviews are used to synchronize, stabilize, and risk-assess the ensemble of artifacts at the end of each phase.  Each of these anchor point milestone reviews, labeled at the top of Figure 19, is focused on developer-produced and expert-reviewed evidence, instead of individual PowerPoint charts and Unified Modeling Language (UML) diagrams with associated assertions and assumptions, to help the key stakeholders determine the next level of commitment.
+
Figure 20 indicates that a great deal of concurrent activity occurs within and across the various ICM phases, all of which needs to be synchronized and stabilized (a best-practice term taken from Microsoft Secrets (Cusumano and Selby 1996) to keep the project under control.   
  
 
The review processes and use of independent experts are based on the highly successful AT&T Architecture Review Board procedures described in (Maranzano et al. 2005).  Figure 21 shows the content of the Feasibility Evidence Description.  Showing feasibility of the concurrently-developed elements helps synchronize and stabilize the concurrent activities.
 
The review processes and use of independent experts are based on the highly successful AT&T Architecture Review Board procedures described in (Maranzano et al. 2005).  Figure 21 shows the content of the Feasibility Evidence Description.  Showing feasibility of the concurrently-developed elements helps synchronize and stabilize the concurrent activities.
Line 311: Line 306:
  
 
===Underlying ICSM Principles===
 
===Underlying ICSM Principles===
 
+
ICSM has four underlying principles.  If a project just follows the diagrams without following the principles (as often happened with the original spiral model), the project will have a serious risk of failure.  The four principles are:
At least as important as the diagrams depicting the ICSM views are its four underlying principles.  If a project just follows the diagrams without following the principles (as often happened with the original spiral model), the project will have a serious risk of failure.  The four principles are:
 
  
 
# Stakeholder value-based system definition and evolution.  If a project fails to include success-critical stakeholders such as end-users, maintainers, or suppliers, these stakeholders will frequently feel little commitment to the project and will either underperform or refuse to use the results.
 
# Stakeholder value-based system definition and evolution.  If a project fails to include success-critical stakeholders such as end-users, maintainers, or suppliers, these stakeholders will frequently feel little commitment to the project and will either underperform or refuse to use the results.
Line 321: Line 315:
 
===Model Experience to Date===
 
===Model Experience to Date===
  
During the National Research Council Human-Systems Integration study, it was found that the ICSM processes and principles corresponded well with best commercial practices. A good example documented in the study showed its application to a highly successful commercial medical infusion pump development (Pew and Mavor 2007, Chapter 5).  A counterpart well-documented successful government-acquisition project using its principles was the CCPDS-R project (Royce 1998, Appendix D).
+
During the National Research Council Human-Systems Integration study, it was found that the ICSM processes and principles corresponded well with best commercial practices.   Examples are found in (Pew and Mavor 2007, Chapter 5)and(Royce 1998, Appendix D).
 
 
A further source of successful projects that have applied the ICSM principles is the annual series of Top-5 software-intensive systems projects published in CrossTalk (CrossTalk 2002-2005).  The “Top-5 Quality Software Projects” were chosen annually by panels of leading experts as role models of best practices and successful outcomes.  Of the 20 Top-5 projects in 2002 through 2005, 16 explicitly used concurrent engineering; 14 explicitly used risk-driven development; and 15 explicitly used incrementally-committed evolutionary, iterative system growth, while additional projects gave indications of their partial use (The project summaries did not include discussion of stakeholder involvement).  Evidence of successful results of stakeholder-satisfying can be found in the annual series of University of Southern California (USC) e-Services projects using the Win-Win Spiral model as described in (Boehm et al. 1998).  Since 1998, over 50 user-intensive e-Services applications have used precursor and current versions of the ICSM to achieve a 92% success rate of on-time delivery of stakeholder-satisfactory systems.  Its use on the software portion of the ultralarge Future Combat Systems program enabled the sponsors to much better identify and deal with the software-intensive program risks and identify improved courses of action (Crosson and Boehm 2009).
 
  
A word of caution is that experiences to date indicate that the three teams’ activities during evolutionary development are not as neatly orthogonal as they look in Figure 2.  Feedback on development shortfalls from the V&V team either requires a response from the development team (early fixes will be less disruptive and expensive than later fixes), or deferral to a later increment, adding work and coordination by the agile systems engineering team.  The agile team’s analyses and [[prototype (glossary)|prototypes]] addressing how to accommodate changes and deferred capabilities need to draw on the experience and expertise of the plan-driven development team, requiring some additional development team resources and calendar time.  Additional challenges arise if different versions of each increment are going to be deployed in different ways into different environments.  The model has sufficient degrees of freedom to address such challenges, but they need to be planned for within the project’s schedules and budgets.
+
A further source of successful projects that have applied the ICSM principles is the annual series of Top-5 software-intensive systems projects published in CrossTalk (CrossTalk 2002-2005).
  
 
==Primarily Interpersonal and Unconstrained Processes: Scrum and Agile==
 
==Primarily Interpersonal and Unconstrained Processes: Scrum and Agile==

Revision as of 20:49, 30 August 2011

There are a large number of life cycle process models in which systems engineering may operate. For the most part, these models fall into three major categories:

  1. Primarily Prespecified and Sequential Processes.
  2. Primarily Evolutionary and Concurrent Processes. Examples are the Rational Unified Process and various forms of the Vee and spiral models.
  3. Primarily Interpersonal and Unconstrained Processes. Examples are Agile development, Scrum, eXtreme Programming, Dynamic System Development Method, and innovation-based processes.

There are considerable gray areas among the categories. Versions of the Vee model show concurrent system development, verification, and validation activities, although the language and tables describing the Vee model below generally assign activities to stages more exclusively and sequentially. The ICSM has a prespecified approach for developing increments, while destabilizing change traffic is routed to a concurrent agile rebaselining team as in Figure 2. Organizations have found ways to scale up agile methods to projects of up to 100 people using a Scrum of Scrums approach within and overall architecture. Furthermore, very large systems and systems of systems will generally find it best to apply all three process categories to portions of their systems and their life cycles.


A Primarily Prespecified and Sequential Process Model: The Vee Model

The sequential version of the Vee model is shown in Figure 3. Its core involves a sequential progression of plans, specifications, and products that are baselined and put under configuration management. The vertical two-headed arrow enables projects to perform concurrent opportunity and risk analyses, and continuous in-process validation.

Left side of the Vee model (Forsberg, Mooz, and Cotterman 2005. Pg 111)

Figure 3 – Left side of the sequential Vee model (Forsberg, Mooz, and Cotterman 2005. Pg 111)


The Vee model endorses the INCOSE Systems Engineering Handbook 2011 definition of life cycle stages and their purposes or activities, as shown in Table 3.

Generic life cycle stages, their purposes, and decision gate options(INCOSE Systems Engineering Handbook 2011, p 25; also ISO/IEC 15288:2008)

Table 3 - Generic life cycle stages, their purposes, and decision gate options (INCOSE Systems Engineering Handbook 2011, p 25; also ISO/IEC 15288:2008)

Application of the Vee Model

Generic (T) Stage Structure of System Life Cycle Models

Figure 4 - Generic (T) Stage Structure of System Life Cycle Models (Lawson 2010, Figures 6-2 to 6-5)

The generic life cycle stages for a variety of different organizations, from standards (ISO/IEC) to commercial to government, are shown in Figure 5. Note that although different in detail, all have a similar sequential format that emphasizes the core activities as noted in Figure 4.

Comparisons of life cycle models (Forsberg, Mooz, and Cotterman 2005, p 87 updated)

Figure 5 - Comparisons of life cycle models (Forsberg, Mooz, and Cotterman 2005, p. 87 updated)

Fundamentals of Life Cycle Stages and Program Management Phase

The notion of life cycle is related to the notion of program management that was presented in the previous section. Note that:

  • The term "stage" refers to the different states of the system during its life cycle; some stages may overlap in time such as the Utilization stage and the Support stage. The term “stage” is used in ISO/IEC 15288.
  • The term "phase" refers to the different steps of the program that supports and manages the life of the system; the phases usually do not overlap. The term “Phase” is used in many well-established models as equivalent to “Stage.”

Program management employs phases, milestones, and decision gates during which the stages of the system evolve. The stages contain the activities performed to achieve their goals; the phases serve to the control and the management of the sequence of stages and the transitions from one stage to the others. For each project it is essential that the team define and publish the terms and related definitions used on their project to minimize confusion.

As an example, Figure 6 shows a typical program management sequence. This classical program is composed of the following phases:

  • The pre-study phase
  • The feasibility phase - This phase consists of studying the feasibility of alternative concepts to reach a second decision gate before initiating the execution stage. It is the “go-ahead decision” based on:
    • Whether a concept is feasible and is considered able to counter an identified threat or exploit an opportunity.
    • Whether a concept is sufficiently mature to warrant continued development of a new product or line of products.
    • Whether to approve a proposal generated in response to an RFP (Request for Proposal).

During the feasibility phase stakeholders' requirements and system requirements are identified, viable solutions are designed and studied, virtual prototypes are engineered and can be implemented.

  • The execution phase – This phase includes activities related to four stages of the system: development, production, utilization and support. Typically there are two decision gates and two milestones associated with execution activities. The first milestone provides the opportunity for management to review the plans for execution before giving the go-ahead. The second milestone provides the opportunity to review progress before the decision is made to initiate production. The decision gates during execution can be used to determine whether to produce the developed system-of-interest and whether to improve it or retire it.

These Program Management views apply not only to the system-of-interest but also to its elements and structure.

Program Management and Engineering Views of the System Life Cycle

Figure 6 - Program Management and Engineering Views of the sequential System Life Cycle (ISO/IEC 19760:2003)

Life Cycle Stages

Exploratory Research Stage

The most important phase in the project cycle is the User Requirements Analysis and Agreement phase, which is part of the Exploratory Research Stage. First, define the user (and stakeholder) requirements and constraints.

A key part of this process is to establish the feasibility of meeting the user requirements.

Except for the first and last Decision Gates of a project, the two Gates are performed simultaneously. See Figure 9.

Scheduling the Development Phases

Figure 9 - Scheduling the Development Phases (Faisandier 2010)

Reviews

To control the progress of a project different types of Reviews are planned. The most commonly used are listed below but the names are not universal:

  • System Requirements Review - SRR is planned to verify and validate the set of system requirements before starting the detailed design activities.
  • Preliminary Design Review - PDR is planned to verify and validate the set of system requirements, the design artifacts and justification elements at the end of the first engineering loop. This review is sometimes called the “Design-to” gate.
  • Critical Design Review – CDR is planned to verify and validate the set of system requirements, the design artifacts and justification elements at the end of the last engineering loop. The “Build-to” and “Code-to” design is released after this review.
  • Integration, Verification, and Validation (IV&V) (glossary) Reviews – As the components are assembled into higher level subsystems and elements, a sequence of reviews are held to ensure that everything integrates properly and that there is objective evidence that all requirements have been met (I&V). There should also be an in-process validation that the system, as it is evolving, will meet the Stakeholders’ Requirements (see Figure 10).
  • Final Validation Review – FVR is carried out at the end of the integration phase.
  • Other Project Reviews related to management can be planned in order to control the correct progress of work, based on the type of system and associated risks.


Right side of the Vee Model

Figure 10 - Right side of the Vee Model (Forsberg, Mooz, and Cotterman 2005, Pg. 115)

Production Stage

The Production Stage is where the system-of-interest is produced or manufactured. Product modifications may be required to resolve production problems, to reduce production costs, or to enhance product or system-of-interest capabilities. Any of these may influence system requirements and may require system re-qualification, re-verification, or re-validation. All such changes require SE assessment before changes are approved.

Utilization Stage

A significant aspect of Product Life Cycle Management is the provisioning of supporting systems that are vital in sustaining operation of the product. While the supplied product or service may be seen as the NSOI (Narrow System of Interest) for an acquirer, the acquirer also must incorporate the supporting systems into a WSOI (Wider System of Interest). These supporting systems should be seen as system assets that when needed are activated in responding to some situation that has arisen in respect to operation of the NSOI. The collective name for the set of supporting systems is the Integrated Logistics Support (ILS) System. Some typical types of ILS supporting systems are indicated in Figure 11.

The ILS portrayed in the figure identifies several typical elements of this ILS system. The elements are system assets for a supplying enterprise that are instantiated and put into operation in responding to logistics related situations.

As has been emphasized several times earlier, it is vital to have a holistic view when defining, producing and operating system products and services. T In Figure 11 the relationship between system design and development and the ILS requirements is portrayed.

Typical Integrated Logistics Support (ILS) Supporting Systems (Blanchard 2004)

Figure 11 - Typical Integrated Logistics Support (ILS) Supporting Systems (Blanchard 2004)

Relating ILS to the System Life Cycle

Figure 12 - Relating ILS to the System Life Cycle (ASD-STAN, Fig 1, 2009 Products and Services S3000L, www.asd-stn.org.)

The requirements for reliability resulting in the need of maintainability and testability are driving factors.

Support Stage

In the Support Stage the system-of-interest is provided services that enable continued operation. Modifications may be proposed to resolve supportability problems, to reduce operational costs, or to extend the life of a system. These changes require SE assessment to avoid loss of system capabilities while under operation. The corresponding technical process is the Maintenance Process.

Retirement Stage

In the Retirement Stage the system-of-interest and its related services are removed from operation. SE activities in this stage are primarily focused on ensuring that disposal requirements are satisfied. In fact, planning for disposal is part of the system definition during the Concept Stage. Experience in the 20th century repeatedly demonstrated the consequences when system retirement and disposal are not considered from the outset. Early in the 21st century, many countries have changed their laws to hold the creator of a system-of-interest accountable for proper end-of-life disposal of the system.

Incremental and Evolutionary Development using the Vee Model

Overview of the Incremental Approach

Incremental and iterative development (IID) methods have been in use since the 1960s (and perhaps earlier). They represent a practical and useful approach that allows a project to provide an initial capability followed by successive deliveries to reach the desired System-of-Interest.

The IID approach, shown in Figure 13, is used when:

  • Rapid exploration and implementation of part of the system is desired,
  • The requirements are unclear from the beginning,
  • Funding is constrained, or
  • The customer wishes to hold the System-of-Interest open to the possibilities of inserting new technology at a later time.
  • Experimentation is required to develop successive prototype versions

(There are several examples of this form of IID)

Only the core of the Vee is shown for each iteration, but the full off-core opportunity and risk management and in-process validation actions need to be considered, as shown earlier in Figure 8, for each increment. The focus is on flexibility and on allowing selected events to be taken out of sequence when the risk is acceptable. Tailoring in this way highlights the core activities of product development. Properly planned each increment will build on the previous one.

Another possibility is that a new capability is urgently needed.

Note that the IID approach can work effectively in a high risk, rapid response mode for hardware as well as software projects.

The features that distinguish IID from the single-pass plan-driven approach are velocity and adaptability.

Incremental Development with Multiple Deliveries

Figure 13 - Incremental Development with multiple deliveries (Forsberg, Mooz, Cotterman. 2005, Pg 358)

Incremental development may also be “plan-driven” in nature when the requirements are known early in the life cycle but the development of the functionality is performed incrementally to allow for the latest technology insertion or potential changes in needs or requirements.

While incremental development provides substantial flexibility to the project team, it also imposes constraints. The model shown in Figure 14 uses the increments to develop high-risk subsystems (or components) early, but the system cannot function until all increments are complete.

For instance, in the early studies of the Space Shuttle system in the late 1960s, the main engines on the orbiter vehicle were identified as a high-risk subsystem.

Incremental Development with a Single Delivery (Forsberg, Mooz, Cotterman. 2005, Pg 358)

Figure 14 - Incremental Development with a Single Delivery (Forsberg, Mooz, Cotterman. 2005, Pg 358)

Overview of the Evolutionary Approach

A specific IID methodology called evolutionary development is common in research and development (R&D) environments. Figure 15 illustrates this approach. It was used in the evolution of the high temperature tiles for the NASA Space Shuttle (Forsberg 1995).


Evolutionary Generic Model (Forsberg, Mooz, Cotterman. 2005, Pg. 357)

Figure 15 - Evolutionary Generic Model (Forsberg, Mooz, Cotterman. 2005, Pg. 357)

The real world development environment is complex to map because many different project cycles are underway simultaneously. Figure 16 shows the applied research era for the development of the space shuttle orbiter. Figure 16 illustrates the multi-levels of simultaneous development, trade studies, and ultimately implementation.

It is noteworthy that the commercial project, Iridium (the mobile phone system based on a fleet of low-earth orbit satellites) had a highly successful technical development. The management of their technical environment involved eighteen different, parallel Vee models for the various parts of their system. Their business failure was caused by their inability to stay current with the evolving business case in the rapidly growing GSM mobile phone market.

Evolution of Components and Orbiter Subsystems

Figure 16 - Evolution of components and orbiter subsystems (including space shuttle tiles) during creation of a large “single-pass” project (Forsberg 1995)

Iterative Software Development Process Models

The life cycle processes of software engineering follow the pattern of systems engineering: analysis, design, construction, verification and validation, acceptance, installation, sustainment, and retirement. However, software is a flexible and malleable medium, which facilitates iterative analysis, design, construction, verification, and validation to a greater degree than is usually possible for the physical components of a system. Each iteration of an iterative development model adds code to the growing software base; the expanded code base is tested, reworked as necessary, and demonstrated to satisfy the requirements for that baseline.

Process models for software development support iterative development on cycles of various lengths. Table 4 lists three iterative software development models presented in the Life Cycle Models topic area and the aspects of software development that are emphasized by those models.

Primary Emphases of Three Iterative Software Development Models

Table 4 - Primary emphases of three iterative software development models

Iterative-development process models

Developing and modifying software involves creative processes that are subject to many external and changeable forces. Long experience has shown that it is impossible to “get it right” the first time, and that iterative development processes are preferable to linear, sequential development process models such as the well-known Waterfall model.

In iterative development, each cycle of the iteration subsumes the software of the previous iteration and adds new capabilities to the evolving product to produce a next, expanded version of the software. Iterative development processes provide the following advantages:

  • continuous integration, verification, and validation of the evolving product,
  • frequent demonstrations of progress,
  • early detection of defects,
  • early warning of process problems,
  • systematic incorporation of the inevitable rework that occurs in software development, and
  • early delivery of subset capabilities (if desired).

Iterative development takes many forms in software engineering, including these:

  • An Incremental-build process is used to produce periodic (typically weekly) builds of increasing product capabilities;
  • Agile development is used to closely involve a prototypical customer in an iterative process that may repeat on a daily basis;
  • The Spiral model is used to confront and mitigate risk factors encountered in developing the successive versions of a product.

This section focuses on the Incremental-build model.

The Incremental-build model

The Incremental-build model is a build-test-demonstrate model of iterative cycles in which frequent demonstrations of progress and verification & validation of work to date are emphasized. The Incremental-build model is based on stable requirements and a software architectural specification. Prioritized requirements are allocated to various elements of the software architecture, which is the basis for specifying a prioritized sequence of builds. Each build adds new capabilities to the incrementally growing product. The development process ends when Version N (the final version) is verified, validated, demonstrated, and accepted by the customer.

Table 5 lists some partitioning criteria for incremental development. Partitions are decomposed into incremental build units of, typically, one calendar-week each. One-week increments and the number of developers available to work on the project determine the number of features that can be included in each incremental build. This, in turn, determines the overall schedule.

Some Partitioning Criteria for Incremental Builds

Table 5 - Some partitioning criteria for incremental builds

Figure 17 illustrates the details of the build-verify-validate-demonstrate cycles in the Incremental-build process. Each “build” includes detailed design, coding, integration, and review and testing by the developers. In cases where code is to be reused without modification, some or all of an incremental build may consist of review, integration, and test of the base code augmented with the reused code.

Incremental Build-Verify-Validate-Demonstrate Cycles

Figure 17 - Incremental build-verify-validate-demonstrate cycles (Fairley 2009, Figure 2.11)

Development of an increment may result in rework of previously developed components to better accommodate the new components being integrated, or to fix defects in previously developed components exposed by addition of the new components, or to fix defects in the new components. In any case, frequent demonstrations of progress (or lack thereof) are a major benefit of an Incremental-build development process.

Incremental verification, validation, and demonstration, as illustrated in Figure 17 overcomes two of the major problems of a Waterfall approach: 1) problems are exposed early and can be corrected as they occur; 2) minor in-scope changes to requirements that occur as a result of incremental demonstrations can be incorporated in subsequent incremental builds.

Figure 17 also illustrates that it may be possible to overlap successive builds of the product. It may be possible, for example, to start detailed design of the next version while the present version is being validated. Three factors determine the degree of overlap that can be achieved:

  1. availability of sufficient personnel to concurrently pursue multiple activities,
  2. adequate progress on the previous version to provide needed capabilities for the next version, and
  3. the risk of significant rework that must be accomplished on the next overlapped build because of changes to the previous in-progress build.

The Incremental-build process works well when each team consists of 2 to 5 developers plus a team leader (who is also a technical contributor).

The Incremental-build model can be scaled up for large projects by partitioning the architecture into well-defined subsystems and allocating requirements and interfaces to each subsystem. The subsystems can be independently tested and demonstrated, perhaps using stubs and drivers for the subsystem interfaces, or perhaps using early, incremental versions of other evolving subsystems. System integration can proceed incrementally as intermediate versions of the various subsystems become operational.

A significant advantage of an Incremental-build process is that features built first are verified, validated, and demonstrated most frequently because subsequent builds incorporate the features of the earlier builds. In building the software to control a nuclear reactor, for example, the emergency shutdown software could be built first. Operation of emergency shutdown (scramming) would then be verified and validated in conjunction with the features of each successive build.

In summary, the Incremental-build model, like all iterative models, provides the advantages of continuous integration and validation of the evolving product, frequent demonstrations of progress, early warning of problems, early delivery of subset capabilities, and systematic incorporation of the inevitable rework that occurs in software development.

The role of prototyping in software development

In software engineering, a prototype is a mock-up of the desired functionality of some part of the system. This is in contrast to physical systems, where a prototype is usually a first full functionality version of a system. (Fairley 2009, p 74)


In the past, incorporating prototype software into production systems has created many problems. Prototyping is a useful technique that should be employed whenever appropriate; however, prototyping is not a process model for software development. When building a software prototype, we keep the knowledge we have gained but we do not use the code in the deliverable version of the system

In many cases it is more efficient and more effective to build the production code “from scratch” using the knowledge gained by prototyping than to re-engineer the prototype code.

Life cycle sustainment of software

Software, like all systems, requires sustainment efforts to enhance capabilities, to adapt to new environments, and to correct defects. The primary distinction for software is that sustainment efforts change the software; unlike physical entities, software components do not have to be replaced because of physical wear and tear. Changing the software requires re-verification and re-validation, which may involve extensive regression testing to determine that the change has the desired effect and that the change has not altered other aspects of functionality or behavior.

Retirement of software

Useful software is seldom retired. Software that is useful often experiences many upgrades during its lifetime so that a later upgrade may bear little similarity to the initial version. In some cases, software that ran in a former operational environment is executed on hardware emulators that provide a virtual machine on newer hardware. In other cases, a major enhancement may replace, and rename, an older version of the software, but the enhanced version provides all of the capabilities of the previous software in a compatible manner. Sometimes, however, a newer version of software may fail to provide compatibility with the older version, which necessitates other changes to a system.

Primarily Evolutionary and Concurrent Processes: The Incremental Commitment Spiral Model (ICSM)

Overview of the Incremental Commitment Spiral Model

A view of the Incremental Commitment Spiral Model is shown in Figure 18.

The Incremental Commitment Spiral Model (Pew and Mavor 2007, Figure 2-5)

Figure 18 - The Incremental Commitment Spiral Model (Pew and Mavor 2007, Figure 2-5)

Each spiral will be concurrently rather than sequentially addressing requirements and solutions; products and processes; hardware, software and human factors aspects; and business case analysis of alternative product configurations or product line investments.

The stakeholders consider the risks and risk mitigation plans, and decide on a course of action. If the risks are acceptable and will covered by risk mitigation plans, the project would proceed into the next spiral.

The Development spirals after the first Development Commitment Review follow the three-team incremental development approach for achieving both agility and assurance shown in Figure 2 and discussed in System Life Cycle Process Drivers and Choices.

Other Views of the Incremental Commitment Spiral Model (ICSM)

Figure 19 presents an updated view of the ICSM life cycle process recommended in the National Research Council “Human-System Integration in the System Development Process” study (Pew and Mavor 2007). It was called the Incremental Commitment Model (ICM) in the study.

The ICSM builds on the strengths of current process models: early verification and validation concepts in the V-model, concurrency concepts in the Concurrent Engineering model, lighter-weight concepts in the Agile and Lean models, risk-driven concepts in the spiral model, the phases and anchor points in the Rational Unified Process (RUP) (Kruchten 1999; Boehm 1996), and recent extensions of the spiral model to address SoS capability acquisition (Boehm and Lane 2007).


Phased View of the Generic Incremental Commitment Spiral Model Process (Pew and Mavor 2007 Fig 2-1)

Figure 19 - Phased View of the Generic Incremental Commitment Spiral Model Process (Pew and Mavor 2007 Fig 2-1)

The top row of Activities in Figure 19 indicates that a number of system aspects are being concurrently engineered at an increasing level of understanding, definition, and development. The most significant of these aspects are shown in Figure 20, an extension of a similar “hump diagram” view of concurrently engineered software activities developed as part of the RUP [Kruchten 1999].

ICSM Activity Categories and Level of Effort (Pew and Mavor 2007 Fig 2-3)

Figure 20 - ICSM Activity Categories and Level of Effort (Pew and Mavor 2007 Fig 2-3)

As with the RUP version, the magnitude and shape of the levels of effort will be risk-driven and likely to vary from project to project.

Figure 20 indicates that a great deal of concurrent activity occurs within and across the various ICM phases, all of which needs to be synchronized and stabilized (a best-practice term taken from Microsoft Secrets (Cusumano and Selby 1996) to keep the project under control.

The review processes and use of independent experts are based on the highly successful AT&T Architecture Review Board procedures described in (Maranzano et al. 2005). Figure 21 shows the content of the Feasibility Evidence Description. Showing feasibility of the concurrently-developed elements helps synchronize and stabilize the concurrent activities.

Feasibility Evidence Description ContentFeasibility Evidence Description Content (Pew and Mavor 2007 Box 2-2)

Figure 21 - Feasibility Evidence Description Content (Pew and Mavor 2007 Box 2-2)

The Operations Commitment Review (OCR) is different, in that it addresses the often much higher operational risks of fielding an inadequate system. In general, stakeholders will experience a factor of two-to-ten increase in commitment level in going through the sequence of ECR to DCR milestones, but the increase in going from DCR to OCR can be much higher. These commitment levels are based on typical cost profiles across the various stages of the acquisition life cycle.

Underlying ICSM Principles

ICSM has four underlying principles. If a project just follows the diagrams without following the principles (as often happened with the original spiral model), the project will have a serious risk of failure. The four principles are:

  1. Stakeholder value-based system definition and evolution. If a project fails to include success-critical stakeholders such as end-users, maintainers, or suppliers, these stakeholders will frequently feel little commitment to the project and will either underperform or refuse to use the results.
  2. Incremental commitment and accountability. If success-critical stakeholders are not accountable for their commitments, they are likely to be drawn away to other pursuits when they are most needed.
  3. Concurrent system and software definition and development. If definition and development of requirements and solutions; hardware, software, and human factors; or product and process definition are done sequentially, the project is likely both to go more slowly, and to make early, hard-to-undo commitments that cut off the best options for project success.
  4. Evidence and risk-based decisionmaking. If key decisions are made based on assertions, vendor literature, or meeting an arbitrary schedule without access to evidence of feasibility, the project is building up uncertainties and risks. And in the words of Tom Gilb, “If you do not actively attack the risks, the risks will actively attack you.”

Model Experience to Date

During the National Research Council Human-Systems Integration study, it was found that the ICSM processes and principles corresponded well with best commercial practices. Examples are found in (Pew and Mavor 2007, Chapter 5)and(Royce 1998, Appendix D).

A further source of successful projects that have applied the ICSM principles is the annual series of Top-5 software-intensive systems projects published in CrossTalk (CrossTalk 2002-2005).

Primarily Interpersonal and Unconstrained Processes: Scrum and Agile

Figure 22 shows an example of Scrum as an agile process flow. (Note: according to Wikipedia, the term “Scrum” is taken from the game of rugby, where one cross-functional team “tries to go the distance as a unit, passing the ball back and forth.”) As with most other agile methods, Scrum uses the Evolutionary Sequential process shown in Table 1 and described in Fixed-Requirements and Evolutionary Development Processes, in which systems capabilities are developed in short periods, usually around 30 days. The project then re-prioritizes its backlog of desired features and determines how many features the team (usually 10 people or less) can develop in the next 30 days. Clearly, this approach will not work for a product with an irreducible set of initial features that take longer than 30 days to develop: usually the hardware portion, but often also the initial set of core software capabilities needed for the system to operate. But it has often worked for incrementally developing the value-adding software features that use the core capabilities.

As shown in Figure 22, once the features to be developed for the current Scrum have been expanded (usually in the form of informal stories) and allocated to the team members, the team establishes a daily rhythm of starting with a short meeting at which each team member does about a one-minute summary of progress since the last Scrum meeting, potential obstacles, and plans for the upcoming day. Any problems or concerns are discussed, and either resolved or established as action items for the concerned team members. Sometimes a problem is serious enough that it requires some team members to take a few days finding a solution. If so, the team and the customer will use the feature priorities to determine which features to drop in order to stay on the 30-day schedule.

These are essentially all of the practices required by Scrum. The team can decide to use other agile methods, such as pair development (one person developing, the other surfacing concerns), test-driven continuous integration (test cases developed early in place of requirements, and re-run each time new features are checked in), and continuous customer collocation. These serve not only to quickly discover defects or misunderstandings, but also to build up shared tacit interpersonal knowledge about the system being developed, so that the team can get along with a minimum of documentation. This informality means that defects will get delivered, but the 30-day cycle time means that they will generally get fixed in the next 30-day sprint. This is acceptable for many applications, but a serious risk for safety-critical or security-critical systems.

Example Agile process flow: Scrum (Boehm and Turner 2004; ControlChaos.com)

Figure 22 - Example Agile process flow: Scrum (Boehm and Turner 2004; ControlChaos.com)

Architected Agile Methods

Over the last decade, several organizations have been able to scale up agile methods by using two layers of 10-person Scrum teams. This involves, among other things, having each Scrum team’s daily meeting followed up by a daily meeting of the Scrum team leaders, and by up-front investments in an evolving system architecture. We have analyzed several of these projects and organizational initiatives in (Boehm et al. 2010); a successful example and a partial counterexample are provided next.

The successful example is provided by a US medical services company with over 1000 software developers in the US, two European countries, and India. The corporation was on the brink of failure, due largely to its slow, error-prone, and incompatible software applications and processes. A senior internal technical manager, expert in both safety-critical medical applications and agile development, was commissioned by top management to organize a corporate-wide team to transform the company’s software development approach. In particular, the team was to address agility, safety, and Federally-mandated governance and accountability practices.

Software technology and project management leaders from all of its major sites were brought together to architect a corporate information framework and develop a corporate architected-agile process approach. The resulting Scrum of Scrums approach was successfully used in a collocated pilot project to create the new information framework while maintaining continuity of service in their existing operations.

Based on the success of this pilot project, the team members returned to their sites and led similar transformational efforts. Within three years, they had almost 100 Scrum teams and 1000 software developers using compatible and coordinated architected-agile approaches. The effort involved their customers and marketers in the effort. Expectations were managed via the pilot project. The release management approach included a 2-12 week architecting Sprint Zero, a series of 3-10 one-month development Sprints, a Release Sprint, and 1-6 months of beta testing; the next release Sprint Zero overlapped the Release Sprint and beta testing. Their agile Scrum approach involved a tailored mix of eXtreme Programming (XP) and corporate practices, 6-12 person teams with dedicated team rooms, and global teams with wiki and daily virtual meeting support—working as if located next-door. Figure 23 shows this example of the Architected Agile approach.

Example of Architected Agile Process Dingsoyr, et. al. 2010. Fig 9.6

Figure 23 - Example of Architected Agile Process (Dingsoyr, et. al. 2010. Fig 9.6)

Two of the other success stories had similar approaches. However, circumstances may require different tailorings of the architected agile approach. Another variant analyzed was an automated maintenance system that found its Scrum teams aligned with different stakeholders whose objectives diverged in ways that could not be reconciled by daily standup meetings. The project recognized this and has evolved to a more decentralized Scrum-based approach, with centrifugal tendencies monitored and resolved by an empowered Product Framework Group (PFG) consisting of the product owners and technical leads from each development team, and the project systems engineering, architecting, construction, and test leads.

The PFG meets near the end of an iteration to assess progress and problems, and to steer the priorities of the upcoming iteration by writing new backlog items and reprioritizing the product backlog. A few days after the start of the next iteration, the PFG meets again to assess what was planned vs. what was needed, and to make necessary adjustments. This has been working much more successfully. It is an example of a blend of the pure Evolutionary Sequential and the Evolutionary Concurrent process models for evolutionary development presented in Incremental and Evolutionary Development using the Vee Model above.

Agile Practices and Principles

Here are summaries of the general practices and principles shared by most agile methods. As seen with the Scrum and Architected Agile methods, generally-shared does not mean uniformly followed.

Iterative Development - any organization can improve its velocity to customer satisfaction.

  1. The project team understands, respects, works, and behaves within a defined SE process. The process is systemic in the organization and implicit to the participants.
  2. The project is executed as fast as possible with minimum down time or staff diversion during the project. Every opportunity is exercised to move the project forward, especially for the critical path activities.
  3. All key players are physically or electronically collocated. Other contributors are available on-line 24x7.
  4. There is a strong bias for automatically generated electronic documentation. Engineers rely on their tools and their “Electronic Engineering Notebooks” to record decision rationale. Artifacts for operations and replication are done only if necessary—not to support an existing bureaucracy or policy. Notebooks are team property and are available to all.
  5. Baseline management and change control is achieved by formal, oral agreement based on “make a promise, keep a promise” discipline—participants hold each other accountable. Decision gate agreements are confirmed with a binding handshake. Formality relates to the binding of the action not the amount of documentation.
  6. Opportunity exploration and risk reduction are accomplished by expert consultation and rapid model verification, coupled with close customer collaboration. Software development is done in a rapid development environment, while hardware is developed in a multi-disciplined model shop. There is no resistance or inertia to securing expert help; it is sought rather than resisted.
  7. A culture of constructive confrontation pervades the project organization. Issues are actively sought. Anyone can identify an issue and pass it on to the most likely solver. No issue is left unresolved. The team takes ownership for success; it is never “someone else’s responsibility.”

Agile Development principles (adapted for SE) are as follows (see “Principles behind the Agile Manifesto” 2009):

  1. The highest priority is to satisfy the customer through early and continuous delivery of valuable software [and other system elements].
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  3. Deliver working software [and other system elements] frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. Working software [and other system elements] is the primary measure of progress.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity—the art of maximizing the amount of work not done—is essential.
  11. The best architectures, requirements, and designs emerge from self-organizing teams.

At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Concluding Remarks

The system engineer is responsible for ensuring that the technical solution is consistent with the cost, schedule, and value goals of the project. The generic lifecycle for a project divides the effort into a series of stages, and within those stages the project management team uses phases to control the project evolution. While there are a number of different models describing the project environment, the Spiral model and the Vee model have become the dominant approaches to visualize the development process. Both the Vee and the Spiral are useful models that emphasize different aspects of the process.

The majority of projects will use Incremental and Iterative Development (IID). Evolutionary development is particularly appropriate to new products coming from research whether in the commercial or government environment.

References

Please make sure all references are listed alphabetically and are formatted according to the Chicago Manual of Style (15th ed). See the BKCASE Reference Guidance for additional information.

Citations

Aerospace and Defense Indistries of Europe (ASD). 2009. ASD-STAN, Products and Services S3000L. www.asd-stan.org

Boehm, B., May 1988. “A Spiral Model of Software Development,” Computer, pp. 61-72.

Boehm, B., 2006. “Some Future Trends and Implications for Systems and Software Engineering Processes”, Systems Engineering 9(1), pp. 1-19.

Boehm, B., A. Egyed, J. Kwan, D. Port, A. Shah, and R. Madachy, July 1998. “Using the WinWin Spiral Model: A Case Study,” IEEE Computer, pp. 33-44.

Boehm, B., and J. Lane, October 2007. “Using the Incremental Commitment Model to Integrate System Acquisition, Systems Engineering, and Software Engineering,” CrossTalk, pp. 4-9.

Boehm, B., and R. Turner. 2004. Balancing Agility and Discipline, Addison-Wesley.

Boehm, B., J. Lane, S. Koolmanjwong, and R, Turner. 2012 (planned publication date). Embracing the Spiral Model: Creating Successful Systems with the Incremental Commitment Spiral Model. Addison Wesley

CrossTalk, January 2002, July 2003, July 2004, September 2005. “Top Five Quality Software Projects,” www.stsc.hill.af.mil/crosstalk

Crosson, S., and B. Boehm, April 2009. “Adjusting Software Life cycle Anchorpoints: Lessons Learned in a System of Systems Context,” Proceedings, SSTC 2009.

Cusumano, M. and R. Selby, 1996. Microsoft Secrets. Harper Collins.

Dingsoyr, T., T. Dyba. and N. Moe (eds.). 2010 "Agile Software Development: Current Research and Future Directions”; Chapter in the book by Boehm, J. Lane, S. Koolmanjwong, and R, Turner, "Architected Agile Solutions for Software-Reliant Systems," Springer.

Fairley, R. 2009. Managing and Leading Software Projects. J. Wiley & Sons.

Faisandier, A. 2011.Engineering and Architecting Multidisciplinary Systems (to be published)..

Forsberg, K., H. Mooz, H. Cotterman. 2005. Visualizing Project Management. 3rd Ed., J. Wiley & Sons.

Forsberg, K. 1995. “’If I Could Do That, Then I Could…’ System Engineering in a Research and Development Environment,” Proceedings of Fifth NCOSE Summer Symposium.

Forsberg, K. 2010. “Projects Don’t Begin With Requirements.” IEEE Systems Conf. San Diego, CA. April.

INCOSE. 2011. Systems Engineering Handbook, version 3.2.1. INCOSE-TP-2003-002-03.2.1.

ISO/IEC 15288:2008. Systems and software engineering – System life cycle processes.

ISO/IEC 19760:2003. A guide for application of ISO/IEC 15288 System Life Cycle Processes.

ISO/IEC 24748-1:2010. Systems and software engineering, Part 1: Guide for life cycle management

Kruchten, P., 1999. The Rational Unified Process. Addison Wesley.

Landis, T. R. 2010. Lockheed Blackbird Family (A-12, YF-12, D-21/M-21 & SR-71). Specialty Press.

Lawson, Harold. 2010. A Journey Through the Systems Landscape, College Publications, Kings College, UK.

Maranzano, J., et al., March/April 2005, “Architecture reviews: Practice and experience,” IEEE Software, pp. 34-43.

National Research Council of the National Academies (USA). 2008. Pre-Milestone A and Early-Phase Systems Engineering, Washington, D.C.: The National Academies Press. http://www.nap.edu

Pew, R., and A. Mavor (eds.) 2007. Human-System Integration in the System Development Process: A New Look, The National Academies Press. http://www.nap.edu

“Principles behind the Agile Manifesto,” 15 Dec 2009, http://www.agilemanifesto.org/principles.html

Rechtin, E. 1991. System Architecting.: Creating and Building Complex Systems. Prentice-Hall.

Royce, W. E. 1998. Software Project Management. Addison Wesley.

Washington Post, February 11, 2009, “NASA’s Ambitious New Mars Rover Is Too Costly, Critics Say.”

Wikipedia, 15 Aug 2011. http://en.wikipedia.org/wiki/James_Webb_Space_Telescope.

Primary References

Boehm, B., J. Lane, S. Koolmanojwong, and R, Turner. 2012 (planned publication date). Embracing the Spiral Model: Creating Successful Systems with the Incremental Commitment Spiral Model. Addison Wesley.

Boehm, B., and R. Turner. 2004. Balancing Agility and Discipline, Addison-Wesley.

Fairley, R. 2009. Managing and Leading Software Projects. J. Wiley & Sons.

Forsberg, K., H. Mooz, H. Cotterman. 2005.Visualizing Project Management. 3rd Ed., J. Wiley & Sons.

Faisandier, A. 2011. Engineering and Architecting Multidisciplinary Systems (to be published).

INCOSE. 2011. Systems Engineering Handbook, version 3.2.1. INCOSE-TP-2003-002-03.2.1.

Lawson, Harold. 2010. A Journey Through the Systems Landscape. College Publications, Kings College, UK.

Pew, R., and A. Mavor (eds.) 2007. Human-System Integration in the System Development Process: A New Look. The National Academies Press. http://www.nap.edu

Additional References

Anderson, D., 2010. Kanban, Blue Hole Press.

Baldwin, C., and K. Clark, 2000. Design Rules: The Power of Modularity, MIT Press.

Beck, K., 1999. Extreme Programming Explained, Addison Wesley.

Biffl, S., A. Aurum, B. Boehm, H. Erdogmus, P. Gruenbacher (eds.), 2005. Value-Based Software Engineering, Springer.

Boehm, B., May 1988. “A Spiral Model of Software Development,” Computer, pp. 61-72.

Boehm, B., 2006. “Some Future Trends and Implications for Systems and Software Engineering Processes”, Systems Engineering 9(1), pp. 1-19.

Boehm, B., A. Egyed, J. Kwan, D. Port, A. Shah, and R. Madachy, July 1998. “Using the WinWin Spiral Model: A Case Study,” IEEE Computer, pp. 33-44.

Boehm, B., and J. Lane, October 2007. “Using the Incremental Commitment Model to Integrate System Acquisition, Systems Engineering, and Software Engineering,” CrossTalk, pp. 4-9.

Checkland, P., 1981. Systems Thinking, Systems Practice, Wiley.

CrossTalk, January 2002, July 2003, July 2004, September 2005. “Top Five Quality Software Projects,” www.stsc.hill.af.mil/crosstalk

Crosson, S., and B. Boehm, April 2009. “Adjusting Software Life cycle Anchorpoints: Lessons Learned in a System of Systems Context,” Proceedings, SSTC 2009.

Cusumano, M. and R. Selby, 1996. Microsoft Secrets. Harper Collins.

Dingsoyr, T., T. Dyba. and N. Moe (eds.). 2010 "Agile Software Development: Current Research and Future Directions”; Chapter in the book by Boehm, J. Lane, S. Koolmanjwong, and R, Turner, "Architected Agile Solutions for Software-Reliant Systems," Springer.

Dorner, D., 1996. The Logic of Failure, Basic Books.

Forsberg, K. 1995. “’If I Could Do That, Then I Could…’ System Engineering in a Research and Development Environment,” Proceedings of Fifth NCOSE Summer Symposium.

Forsberg, K. 2010. “Projects Don’t Begin With Requirements.” IEEE Systems Conf. San Diego, CA. April.

Gilb, T., 2005. Competitive Engineering, Elsevier Butterworth Heinemann.

Goldratt, E., 1984. The Goal, North River Press.

Hitchins, D., 2007. Systems Engineering: A 21st Century Systems Methodology, Wiley.

Holland, J., 1998. Emergence, Perseus Books.

ISO/IEC 15288:2008. Systems and software engineering – System life cycle processes.

ISO/IEC 19760:2003. A guide for application of ISO/IEC 15288 System Life Cycle Processes.

ISO/IEC 24748-1:2010. Systems and software engineering, Part 1: Guide for life cycle management

Kruchten, P., 1999. The Rational Unified Process. Addison Wesley.

Landis, T. R. 2010. Lockheed Blackbird Family (A-12, YF-12, D-21/M-21 & SR-71). Specialty Press.

Madachy, R., 2008. Software Process Dynamics, Wiley.

Maranzano, J., et al., March/April 2005, “Architecture reviews: Practice and experience,” IEEE Software, pp. 34-43.

National Research Council of the National Academies (USA). 2008. Pre-Milestone A and Early-Phase Systems Engineering, Washington, D.C.: The National Academies Press. http://www.nap.edu

Osterweil, L. 1987. “Software Processes are Software Too,” Proceedings, ICSE 9.

Poppendeick, M. and T., 2003. Lean Software Development: an Agile Toolkit, Addison Wesley.

“Principles behind the Agile Manifesto,” 15 Dec 2009, http://www.agilemanifesto.org/principles.html

Rechtin, E. 1991. System Architecting.: Creating and Building Complex Systems. Prentice-Hall.

Rechtin, E., and M. Maier, 1997. The Art of System Architecting.

Royce, W. E. 1998. Software Project Management. Addison Wesley.

Schwaber, K. and M. Beedle, 2002. Agile Software Development with Scrum, Prentice Hall.

Warfield, J., 1976. Societal Systems: Planning, Policy, and Complexity, Wiley.

Womack, J., and D. Jones, 1996. Lean Thinking, Simon and Schuster.



Article Discussion

[Go to discussion page]

<- Previous Article | Parent Article | Next Article ->

Signatures