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 product stages
Staged Model
Stage 1: Initial Development
Software Lifespan
1. Initial Development
2. Evolution
3. Servicing
4. Phaseout
5. Close Down
- 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
Software Lifespan
1. Initial Development
2. Evolution
3. Servicing
4. Phaseout
5. Close Down
- Adapt the application to the ever-changing user and operating environment
- Add new features
- Correct mistakes and misunderstandings
- Respond to knowledge gained (learning) by 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
Software Lifespan
1. Initial Development
2. Evolution
3. Servicing
4. Phaseout
5. Close Down
- 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 the 3. Servicing Stage to the 2. Evolution Stage
- Very expensive and rare
- Not simply a technical problem, as it must also address the historical knowledge of the software team
Stage 4: Phaseout
Software Lifespan
1. Initial Development
2. Evolution
3. Servicing
4. Phaseout
5. Close Down
- No more servicing
- System may still be in production
- Users must work around deficiencies
Stage 5: Close Down
Software Lifespan
1. Initial Development
2. Evolution
3. Servicing
4. Phaseout
5. Close Down
- Software is disconnected from users
- 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
- Initial Development
- Evolution
- Servicing
- Phaseout
- Close Down