Introduction Software maintenance:

Slides:



Advertisements
Similar presentations
Chapter 11 Software Evolution
Advertisements

SWE 316: Software Design and Architecture Objectives Lecture # 23 Software Reengineering SWE 316: Software Design and Architecture  To describe the activities.
1 / 24 CS 425/625 Software Engineering Software Evolution Based on Chapter 21 of the textbook [SE-8] Ian Sommerville, Software Engineering, 8 th Ed., Addison-Wesley,
Software Configuration Management
Software Evolution Managing the processes of software system change
Dr Kettani, Spring 2002 Software Engineering IIFrom Sommerville, 6th edition Software change l Managing the processes of software system change.
SWE Introduction to Software Engineering
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Software evolution.
Driss Kettani Sommerville, 6th edition Software Engineering II Software re-engineering l Reorganising and modifying existing software systems to make them.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Chapter 27 Software Change.
Software Reengineering 2003 년 12 월 2 일 최창익, 고광 원.
Software Re-engineering
Chapter 9 – Software Evolution and Maintenance
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.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Software change l Managing the processes of software system change.

Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
© 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.
Chapter 11 Maintaining the System System evolution Legacy systems Software rejuvenation.
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.
Object Oriented Reverse Engineering JATAN PATEL. What is Reverse Engineering? It is the process of analyzing a subject system to identify the system’s.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution 1.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28Slide 1 CO7206 System Reengineering 4.2 Software Reengineering Most slides are Slides.
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.
CASE (Computer-Aided Software Engineering) Tools Software that is used to support software process activities. Provides software process support by:- –
HNDIT23082 Lecture 06:Software Maintenance. Reasons for changes Errors in the existing system Changes in requirements Technological advances Legislation.
Chapter 2: Software Maintenance Omar Meqdadi SE 3860 Lecture 2 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
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.
CS451 Software Maintenance Yugi Lee STB #555 (816) Note: This lecture was designed based on Stephen Schach’s.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
CS223: Software Engineering Lecture 2: Introduction to Software Engineering.
Software change Software change is inevitable –New requirements emerge when the software is used –The business environment changes –Errors must be repaired.
CS223: Software Engineering Lecture 32: Software Maintenance.
Chapter 8: Maintenance and Software Evolution Ronald J. Leach Copyright Ronald J. Leach, 1997, 2009, 2014,
© SERG Reverse Engineering (Software Maintenance & Reengineering) Software Maintenance Managing the processes of system change.
1 / 14 CS 425/625 Software Engineering Software Change Based on Chapter 27 of the textbook [SE-6] Ian Sommerville, Software Engineering, 6 th Ed., Addison-Wesley,
CASE Tools and their Effect on Software Quality
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
Environment Assessment
Chapter 18 Maintaining Information Systems
Introduction to Software Evolution and Maintenance
Managing the System PPT SOURCE : Shari L. Pfleeger Joann M. Atlee.
Software Maintenance.
Classical Waterfall Model
Software Maintenance
Software Maintenance PPT By :Dr. R. Mall.
Software Maintenance and Computer Aided Software Engineering (CASE) (Lecture 12) Dr. R. Mall.
Software Engineering (CSI 321)
CS 425/625 Software Engineering Software Evolution
Software Testing and Maintenance Maintenance and Evolution Overview
Chapter 9 – Software Evolution and Maintenance
Software Maintenance Main issues: why maintenance is such an issue
Software Maintenance Main issues: why maintenance is such an issue
Chapter 27 Software Change.
Chapter 8 Software Evolution.
Software Maintenance Main issues: why maintenance is such an issue
Software Maintenance and Computer Aided Software Engineering (CASE) (Lecture 12) Dr. R. Mall.
Lecture 06:Software Maintenance
System Reengineering Restructuring or rewriting part or all of a system without changing its functionality Applicable when some (but not all) subsystems.
Software Maintenance Part1 Introduction. Outlines What Is Software Maintenance Purposes of Maintenance Why We Need It Maintenance Difficilties Some Tips.
Software Re-engineering and Reverse Engineering
Presentation transcript:

Introduction Software maintenance: any modifications to a software product after it has been delivered to the customer. Software maintenance is an important activity for many organizations.

Introduction Maintenance is inevitable for almost any kind of product. Most products need maintenance: due to wear and tear caused by use. Software products do not need maintenance on this count.

Introduction Many people think The opposite is true: only bad software products need maintenance. The opposite is true: bad products are thrown away, good products are maintained and used for a long time.

Introduction Software products need maintenance for three reasons: corrective adaptive perfective

Corrective Corrective maintenance of a software product: to correct bugs observed while the system is in use. to enhance performance of the product.

Adaptive A software product needs maintenance (porting) when customers: need the product to run on new platforms, or, on new operating systems, need the product to interface with new hardware or software.

Perfective Perfective maintenance: to support new features required by users. to change some functionality of the system due to customer demands.

Maintenance Effort Distribution

Causes for maintenance Users want existing software to run on new platforms: to run in new environments, and/or with enhanced features.

Causes for maintenance Whenever other software it works with change: maintenance is needed to cope up with the newer interface. For instance, a software product may need maintenance when the operating system changes.

Laws of Maintenance There will always be a lot of old software needing maintenance. Good products are maintained, bad products are thrown away.

Laws of Maintenance Lehman’s first Law: “Software products must change continuously, or become progressively less useful.”

Laws of Maintenance Lehman’s Second Law “When software is maintained, its structure degrades, unless active efforts are made to avoid this phenomenon.”

“Over a program’s life time, Laws of Maintenance Lehman’s Third Law: “Over a program’s life time, its rate of development is approximately constant.”

Legacy code--- Major maintenance problems Unstructured code (bad programs) Maintenance programmers have: insufficient knowledge of the system or the application domain. Software maintenance has a bad image. Documentation absent, out of date, or insufficient.

Insufficient knowledge Maintenance team is usually different from development team. even after reading all documents it is very difficult to understand why a thing was done in a certain way. Also there is a limit to the rate at which a person can study documents and extract relevant information

Bad image of maintenance? Maintainers are skilled not only in writing code: proficient in understanding others’ code detecting problems, modifying the design, code, and documentation working with end-users

Maintenance Nightmares Use of gotos Lengthy procedures Poor and inconsistent naming Poor module structure Weak cohesion and high coupling Deeply nested conditional statements Functions having side effects

How to do better maintenance? Program understanding Reverse engineering Design recovery Reengineering Maintenance process models

Maintenance activities Two types of activities: Productive activities: modification of analysis, design, coding, etc. Non-productive activities: understanding system design, code, etc.

Software Reverse Engineering By analyzing a program code, recover from it: the design and the requirements specification.

Software Reverse Engineering In order to extract the design: fully understand the code. Automatic tools can be used to help derive: data flow and control flow diagrams from the code.

Software Maintenance Process Model - 1 When the required changes are small and simple: the code can be directly modified changes reflected in all relevant documents. more elaborate activities are required when required changes are not trivial.

Software Maintenance Process Model - 1 Gather Change Requirements Analyze Change Requirements Devise Code Change Strategies Apply Code Change Strategies Update Documents Integrate and Test

Software Maintenance Process Model -2 For complex maintenance projects, software reengineering needed: a reverse engineering cycle followed by a forward engineering cycle. with as much reuse as possible from existing code and other documents.

Maintenance Process Model 2 Preferable when: amount of rework is significant software has poor structure. Can be represented by a reverse engineering cycle: followed by a forward engineering cycle.

Software reengineering Forward engineering is carried out to produce the new code. During design, module specification, and coding: substantial reuse is made from the reverse engineered products.

Process model for Software reengineering Change Requirements Requirements Specification New Requirements Specification Design Design Code Code

Software reengineering Advantages of reengineering: produces better design than the original product, produces required documents, often results in higher efficiency.

Software reengineering Reengineering is preferable when: amount of rework is high, product exhibits high failure rate. product difficult to understand.