Software Lifespan Model

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 replaced by brand-new software
  • Existing software requires new features
  • Existing software has bugs

Waterfall and Lifecycle

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 requires different types of management
  • 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 follow a curve through the lifespan
  • Proprietary software: value follows the same curve
  • Names of stages are different from typical products

Staged Model

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 no longer evolves - 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 is easily measured and managed

Possible Solution: Reengineering

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

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