System Maintenance
Modifications or corrections made to an
information system after it has been released
to its customers
Changing an information system while it is
in operation
Evolving an information system to adapt to
changing business conditions and user needs
Systems Development Lifecycle
Models
Waterfall
Iterative Enhancement
Prototyping
Spiral model
Rapid Application Development
Inspections and Reviews
Systems Lifecycle
Project Identification & Selection
Project Initiation & Planning
Analysis
Logical Design
Software Engineering
Lifecycle
Feasibility Analysis
Requirements
Design
Coding & Integration
Physical Design
Test
Implementation
Installation
Maintenance
Maintenance
IEEE Maintenance Process
Modification request
Classification and Identification
Analysis
Design
Implementation
System Test
Acceptance Test
Delivery
E
nh
an
c
em
en
ts
Categories of Maintenance
Corrective - fixing bugs
Adaptive - no change to functionality,
but now works under new conditions
Perfective - adds something new;
makes the system better
Preventive - enhances internal
structure of system without affecting
external behavior
Maintenance Terms
Configuration Control Board (CCB) - organizational unit that makes
decisions about what proposed maintenance changes will actually be made
Regression testing - testing a modified system with some of the test cases
with which it was originally tested to make sure that only those functions
that were meant to change actually behave differently
Releases - planned collections of maintenance changes that are applied to a
system before it is delivered to customers
Patches - emergency fixes to a system that are delivered to customers
between scheduled releases
Configuration management - the process of keeping track of different
versions of a system that have been supplied to different customers and that
must be maintained separately
Maintenance Terms (cont.)
Ripple effect - the (usually unintended) effects that a change in one
part of a system has on other parts of the system
Impact analysis - analysis of a planned modification to a system in an
effort to determine all of the components of the system that will be
affected by the modification, including ripple effects
System decay - a degradation of system structure and quality over
time due to poorly planned and executed changes
Program comprehension - the human process of understanding a
piece of software code
Porting - a type of adaptive maintenance in which a system is
translated from one operating system, language, or platform to another
Impact analysis
During planning - determine modules that will need
to be modified, to estimate time and resources needed
During analysis - understand data and control flow
in order to follow chain of ripple effects
During design & implementation - keep track of
what ripple effects have been accounted for
During test - known ripple effects guide testing;
further testing reveals unknown ripple effects
Impact Analysis Strategies
Data flow - follow changed pieces of data
(variables) from one module to another to see
what other variables are affected
Control flow - follow the call chain, i.e. what
modules are called by affected modules
Program slicing - based on data flow and/or
control flow
Course Logistics
Meet every Tuesday at 7:00pm for 2-3 hours
Group project - small-to-medium
maintenance task
Leading class - lecture, discussion, and class
exercises
Exams - non-traditional
Class participation - I take this seriously!
Student-led Class Sessions
Part I: 30-minute (~10-12 slides) lecture on
textbook chapter
Part II: Class discussion based on 3 research
papers
Part III: Class exercise from textbook
By Friday: send me an email with first and
second preferences for topic, date, and part
Information for Forming
Project Teams
Name
Department
Degree Program
Programming experience (languages, length
of experience, type of experience)
Other skills
Times you could meet regularly