Software Lifespan Models

Michael L. Collard, Ph.D.

Department of Computer Science, The University of Akron

Credits

Slides adapted from the slides for the book “Software Engineering: The Current Practice” by Václav Rajlich © 2012 by Václav Rajlich

Scenarios: First Day of New Job

  • Brand new company, brand new software
  • Existing software being replaced by brand new software
  • Existing software requires new features
  • Existing software has bugs

Waterfall and Lifespan

Lifecycle vs. Lifespan

  • lifecyle
    • common terminology
    • Misleading: There really isn't much of a cycle shown
  • lifespan
    • better terminology
    • less commonly used

Software Lifespan Models

  • Stages that software goes through from conception to death
  • Software in different stages is very different to work on, and has to be managed differently
  • Software is a product, therefore stages are similar to the stages in the lifespan of other products

Software Lifespan & Product Stages

  • Software as a product: sales follows a curve through the lifespan
  • Proprietary software: value follows the same curve
  • Names of stages are different from typical products

Staged Model

Source

Stage 1: Initial Development

  • Similar to Waterfall, but of limited duration
    • Requirements
    • Design
    • Implementation
  • Fundamental decisions:
    • technologies - programming language, coding conventions, libraries, APIs, …
    • architecture - components, interactions, web based, RESTful cloud service, desktop application
    • program domain knowledge - will be needed for evolution

Stage 2: Evolution

  • Adapt the application to the ever-changing user and operating environment
  • Add new features
  • Correct mistakes and misunderstandings
  • Respond to knowledge gained (learning) of developers and users
  • Program typically grows in size and functionality
  • Evolution is possible due to software architecture and knowledge of the software team

Symptom: Code Decay

  • Loss of software coherence
  • Loss of software knowledge
    • less coherent software requires more extensive knowledge
    • if knowledge is lost, changes lead to faster deterioration
  • Loss of key personnel → loss of knowledge
  • Challenge: eliminate or slow code decay

Stage 3: Servicing

  • Program is no longer evolved - it decays, stabilizes, or management decision not to support evolution
  • Changes are limited to patches and wrappers - low cost, but cause further deterioration
  • Very different process from Evolution
    • No need for senior engineers
    • Process is stable, and can be easily measured and managed

Possible Solution: Reengineering

  • Reversal from servicing stage to evolution stage
  • Very expensive, and rare
  • Not simply a technical problem, the knowledge of the software team must also be addressed

Stage 4: Phaseout

  • No more servicing
  • System may still be in production
  • Users must work around deficiencies

Stage 5: Close Down

  • Software is disconnected from users
    • Current life of successful software: 10 - 20 years (?)
  • Users are directed to a replacement
  • “Exit Strategy” is needed
    • Changing to another system requires training
    • What to do with all the data?

Software Lifespan

  1. Initial Development
  2. Evolution
  3. Servicing
  4. Phaseout
  5. Close Down

Perspectives

  • Time
  • Money
  • Careers

Incomplete Lifespans

  • Discontinued projects - stopped during initial development
  • Stable domain - no need for evolution
  • Development starts with evolution - related old software is evolved into new software

Versioned Staged Model

Source