SEG4210 - Software Maintenance1 Software Maintenance “The modification of a software product after delivery to correct faults, to improve performance or.

Slides:



Advertisements
Similar presentations
SWE 316: Software Design and Architecture Objectives Lecture # 23 Software Reengineering SWE 316: Software Design and Architecture  To describe the activities.
Advertisements

Software Quality Assurance Plan
Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
SOFTWARE MAINTENANCE 24 March 2013 William W. McMillan.
Unified theory of software evolution Reengineering – Business process reengineering and software reengineering BPR model – Business definition, process.
1 Postdelivery Maintenance Xiaojun Qi. 2 Why Postdelivery Maintenance Is Necessary Corrective maintenance: To correct residual faults –Analysis, design,
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.
Contents Introduction Requirements Engineering Project Management
Illinois Institute of Technology
(c) 2007 Mauro Pezzè & Michal Young Ch 1, slide 1 Software Test and Analysis in a Nutshell.
CHAPTER 19 Building Software.
Software maintenance Managing the processes of system change.
CS 577b Software Engineering II -- Introduction
Software Reengineering 2003 년 12 월 2 일 최창익, 고광 원.
Chapter 9 – Software Evolution and Maintenance
CCSB223/SAD/CHAPTER141 Chapter 14 Implementing and Maintaining the System.
11/09/2015Dr Andy Brooks1 MSc Software Maintenance MS Viðhald hugbúnaðar Fyrirlestrar 1 & 2 The SWEBOK Chapter on Software Maintenance © IEEE
System Analysis and Design
Dillon: CSE470: SE, Process1 Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l Umbrella Activities:
Maintaining Information Systems Modern Systems Analysis and Design.
Software Testing Life Cycle
Karolina Muszyńska. Reverse engineering - looking at the solution to figure out how it works Reverse engineering - breaking something down in order to.
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.
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
PowerPoint Presentation for Dennis, Wixom & Tegarden Systems Analysis and Design Copyright 2001 © John Wiley & Sons, Inc. All rights reserved. Slide 1.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Testing -- Part II. Testing The role of testing is to: w Locate errors that can then be fixed to produce a more reliable product w Design tests that systematically.
Drexel University CS 451 Software Engineering Winter Yuanfang Cai Room 104, University Crossings
SOFTWARE MAINTENANCE 1. TOPICS TO BE DISCUSSED.. Definition of Maintenance Software Maintenance Types of Maintenance Maintenance Process Need of Maintenance.
1 Ontology Summit 2011 Track 3 Value Metrics & Value Models Ontology Use - Maintenance Todd Schneider Raytheon 17 February 2011.
Lecture Introduction to Software Development SW Engg. Development Process Instructor :Muhammad Janas khan Thursday, September.
Manag ing Software Change CIS 376 Bruce R. Maxim UM-Dearborn.
Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing.
Object Oriented Reverse Engineering JATAN PATEL. What is Reverse Engineering? It is the process of analyzing a subject system to identify the system’s.
Lecture 14 Maintaining the System and Managing Software Change SFDV Principles of Information Systems.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
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.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
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.
Assoc. Prof. Dr. Ahmet Turan ÖZCERİT.  System and Software  System Engineering  Software Engineering  Software Engineering Standards  Software Development.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Lecture Videos will no longer be posted. Assignment 3 is due Sunday, the 8 th, 7pm. Today: –System Design,
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.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
CS223: Software Engineering Lecture 32: Software Maintenance.
Software Maintenance1 Software Maintenance.
© SERG Reverse Engineering (Software Maintenance & Reengineering) Software Maintenance Managing the processes of system change.
Software Testing and Quality Assurance Practical Considerations (1) 1.
Software Development Module Code: CST 240 Chapter 6: Software Maintenance Al Khawarizmi International College, AL AIN, U.A.E Lecturer: Karamath Ateeq.
Software Configuration Management
Chapter 18 Maintaining Information Systems
Introduction to Software Evolution and Maintenance
Managing the System PPT SOURCE : Shari L. Pfleeger Joann M. Atlee.
Software Maintenance
Some Important Techniques For Regression Testing That You Must Know.
Software Maintenance Main issues: why maintenance is such an issue
Software Maintenance Main issues: why maintenance is such an issue
Chapter 8 Software Evolution.
Software Maintenance Main issues: why maintenance is such an issue
Lecture 06:Software Maintenance
Software Maintenance Part1 Introduction. Outlines What Is Software Maintenance Purposes of Maintenance Why We Need It Maintenance Difficilties Some Tips.
Presentation transcript:

SEG Software Maintenance1 Software Maintenance “The modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a changed environment” ANSI/IEEE Standard

SEG Software Maintenance2 Translation: Fix bugs Add enhancements

Why Maintenance is Important “Maintenance can account for over 60% of all effort expended by a development organization” “Much of the software we depend on today is on average 10 to 15 years old” Or older: year 2000 problem involved software written in the 1960s and 1970s “Year 2038 problem” SEG Software Maintenance3

4 Software Maintenance Types 1 Corrective maintenance: Fixing faults that cause the system to fail Adaptive maintenance: Making changes in existing software to accommodate a changing environment Enhancement Adding new features

SEG Software Maintenance5 Software Maintenance Types 2 Perfective maintenance Making improvements to the existing system without effecting end- user functionality —To make it easier to extend and add new features in the future —Also called re-engineering —Refactoring is a key type Preventive maintenance Preventing failures by fixing defects in advance of failures A kind of perfective maintenance Key examples: Y2K and Daylight Savings adjustments

SEG Software Maintenance6 Software Maintenance Steps 1 Understand the existing system Study whatever form of documentation exists about the system to be modified —Often the only reliable source of information is the source code Use tools to recover the high-level design models of the system

SEG Software Maintenance7 Software Maintenance Steps 2 Define the maintenance objectives Set the requirements Analysis Evaluate alternatives for handling the modification —Estimate the costs and benefits of the alternative modifications —Perform impact analysis -Determine the effect of the change on the rest of the system

SEG Software Maintenance8 Software Maintenance Steps 3 Design, implement, and test the changes Revalidate Running regression tests to make sure that the unchanged code still works and is not adversely affected by the new changes

SEG Software Maintenance9 Software Maintenance Steps 4 Train Inform users of the changes Convert and release Generate and release/install a new version with the modified parts May involve migrating data at the same time

SEG Software Maintenance10 Program Comprehension The discipline concerned with studying the way software engineers understand programs Objective: design tools that will facilitate the understanding of large programs

SEG Software Maintenance11 Program Comprehension Strategies 1 The bottom-up model: Comprehension starts with the source code and abstracting from it to reach the overall comprehension of the system Steps: —Read the source code —Mentally group together low-level programming details (chunks) to build higher-level abstractions —Repeat until a high-level understanding of the program is formed

SEG Software Maintenance12 Program Comprehension Strategies 2 The top down model: Hypothesis-driven comprehension Steps —First formulate hypotheses about the system functionality —Verify whether these hypotheses are valid or not —This process usually leads to creating other hypotheses, forming a hierarchy of hypotheses —Continue until the low-level hypotheses are matched to the source code and proven to be valid or not

SEG Software Maintenance13 Reverse Engineering “Reverse engineering is the process of analyzing a subject system to identify the system’s components and their inter-relationships and to create representations of the system, in another form at a higher level of abstraction” Chikofsky and Cross

SEG Software Maintenance14 Two main levels of reverse engineering Binary reverse engineering Take a binary executable —Recover source code you can then modify Useful for companies that have lost their source code Used extensively by hackers Can be used legally, e.g. to enable your system to interface to existing system Illegal in some contexts Source code reverse engineering Take source code —Recover high level design information By far the most widely performed type of reverse engineering Binary reverse engineers also generally do this too

SEG Software Maintenance15 Reverse Engineering Objectives Recover lost information: Changes made to the system are often undocumented; —This enlarges the gap between the design and the implementation Reverse engineering techniques retrieve the lost information