© SERG Reverse Engineering (Software Maintenance & Reengineering) Software Maintenance Managing the processes of system change.

Slides:



Advertisements
Similar presentations
Software Re-engineering
Advertisements

Software Re-engineering
Chapter 27 Software Change.
Chapter 11 Software Evolution
SWE 316: Software Design and Architecture Objectives Lecture # 23 Software Reengineering SWE 316: Software Design and Architecture  To describe the activities.
SOFTWARE MAINTENANCE 24 March 2013 William W. McMillan.
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.
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.
Driss Kettani Sommerville, 6th edition Software Engineering II Software re-engineering l Reorganising and modifying existing software systems to make them.
Software maintenance Managing the processes of system change.
©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
Lecture # 22 Software Evolution
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.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Software change l Managing the processes of software system change.
Software Engineering Lecture 20 Software Maintenance.
Software Engineering CS3003 Lecture 3 Software maintenance and evolution.
CS 425/625 Software Engineering Legacy Systems
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Software change l Managing the processes of software system change.
©Ian Sommerville 2004 Software Engineering. Chapter 21Slide 1 Chapter 21 Software Evolution.
Manag ing Software Change CIS 376 Bruce R. Maxim UM-Dearborn.
©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.
©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.
©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 6th edition. Chapters 26,27,28 Slide 1 Legacy Systems l Older software.
HNDIT23082 Lecture 06:Software Maintenance. Reasons for changes Errors in the existing system Changes in requirements Technological advances Legislation.
1 Software Maintenance The process of changing the system after it has been delivered and in operation Software change is inevitable –New requirements.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution 2.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
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 33: Software Maintenance.
CS223: Software Engineering Lecture 34: Software Maintenance.
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.
Overview Software Maintenance and Evolution Definitions
Chapter 9 – Software Evolution
CS223: Software Engineering
Chapter 18 Maintaining Information Systems
Introduction to Software Evolution and Maintenance
Software Maintenance.
Chapter 9 – Software Evolution
Software Maintenance
Software Maintenance PPT By :Dr. R. Mall.
Software Engineering (CSI 321)
Chapter 9 – Software Evolution
CS 425/625 Software Engineering Software Evolution
Legacy Systems Older software systems that remain vital to an organisation.
Chapter 9 – Software Evolution and Maintenance
IS301 – Software Engineering V:
Software Re-Engineering
Chapter 27 Software Change.
Chapter 9 – Software Evolution
Chapter 8 Software Evolution.
Lecture 06:Software Maintenance
Chapter 9 – Software Evolution
Re- engineeniering.
Chapter 9 – Software Evolution
Software Re-engineering and Reverse Engineering
Presentation transcript:

© SERG Reverse Engineering (Software Maintenance & Reengineering) Software Maintenance Managing the processes of system change

© SERG Reverse Engineering (Software Maintenance & Reengineering) The system requirements are likely to change while the system is being developed because the environment is changing. When a system is installed in an environment it changes that environment and therefore changes the system requirements. Maintenance is Inevitable

© SERG Reverse Engineering (Software Maintenance & Reengineering) Perfective maintenance –Changing a system to make it meet its requirements more effectively. Adaptive maintenance –Changing a system to meet new requirements. Corrective maintenance –Changing a system to correct deficiencies in the way meets its requirements. Types of Maintenance

© SERG Reverse Engineering (Software Maintenance & Reengineering) Distribution of Maintenance Effort

© SERG Reverse Engineering (Software Maintenance & Reengineering) Evolving Systems It is usually more expensive to add functionality after a system has been developed rather than design this into the system: –Maintenance staff are often inexperienced and unfamiliar with the application domain. –Programs may be poorly structured and hard to understand. –Changes may introduce new faults as the complexity of the system makes impact assessment difficult. –The structure may be degraded due to continual change. –There may be no documentation available to describe the program.

© SERG Reverse Engineering (Software Maintenance & Reengineering) The Maintenance Process Maintenance is triggered by change requests from customers or marketing requirements. Changes are normally batched and implemented in a new release of the system. Programs sometimes need to be repaired without a complete process iteration but this is dangerous as it leads to documentation and programs getting out of step.

© SERG Reverse Engineering (Software Maintenance & Reengineering) System Documentation Requirements document System architecture description Program design documentation Source code listings Test plans and validation reports System maintenance guide

© SERG Reverse Engineering (Software Maintenance & Reengineering) Usually greater than development costs (2* to 100* depending on the application). Affected by both technical and non- technical factors. Maintenance corrupts the software structure so makes further maintenance more difficult. Aging software can have high support costs (e.g., old languages, compilers etc.) Maintenance Costs

© SERG Reverse Engineering (Software Maintenance & Reengineering) Module independence –It should be possible to change one module without affecting others. Programming language –High-level language programs are easier to maintain. Programming style –Well-structured programs are easier to maintain. Program validation and testing –Well-validated programs tend to require fewer changes due to corrective maintenance. Maintenance Cost Factors

© SERG Reverse Engineering (Software Maintenance & Reengineering) Documentation –Good documentation makes programs easier to understand. Configuration management –Good CM means that links between programs and their documentation are maintained. Application domain –Maintenance is easier in mature and well-understood application domains. Staff stability –Maintenance costs are reduced if the same staff are involved with them for some time. Maintenance Cost Factors (Cont’d)

© SERG Reverse Engineering (Software Maintenance & Reengineering) Maintenance Cost Factors (Cont’d) Program age –The older the program, the more expensive it is to maintain (usually). External environment –If a program is dependent on its external environment, it may have to be changed to reflect environmental changes. Hardware stability –Programs designed for stable hardware will not require to change as the hardware changes.

© SERG Reverse Engineering (Software Maintenance & Reengineering) Control complexity: –Can be measured by examining the conditional statements in the program. Data complexity: –Complexity of data structures and component interfaces. Length of identifier names: –Longer names imply readability. Program comments: –Perhaps more comments mean easier maintenance. Maintenance Measurements

© SERG Reverse Engineering (Software Maintenance & Reengineering) Coupling: –How much use is made of other components or data structures Degree of user interaction: –The more user I/O, the more likely the component is to require change. Speed and space requirements: –Require tricky programming, harder to maintain. Maintenance Measurements (Cont’d)

© SERG Reverse Engineering (Software Maintenance & Reengineering) Process Measurements Number of requests for corrective maintenance. Average time taken to implement a change request. Number of outstanding change requests. If any or all of these is increasing, this may indicate a decline in maintainability.

© SERG Reverse Engineering (Software Maintenance & Reengineering) Software Re-engineering Reorganising and modifying existing software systems to make them more maintainable.

© SERG Reverse Engineering (Software Maintenance & Reengineering) When system changes are mostly confined to part of the system then re-engineer that part. When hardware or software support becomes obsolete. When tools to support re-structuring are available. When to Re-engineer

© SERG Reverse Engineering (Software Maintenance & Reengineering) Re-engineering Advantages Reduced risk –There is a high risk in new software development. Reduced cost –The cost of re-engineering is often significantly less than the costs of developing new software.

© SERG Reverse Engineering (Software Maintenance & Reengineering) Re-engineering Cost Factors The quality of the software to be re- engineered. The tool support available for re- engineering. The extent of the data conversion which is required. The availability of expert staff for re- engineering.

© SERG Reverse Engineering (Software Maintenance & Reengineering) Source Code Translation Involves converting the code from one language (or language version) to another e.g., FORTRAN to C May be necessary because of: –Hardware platform update –Staff skill shortages –Organizational policy changes Only realistic if an automatic translator is available.

© SERG Reverse Engineering (Software Maintenance & Reengineering) Reverse Engineering RE is the process of determining how a system works by analyzing its internal constituents and/or its external behavior. In the software world one would say that RE is trying to figure out how a system works by: –Inspecting the source code and documentation (if it exists) –Exercising the executable programs and observing their behavior.

© SERG Reverse Engineering (Software Maintenance & Reengineering) The Reverse Engineering Process

© SERG Reverse Engineering (Software Maintenance & Reengineering) Reverse Engineering Reverse engineering often precedes re- engineering but is sometimes worthwhile in its own right –The design and specification of a system may be reverse engineered so that they can be an input to the requirements specification process for the system’s replacement. –The design and specification may be reverse engineered to support program maintenance.

© SERG Reverse Engineering (Software Maintenance & Reengineering) Why is RE Important to Software Developers? Most software that is developed is not “from scratch”. Understanding someone else’s source code, specifications, designs, is difficult. –Why is this so? –What makes software more difficult to understand than a toaster or a car?

© SERG Reverse Engineering (Software Maintenance & Reengineering) Software Maintenance Problem A company hires a bright software developer to maintain a system. The project manager points the developer to a source code directory and says “become an expert in the system as soon as possible”. The IBM Tobey back-end compiler project allowed for a 1 year learning curve (but this is quite rare).

© SERG Reverse Engineering (Software Maintenance & Reengineering) Program Structure Improvement Maintenance tends to corrupt the structure of a program. It becomes harder to understand. The program may be automatically restructured to remove unconditional branches. Conditions may be simplified to make them more readable.

© SERG Reverse Engineering (Software Maintenance & Reengineering) Program Modularisation The process of re-organising a program so that related program parts are collected together in a single module. Usually a manual process that is carried out by program inspection and re-organisation.

© SERG Reverse Engineering (Software Maintenance & Reengineering) Recovering Data Abstractions Many legacy systems use shared tables and global data to save memory space. This causes problems because changes have a wide impact in the system. Shared global data may be converted to objects: –Analyse common data areas to identify logical abstractions. –Create an object for these abstractions. –Find all data references and replace them with reference to the data abstraction.

© SERG Reverse Engineering (Software Maintenance & Reengineering) Data Re-engineering Involves analysing and reorganising the data structures (and sometimes the data values) in a program. May be part of the process of migrating from a file-based system to a DBMS-based system or changing from one DBMS to another. Objective is to create a managed data environment.

© SERG Reverse Engineering (Software Maintenance & Reengineering) Data Problems Data naming problems –Names may be hard to understand. The same data may have different names in different programs. Field length problems –The same item may be assigned different lengths in different programs. Hard-coded literals

© SERG Reverse Engineering (Software Maintenance & Reengineering) Reverse Engineering Research The focus has been primarily on the development of tools to help software developers understand software quicker and with less effort. Not much work has been done on RE methods, however.

© SERG Reverse Engineering (Software Maintenance & Reengineering) Sherlock Holmes Analogy “We have developed good detective tools (e.g., magnifying glasses, fingerprint matchers, etc) but we have little insight on how to train someone to be good detective. (e.g., guidelines, processes, etc)” S. Mancoridis

© SERG Reverse Engineering (Software Maintenance & Reengineering) Progress Has Been Made In … Source code analysis Program tracing and profiling Automatic modularization (software clustering) But still a research area in its infancy …