Ch1-SEM
Ch1-SEM
1/30/2025 Slide 1- 1
Course Description
The course focuses on the basic concepts of maintenance and how
the concept of system evolution fits into maintenance;
1/30/2025 Slide 1- 2
Expectation
1/30/2025 Slide 1- 3
Outline
Lecture 1: Software Evolution and Maintenance Concepts
Lecture 2: Maintenance Support Processes:
Maintenance Planning, Evolution and Maintenance Testing,
Configuration Management, Problem Management, Maintenance
supporting tools.
Lecture 3: Maintenance Measurements:
Maintenance Metrics, Maintenance Cost Estimation.
Lecture 4: Management and Organizational Issues:
Organization Aspect of Maintenance, Maintenance Activities and
Role, Outsourcing IT Maintenance, Managing the Maintenance
Function, Maintenance Teams.
Slide 1- 4
Outline
Lecture 5: Maintenance Management Problems:
Problems of Software Maintenance, Software Reuse, Legacy
Systems.
Lecture 6: Software Architecture Evolution
Lecture 7: Maintenance and Reengineering.
Reverse Engineering:
Program Analysis, Architecture Recovery, Software Complexity
and Maintenance Metrics, Program Visualization
Forward Engineering:
Refactoring, Code Transformation, Web-enabling. Software
Reengineering Strategies and Management
Slide 1- 5
Teaching learning methods
1/30/2025 Slide 1- 6
References
1. Mens, T., Demeyer, S., 2010, Software Evolution, 1st Ed, Springer.
1/30/2025 Slide 1- 7
Outline of the Chapter
1.1 Evolution versus Maintenance
1.1.1 Software Evolution
1.1.2 Software Maintenance
1.2 Software Evolution Models and Processes
1.3 Reengineering
1.4 Legacy Systems
1.5 Impact Analysis
1.6 Refactoring
1.7 Program Comprehension
1.8 Software Reuse
Outline of the Chapter
The process of changing the software after delivery is often called
software maintenance.
• Maintenance involves modifying a program after it has been put into
use.
• We usually do not expect maintenance to involve major changes to
the system’s architecture. Rather, changes are made by modifying
existing components and adding new components to the system.
• From a programmer’s perspective, the key issue is that the
programmer must understand the program and its structure.
• Maintenance is important because software is crucial to company’s
success and because software is very complicated.
• In today’s world, most of the software budget is devoted to
modifying existing software rather than developing new software.
Outline of the Chapter
• Successful software products are usually in use much longer than in
development, making maintenance even more crucial.
• If software does not continue to adapt to changes in needs and
environment, it becomes progressively less useful.
• Changes are inevitable, and occur for several reasons:
• New requirements emerge when the software is used
• The business environment changes
• Faults must be repaired
• New computers or equipment are added to the system
• Growing user base makes the performance or reliability insufficient
• Software maintenance is done after the product has
launched for several reasons including improving the software
overall, correcting issues or bugs, to boost performance, and
more. Software maintenance is a natural part of SDLC
(software development life cycle).
1.1 Evolution Versus Maintenance
• The terms evolution and maintenance are used interchangeably.
• However there is a semantic difference.
• Lowell Jay Arthur distinguish the two terms as follows:
“Software maintenance means to preserve from failure or decline.”
“Software evolution means a continuous change from lesser, simpler,
or worse state to a higher or better state.”
“Over time what evolves is not the software but our knowledge
about a particular type of software.”
1.1.1 Software Evolution
• In 1965, Mark Halpern used the term evolution to define the
dynamic growth of software.
• The term evolution in relation to application systems took gradually
in the 1970s.
• Lehman and his collaborators from IBM are generally credited with
pioneering the research field of software evolution.
• Lehman formulated a set of observations that he called laws of
evolution.
• These laws are the results of studies of the evolution of large-scale
proprietary or closed source system (CSS).
• The laws concern what Lehman called E-type systems:
“Monolithic systems produced by a team within an organization
that solve a real world problem and have human users.”
1.1.1 Software Evolution: Laws of Lehman
• Continuing change (1st) – A system will become progressively less
satisfying to its user over time, unless it is continually adapted to
meet new needs.
• Training • Consultive
• Evaluate • Reformative
• Updative • Groomative
• Preventive • Performance
• Adaptive • Reductive
• Corrective • Enhancive
1.2 Software Evolution Models and Processes
• Software maintenance have its own software maintenance
life cycle (SMLC) model.