Software Maintenance Main issues: why maintenance is such an issue

Slides:



Advertisements
Similar presentations
Software Maintenance Main issues: why maintenance is such an issue
Advertisements

SOFTWARE MAINTENANCE 24 March 2013 William W. McMillan.
Software Engineering Natallia Kokash 1.
Software Configuration Management
Introduction to Software Evolution and Maintenance
Software Evolution Managing the processes of software system change
March 30, Exploratory Testing Testing Approaches Analytical Information-driven Intuitive Exploratory Design the tests and test concurrently Learn.
Dr Kettani, Spring 2002 Software Engineering IIFrom Sommerville, 6th edition Software change l Managing the processes of software system change.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Software evolution.
Software evolution.
Software maintenance Managing the processes of system change.
Software Maintenance Maurice ter Beek
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Chapter 27 Software Change.
Chapter 9 – Software Evolution and Maintenance
SEG Software Maintenance1 Software Maintenance “The modification of a software product after delivery to correct faults, to improve performance or.
Software evolution. Objectives l To explain why change is inevitable if software systems are to remain useful l To discuss software maintenance and maintenance.
Software change  Managing the processes of software system change.
TOPIC R Software Maintenance, Evolution, Program Comprehension, and Reverse Engineering SEG4110 Advanced Software Design and Reengineering.
Software Engineering Lecture 20 Software Maintenance.

CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
© S. Demeyer, S. Ducasse, O. Nierstrasz Intro.1 1. Introduction Goals Why Reengineering ?  Lehman's Laws  Object-Oriented Legacy Typical Problems  common.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Software change l Managing the processes of software system change.
 CS 5380 Software Engineering Chapter 9 Software Evolution.
SOFTWARE MAINTENANCE 1. TOPICS TO BE DISCUSSED.. Definition of Maintenance Software Maintenance Types of Maintenance Maintenance Process Need of Maintenance.
Manag ing Software Change CIS 376 Bruce R. Maxim UM-Dearborn.
Lecture 14 Maintaining the System and Managing Software Change SFDV Principles of Information Systems.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution 1.
Software Evolution Program evolution dynamics Software maintenance Complexity and Process metrics Evolution processes 1.
Chapter 5: Software Re-Engineering Omar Meqdadi SE 3860 Lecture 5 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
Chapter 9 – Software Evolution Chapter 9 Software Evolution1.
HNDIT23082 Lecture 06:Software Maintenance. Reasons for changes Errors in the existing system Changes in requirements Technological advances Legislation.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
1 Software Maintenance The process of changing the system after it has been delivered and in operation Software change is inevitable –New requirements.
System Maintenance Modifications or corrections made to an information system after it has been released to its customers Changing an information system.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
CS223: Software Engineering Lecture 32: Software Maintenance.
© SERG Reverse Engineering (Software Maintenance & Reengineering) Software Maintenance Managing the processes of system change.
Chapter 25 – Configuration Management 1Chapter 25 Configuration management.
Software Development Module Code: CST 240 Chapter 6: Software Maintenance Al Khawarizmi International College, AL AIN, U.A.E Lecturer: Karamath Ateeq.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini XVI. Software Evolution.
Software Configuration Management
Overview Software Maintenance and Evolution Definitions
Chapter 9 – Software Evolution
Maintenance Issues in Software Engineering
Chapter 18 Maintaining Information Systems
Introduction to Software Evolution and Maintenance
Chapter 9 – Software Evolution
Software Maintenance PPT By :Dr. R. Mall.
Software Engineering (CSI 321)
Chapter 9 – Software Evolution
Chapter 9 – Software Evolution and Maintenance
IS301 – Software Engineering V:
Software Maintenance Main issues: why maintenance is such an issue
Chapter 27 Software Change.
Chapter 9 – Software Evolution
Chapter 8 Software Evolution.
Software Maintenance Main issues: why maintenance is such an issue
Lecture 06:Software Maintenance
Chapter 9 – Software Evolution
Chapter 9 – Software Evolution
Software Maintenance Part1 Introduction. Outlines What Is Software Maintenance Purposes of Maintenance Why We Need It Maintenance Difficilties Some Tips.
Introduction Software maintenance:
Presentation transcript:

Software Maintenance Main issues: why maintenance is such an issue reverse engineering and its limitations how to organize maintenance Note that the book is misleadingly simple. Just reading the book is like learning to swim without getting wet. © SE, Maintenance, Hans van Vliet

Relative distribution of software/hardware costs 100 Hardware Development 60 Percent of total cost Software 20 Maintenance 1955 1970 1985 Year SE, Maintenance, Hans van Vliet, ©2008

Point to ponder #1 Why does software maintenance cost so much? SE, Maintenance, Hans van Vliet, ©2008

Software Maintenance, definition The process of modifying a software system or component after delivery to correct faults, improve performance or other attributes, or adapt to a changed environment SE, Maintenance, Hans van Vliet, ©2008

Maintenance is thus concerned with: correcting errors found after the software has been delivered adapting the software to changing requirements, changing environments, ... - IBM OS 360: 1000 errors per release, and this number did not really go down over time - quick and dirty bug fixes increase the system’s entropy - maintenance is usually done under pressure SE, Maintenance, Hans van Vliet, ©2008 © SE, Maintenance, Hans van Vliet

Key to maintenance is in development Higher quality  less (corrective) maintenance Anticipating changes  less (adaptive and perfective) maintenance Better tuning to user needs  less (perfective) maintenance Less code  less maintenance SE, Maintenance, Hans van Vliet, ©2008

Kinds of maintenance activities corrective maintenance: correcting errors adaptive maintenance: adapting to changes in the environment (both hardware and software) perfective maintenance: adapting to changing user requirements preventive maintenance: increasing the system’s maintainability - adaptive maintenance does not change the functionality of the system - people often have trouble distinguishing between adaptive and perfective maintenance - since most present-day development does not start from scratch, part of maintenance resembles development: both concern the evolution of a system; see also exercise 10 of chapter 14. SE, Maintenance, Hans van Vliet, ©2008 © SE, Maintenance, Hans van Vliet

Distribution of maintenance activities corrective 21% perfective 50% adaptive 25% preventive 4% SE, Maintenance, Hans van Vliet, ©2008

Growth of maintenance problem 1975: ~75,000 people n maintenance (17%) 1990: 800,000 (47%) 2005: 2,500,000 (76%) 2015: ?? (Numbers from Jones (2006)) SE, Maintenance, Hans van Vliet, ©2008

Shift in type of maintenance over time Introductory stage: emphasis on user support Growth stage: emphasis on correcting faults Maturity: emphasis on enhancements Decline: emphasis on technology changes SE, Maintenance, Hans van Vliet, ©2008

Major causes of maintenance problems Unstructured code Insufficient domain knowledge Insufficient documentation SE, Maintenance, Hans van Vliet, ©2008

Reverse engineering SE, Maintenance, Hans van Vliet, ©2008

Reverse engineering Does not involve any adaptation of the system Akin to reconstruction of a blueprint Design recovery: result is at higher level of abstraction Redocumentation: result is at same level of abstraction SE, Maintenance, Hans van Vliet, ©2008

Restructuring Functionality does not change From one representation to another, at the same level of abstraction, such as: From spaghetti code to structured code Refactoring after a design step in agile approaches Black box restructuring: add a wrapper With platform change: migration SE, Maintenance, Hans van Vliet, ©2008

Reengineering (renovation) Functionality does change Then reverse engineering step is followed by a forward engineering step in which the changes are made SE, Maintenance, Hans van Vliet, ©2008

Refactoring in case of bad smells Long method Large class Primitive obsession Data clumps Switch statements Lazy class Duplicate code Feature envy Inappropriate intimacy … SE, Maintenance, Hans van Vliet, ©2008

Categories of bad smells Bloaters: something has grown too large Object-oriented abusers: OO not fully exploited Change preventers: hinder further evolution Dispensables: can be removed Encapsulators: deal with data communication Couplers: coupling too high SE, Maintenance, Hans van Vliet, ©2008

Program comprehension Role of programming plans, beacons As-needed strategy vs systematic strategy Use of outside knowledge (domain knowledge, naming conventions, etc.) SE, Maintenance, Hans van Vliet, ©2008

Software maintenance tools Tools to ease perceptual processes (reformatters) Tools to gain insight in static structure Tools to gain insight in dynamic behavior Tools that inspect version history SE, Maintenance, Hans van Vliet, ©2008

Analyzing software evolution data Version-centered analysis: study differences between successive versions History-centered analysis: study evolution from a certain viewpoint (e.g. how often components are changed together) SE, Maintenance, Hans van Vliet, ©2008

Example version-centered analysis SE, Maintenance, Hans van Vliet, ©2008

Example history-centered analysis SE, Maintenance, Hans van Vliet, ©2008

Organization of maintenance W-type: by work type (analysis vs programming) A-type: by application domain L-type: by life-cycle type (development vs maintenance) L-type found most often SE, Maintenance, Hans van Vliet, ©2008

Advantages of L-type departmentalization Clear accountability Development progress not hindered by unexpected maintenance requests Better acceptance test by maintenance department Higher QoS by maintenance department Higher productivity SE, Maintenance, Hans van Vliet, ©2008

Disadvantages of L-type departmentalization Demotivation of maintenance personnel because of status differences Loss of system knowledge during system transfer Coordination costs Increased acceptance costs Duplication of communication channels with users SE, Maintenance, Hans van Vliet, ©2008

Product-service continuum and maintenance SE, Maintenance, Hans van Vliet, ©2008

Service gaps Expected service as perceived by provider differs from service expected by customer Service specification differs from expected service as perceived by provider Service delivery differs from specified services Communication does not match service delivery SE, Maintenance, Hans van Vliet, ©2008

Gap model of service quality SE, Maintenance, Hans van Vliet, ©2008

Maintenance control Configuration control: Identify, classify change requests Analyze change requests Implement changes Fits in with iterative enhancement model of maintenance (first analyze, then change) As opposed to quick-fix model (first patch, then update design and documentation, if time permits) SE, Maintenance, Hans van Vliet, ©2008

Indicators of system decay Frequent failures Overly complex structure Running in emulation mode Very large components Excessive resource requirements Deficient documentation High personnel turnover Different technologies in one system SE, Maintenance, Hans van Vliet, ©2008

SUMMARY most of maintenance is (inevitable) evolution Maintenance problems: Unstructured code Insufficient knowledge about system and domain Insufficient documentation Bad image of maintenance department Lehman’s 3rd law: a system that is used, will change SE, Maintenance, Hans van Vliet, ©2008 © SE, Maintenance, Hans van Vliet