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
Project Identification & Selection Project Initiation & Planning Analysis Logical Design Physical Design Implementation Maintenance Feasibility Analysis Requirements Design Coding & Integration Test Installation Maintenance Systems Lifecycle Software Engineering Lifecycle
IEEE Maintenance Process Modification request –Classification and Identification –Analysis –Design –Implementation –System Test –Acceptance Test –Delivery
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 “Enhancements”
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 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