Chapter 9 – Software Evolution
Chapter 9 Software evolution 1
Topics covered
Evolution processes
Change processes for software systems
Program evolution dynamics
Understanding software evolution
Software maintenance
Making changes to operational software systems
Legacy system management
Making decisions about software change
Chapter 9 Software evolution 2
Software change
Chapter 9 Software evolution 3
Importance of evolution
Chapter 9 Software evolution 4
Evolution processes
Chapter 9 Software evolution 5
Change identification and evolution processes
Chapter 9 Software evolution 6
The software evolution process
Chapter 9 Software evolution 7
Change implementation
Chapter 9 Software evolution 8
Change implementation
Iteration of the development process where the revisions
to the system are designed, implemented and tested.
A critical difference is that the first stage of change
implementation may involve program understanding,
especially if the original system developers are not
responsible for the change implementation.
During the program understanding phase, you have to
understand how the program is structured, how it
delivers functionality and how the proposed change
might affect the program.
Chapter 9 Software evolution 9
Urgent change requests
Chapter 9 Software evolution 10
The emergency repair process
Chapter 9 Software evolution 11
Program evolution dynamics
Chapter 9 Software evolution 12
Change is inevitable
Chapter 9 Software evolution 13
Key points
Software development and evolution can be thought of
as an integrated, iterative process that can be
represented using a spiral model.
For custom systems, the costs of software maintenance
usually exceed the software development costs.
The process of software evolution is driven by requests
for changes and includes change impact analysis,
release planning and change implementation.
Lehman’s laws, such as the notion that change is
continuous, describe a number of insights derived from
long-term studies of system evolution.
Chapter 9 Software evolution 14
Tools of Software Development
2 types of tools used by software
engineers:
1. Analytical tools
– Stepwise refinement
– Cost-benefit analysis
– Software metrics
2. CASE tools
CASE (Computer-Aided Software Engineering)
Tools
Software that is used to support software
process activities
Provides software process support by
automating some process activities
providing information about the software being
developed
Currently used in every phase/workflow of
life cycle
CASE Tools
Benefits
Improve software quality
• Enforce discipline
• Help communication between development team
members
• Information is illustrated through diagrams that are
typically easier to understand
• Development information is centralized
CASE Tools
Benefits
Reduction of time and effort
• Tasks are much faster to complete and alter
• Enhance reuse of models or models’ components
• Can reduce maintenance costs
CASE Tools
Problems
Limitations in flexibility of documentation
Major danger: completeness and syntactic
correctness does NOT mean compliance with
requirements
Costs associated with the use of the tool
• Purchase price
• Training
3 Categories of CASE Tools
Tools
Workbenches
Environments
3 Categories of CASE Tools
Tools
Support individual process tasks
Examples:
• Checking the consistency of a design
• Compiling a program
• Comparing test results
CASE Tools
Upper-CASE tools (front-end tools)
Assist developer during requirements,
analysis, and design workflows or activities
Lower-CASE tools (back-end tools)
Assist with implementation, testing, and
maintenance workflows or activities
Integrated CASE tools (I-CASE)
provide support for the full life cycle
• REVIEW THE UNIFIED PROCESS to SEE WHERE EACH OF THESE TOOLS ARE USED
3 Categories of CASE Tools
Workbenches
Collection of tools that together support:
• Process workflows (requirements, design, etc.)
• One or two activities where an activity is a related
collection of tasks
Commercial examples:
• PowerBuilder
• Software Through Pictures
• Software Architect
3 Categories of CASE Tools
Environments
Support the complete software process or, at
least, a large portion of the software process
Normally include several different workbenches
which are integrated in some way
Taxonomy of CASE Tools
Components of CASE
Design Analysis
Generator tool
Drawing Code
Tool Generator
Document CASE Database
Generator repository Generator
Error-checking Prototyping
tool Tool
Screen and
Security and
Report Generator
Version Control
Components of CASE
CASE repository
Central component of any CASE tool
Also known as the information repository or
data dictionary
Components of CASE
CASE repository
Centralized database
Allows easy sharing of information between
tools and SDLC activities
Used to store graphical diagrams and prototype
forms and reports during analysis and design
workflows
Provides wealth of information to project
manager and allows control over project
Facilitates reusability
Components of CASE
CASE repository acts as:
Information repository
• Combines information about organization’s business
information and application portfolio
• Provides automated tools to manage and control
access
Data dictionary
• Used to manage and control access to information
repository
• Facilities for recording, storing and processing
resources
• Useful for cross-referencing
Components of CASE
Components of CASE
Components of CASE
Analysis tools
Generate reports that help identify possible
inconsistencies, redundancies and omissions
Generally focus on
• diagram completeness and consistency
• data structures and usage
Components of CASE
CASE documentation generator tools
Create standard reports based on contents of repository
Need textual descriptions of needs, solutions, trade-offs,
diagrams of data and processes, prototype forms and reports,
program specifications and user documentation
High-quality documentation leads to 80% reduction in system
maintenance effort in comparison to average quality
documentation
CASE workbenches
An analysis and design workbench
Structured Repor t
Data
diag ramming gener ation
dictionary
tools facilities
Centr al Query
Code
infor mation language
gener ator
repository facilities
Forms Design, analysis
Import/e xport
creation and checking
facilities
tools tools
Analysis workbench components
Computer-aided software
engineering
Case technology
CASE classification
Functional tool classification
Tool type Examples
Planning tools PERT tools, estimation tools, spreadsheets
Editing tools Text editors, diagram editors, word processors
Change management tools Requirements traceability tools, change control systems
Configuration management tools Version management systems, system building tools
Prototyping tools Very high-level languages, user interface generators
Method-support tools Design editors, data dictionaries, code generators
Language-processing tools Compilers, interpreters
Program analysis tools Cross reference generators, static analysers, dynamic analysers
Testing tools Test data generators, file comparators
Debugging tools Interactive debugging systems
Documentation tools Page layout programs, image editors
Re-engineering tools Cross-reference systems, program re-structuring systems
Activity-based tool classification
Re-eng ineering tools
Testing tools
Debugg ing tools
Prog ram analysis tools
Language-processing
tools
Method suppor t tools
Prototyping tools
Configuration
management tools
Change management tools
Documentation tools
Editing tools
Planning tools
Specification Design Implementation Verification
and
Validation
CASE integration
Tools, workbenches, environments
CASE
technolo g y
Tools Wor kbenches Environments
File Integrated Pr ocess-centr ed
Editors Compilers
compar ators en vironments en vironments
Analysis and
Pro gramming Testing
design
Multi-method Single-method General-purpose Language-specific
workbenches workbenches workbenches workbenches