Reaves.dev

v0.1.0

built using

Phoenix v1.7.12

Life Cycle Models

Stephen M. Reaves

::

2023-08-28

Notes about Lesson 2 of CS-6300

Summary

Software Lifecycle

Software lifecycle := a sequence of decisions that determine the history of your software

The process model basically answers the questions, “What should I do next?” and, “How long should I do it for?”

There are many ways you can make these decisions, so its best to understand which models are good for which situations

Traditional Software Phases

  1. Requirements Engineering
  2. Design
  3. Implementation
  4. Verification and Validation
  5. Maintenance

Requirements Engineering

The cost of correcting an error is based on the subsequent decisions that are based on it.

Requirements Engineering := the process of establishing the needs of stakeholders that are to be solved by software.

Design

Software requirements are analyzed in order to produce a description of the internal structure and organization of the system.

Series of “Design Activities”

  1. Architectural design
  2. Abstract specification
  3. Interface design
  4. Component design
  5. Data structure
  6. Algorithm design

Build “Design Products”

  1. System structure
  2. Software specification
  3. Interface specification
  4. Component specification
  5. Data structure specification
  6. Algorithm specification

Implementation

Create actual software based on design specifications.

There are four principles that can affect how software is created

  1. Reduction of Complexity
  2. Anticipation of Diversity
  3. Structuring for Validation
  4. Conformity to Standards

Verification and Validation

Checks that software meets spec and fulfills its intended purpose

Validation := answering the question, “Did we build the right system?”

Verification := answering the question, “Did we build the system right?”

Maintenance

Deploying system, handling environment changes, updating libraries, RFEs, bug reports

  1. Corrective maintenance
  2. Perfective maintenance
  3. Adaptive maintenance

Regression testing := testing the software after it has been modified to ensure the changes perform as expected

Software Process Model

How do we put the above activities together to make software?

Software Process/Lifecycle models determine the order of activities and determine transition criteria

Waterfall

Sequential ordering of processes

  1. Software concepts
  2. Requirements analysis
  3. Architectural design
  4. Detailed design
  5. Coding and debugging
  6. System testing

At the end of each phase, there is a review to determine if the system is ready to advance to the next phase

The waterfall process performs well for software that has a stable product definition

ProsCons
Find errors earlyInflexibility

Spiral

Created by Barry Boehm

Famous picture of spiral model

Incremental risk oriented model

Main phases:

  1. Determine objectives
  2. Identify and resolve risks
  3. Dev & Test
  4. Plan the next iteration
ProsCons
Risk reductionInflexibility
Functionality can be addedRisk analysis requires specific expertise
Software is produced earlyHighly dependent on risk analysis
Complex

Evolutionary Prototyping

Four main phases

  1. Initial Concept
  2. Design and Implement initial prototype
  3. Refine prototype until acceptable
  4. Complete and Release prototype

Continual refinement

Start with working on what you understand

ProsCons
Immediate feedbackDifficult to plan
Can be an excuse to use a “code then fix” approach

Rational Unified Process

Based on UML

Iteration on four phases

  1. Inception
  2. Elaboration
  3. Construction
  4. Transition

rup

Agile

A group of highly iterative methods, like Test Driven Development (TDD)

TDD has three phases

  1. Red
  2. Green
  3. Refactor