ISBN 0-13-146913-4 Prentice-Hall, 2006 Chapter 11 Maintaining the System Copyright 2006 Pearson/Prentice Hall. All rights reserved.

Slides:



Advertisements
Similar presentations
Chapter 11 Managing the System Shari L. Pfleeger Joann M. Atlee
Advertisements

SOFTWARE MAINTENANCE 24 March 2013 William W. McMillan.
Software Configuration Management
Software Evolution Managing the processes of software system change
© Prentice Hall CHAPTER 9 Application Development by Information Systems Professionals.
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.
Lecturer: Dr. AJ Bieszczad Chapter Lehman’s system types S-system: formally defined, derivable from a specification P-system: requirements based.
Contents Introduction Requirements Engineering Project Management
Software evolution.
Software evolution.
Chapter 25 – Configuration Management 1Chapter 25 Configuration management.
Maintenance When the system is complete and deployed the system is operational. The work done on the operational system is called maintenance.
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 일 최창익, 고광 원.
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.
This chapter is extracted from Sommerville’s slides. Text book chapter
Introduction to Systems Analysis and Design Trisha Cummings.
ISBN Prentice-Hall, 2006 Chapter 10 Delivering the System Copyright 2006 Pearson/Prentice Hall. All rights reserved.
System Analysis and Design
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.
Maintaining the System 中国科学技术大学软件学院 孟宁 2012 年 11 月.
Software Engineering Lecture 20 Software Maintenance.
Software Engineering CS3003 Lecture 3 Software maintenance and evolution.
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Chapter 6 : Software Metrics
CH11: Maintaining the System maintenance process can be difficult * The Changing System * The Nature of Maintenance * Maintenance Problems * Measuring.
©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.
SE: CHAPTER 7 Writing The Program
Chapter 11 Maintaining the System Shari L. Pfleeger Joann M. Atlee 4 th Edition.
Chapter 14: Maintenance Effort Models Omar Meqdadi SE 3860 Lecture 14 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Software Maintenance. OBJECTIVES To appreciate need of Software maintenance performed. To understand reasons for change taking place in a software system.
Manag ing Software Change CIS 376 Bruce R. Maxim UM-Dearborn.
Chapter 3: Software Project Management Metrics
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.
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.
ISBN Prentice-Hall, 2006 Chapter 8 Testing the Programs Copyright 2006 Pearson/Prentice Hall. All rights reserved.
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.
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.
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 Design and Development Development Methodoligies Computing Science.
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 18 Maintaining Information Systems
Managing the System PPT SOURCE : Shari L. Pfleeger Joann M. Atlee.
Managing the System PPT SOURCE : Shari L. Pfleeger Joann M. Atlee.
Software Maintenance
Software Maintenance PPT By :Dr. R. Mall.
IS301 – Software Engineering V:
Chapter 27 Software Change.
Chapter 8 Software Evolution.
PPT11: System maintenance
Software Maintenance Part1 Introduction. Outlines What Is Software Maintenance Purposes of Maintenance Why We Need It Maintenance Difficilties Some Tips.
Introduction Software maintenance:
Chapter 11 Managing the System Shari L. Pfleeger Joann M. Atlee
Presentation transcript:

ISBN Prentice-Hall, 2006 Chapter 11 Maintaining the System Copyright 2006 Pearson/Prentice Hall. All rights reserved.

Pfleeger and Atlee, Software Engineering: Theory and PracticePage 11.2 © 2006 Pearson/Prentice Hall Contents 11.1 The Changing System 11.2 The Nature of Maintenance 11.3 Maintenance Problems 11.4Measuring Maintenance Characteristics 11.5Maintenance Techniques and Tools 11.6Software Rejuvenation 11.7Information System Example 11.8 Real Time Example 11.9What this Chapter Means for You

Pfleeger and Atlee, Software Engineering: Theory and PracticePage 11.3 © 2006 Pearson/Prentice Hall Chapter 11 Objectives System evolution Legacy systems Impact analysis Software rejuvenation

Pfleeger and Atlee, Software Engineering: Theory and PracticePage 11.4 © 2006 Pearson/Prentice Hall 11.1 The Changing System Maintenance: any work done to change the system after it is in operation –Software does not degrade or require periodic maintenance –However, software is continually evolving Maintenance process can be difficult

Pfleeger and Atlee, Software Engineering: Theory and PracticePage 11.5 © 2006 Pearson/Prentice Hall 11.1 The Changing System Lehman’s System Types S-system: formally defined, derivable from a specification P-system: requirements based on approximate solution to a problem, but real-world remains stable E-system: embedded in the real world and changes as the world does

Pfleeger and Atlee, Software Engineering: Theory and PracticePage 11.6 © 2006 Pearson/Prentice Hall 11.1 The Changing System S-System Problem solved is related to the real world

Pfleeger and Atlee, Software Engineering: Theory and PracticePage 11.7 © 2006 Pearson/Prentice Hall 11.1 The Changing System P-System The solution produces information that is compared with the problem

Pfleeger and Atlee, Software Engineering: Theory and PracticePage 11.8 © 2006 Pearson/Prentice Hall 11.1 The Changing System E-System It is an integral part of the world it models –The changeability depends on its real-world context

Pfleeger and Atlee, Software Engineering: Theory and PracticePage 11.9 © 2006 Pearson/Prentice Hall 11.1 The Changing System Changes During the System Life Cycle S-system: un-change P-system: incremental change E-system: constant change

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.1 The Changing System Examples of Change During Software Development Activity from which Initial change resultsArtifacts requiring consequent change Requirements analysisRequirements specification System designArchitectural design specification Technical design specification Program designProgram design specification Program implementationProgram code Program documentation Unit testingTest plans Test scripts System testingTest plans Test scripts System deliveryUser documentation Operator documentation System guide Programmer’s guide Training classes

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.1 The Changing System The System Life Span Will we need maintenance phase? –Development time vs. maintenance time How much change can we expect? –System evolution vs. system decline –Laws of software evolution

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.1 The Changing System Development Time Vs. Maintenance Time Parikh and Zvegintzov (1983) –Development time: 2 years –Maintenance time: 5 to 6 years Fjedstad and Hamlen (1979) –39% of effort in development –61% of effort in maintenance rule –20% of effort in development –80% of effort in maintenance

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.1 The Changing System System Evolution vs. Decline Is the cost of maintenance too high? Is the system reliability unacceptable? Can the system no longer adapt to further change, and within a reasonable amount of time? Is system performance still beyond prescribed constraints? Are system functions of limited usefulness? Can other systems do the same job better, faster, or cheaper? Is the cost of maintaining the hardware great enough to justify replacing it with cheaper, newer hardware?

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.1 The Changing System Laws of Software Evolution Continuing change: leads to less utility Increasing complexity: structure deteriorates Fundamental law of program evolution: program obeys statistically-determined trends and has invariants Conservation of organizational stability: global activity rate is invariant Conservation of familiarity: release content is invariant

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.1 The Changing System Sidebar 11.1 Bell Atlantic Replaces Three Systems with One Evolving One Sales Service Negotiation System (SSNS) –Replaced three legacy system –The goals of the system changed from order- taking to needs-based sales –Replaced archaic commands with plain English –Originally written in C and C++, the system was modified with Java

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.2 The Nature of Maintenance Types of Maintenance Corrective: maintaining control over day- to-day functions Adaptive: maintaining control over system modifications Perfective: perfecting existing functions Preventive: preventing system performance from degrading to unacceptable levels

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.2 The Nature of Maintenance Who Performs Maintenance Separate maintenance team –May be more objective –May find it easier to distinguish how a system should work from how it does work Part of development team –Will build the system in a way that makes maintenance easier –May feel over-confident, and ignore the documentation to help maintenance effort

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.2 The Nature of Maintenance Maintenance Team Responsibilities Understanding the system Locating information in system documentation Keeping system documentation up-to- date Extending existing functions to accommodate new or changing requirements Adding new functions to the system Finding the source of system failures or problems Locating and correcting faults Answering questions about the way the system works Restructuring design and code components Rewriting design and code components Deleting design and code components that are no longer useful Managing changes to the system as they are made

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.2 The Nature of Maintenance Use of Maintenance Time Graphical representation of distribution of maintenance effort (Lientz and Swanson)

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.3 Maintenance Problems Staff problems –Limited understanding –Management priorities –Morale Technical problems –Artifacts and paradigms –Testing difficulties

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.3 Maintenance Problems Sidebar 11.2 The Benefits and Drawbacks of Maintaining OO System Benefits –Maintenance changes to a single object class may not affect the rest of the program –Maintainers can reuse objects easily Drawbacks –OO techniques may make programs more difficult to understand –Multiple parts can make it difficult to understand overall system behavior –Inheritance can make dependencies difficult to trace –Dynamic binding makes it impossible to determine which of several methods will be executed –By hiding the details of data structure, program function is often distributed across several classes

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.3 Maintenance Problems The Need to Compromise Balancing need for change with the need for keeping the system available to users –The complaint is usually brought by a user or operator Fixing problem quick but inelegant solution, or more involved but elegant way –Solving problem involves only the immediate correction of a fault

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.3 Maintenance Problems Sidebar 11.3 Balancing Management and Technical Needs at Chase Manhattan Relationship Management System (RMS) –Developed by Chemical Bank, and then modified and merged with Global Management System –Combined with other systems to eliminate duplication and link hardware platforms and business office –Windows-based GUI was developed –Modified to allow it to run spreadsheets and print reports using Microsoft products –Incorporated Lotus Notes

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.3 Maintenance Problems Factors Affecting Maintenance Approach The type of failure The failure’s criticality or severity The difficulty of the needed changes The scope of the needed changes The complexity of the components being changed The number of physical locations at which the changes must be made

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.3 Maintenance Problems Factors Affecting Maintenance Effort Application type System novelty Turnover and maintenance staff ability System life span Dependence on a changing environment Hardware characteristics Design quality Code quality Documentation quality Testing quality

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.3 Maintenance Problems Modeling Maintenance Effort: Belady and Lehman M = p + K c-d –M : total maintenance effort –p : productive effort –c: complexity –d : degree of familiarity –K : empirical constant

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.3 Maintenance Problems Modeling Maintenance Effort: COCOMO II Size = ASLOC (AA + SU + 0.4DM + 0.3CM + 0.3IM)/100 –ASLOC: number of source lines of code to be adapted –AA: assessment and assimilation effort –SU: amount of software understanding required –DM: percentage of design to be modified –CM: percentage of code to be modified –IM: percentage of external code to be integrated

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.3 Maintenance Problems COCOMO II Rating for SU Very lowLowNominalHighVery high StructureVery low cohesion, high coupling, spaghetti code Moderately low cohesion, high coupling Reasonably well structured, some weak areas High cohesion, low coupling Strong modularity, information hiding in data and control structure Application clarity No match between program and application worldviews Some correlation between program and application Moderate correlation between program and application Good correlation between program and application Clear match between program and application worldviews Self descriptiveness Obscure code; documentation missing, obscure, or obsolete Some code commentary headers; some useful documentatio n Moderate level of code commentary headers, and documentation Good code commentary and headers; useful documentation ; some weak areas Self descriptive code; documentation up-to-date, well organized, with design rationale SU increment

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.3 Maintenance Problems COCOMO II Rating AA Effort Assessment and Assimilation Increment Level of Assessment and Assimilation Effort 0None 2Basic component search and documentation 4Some component test and evaluation documentation 6Considerable component test and evaluation documentation 8Extensive component test and evaluation documentation

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.4 Measuring Maintenance Characteristics Maintainability is not only restricted to code, but also including specification, design, and test plan documentations Maintainability can be viewed in two ways –External view of the software –Internal view of the software

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.4 Measuring Maintenance Characteristics External View of Maintainability Necessary data – time at which problem is reported – time lost due to administrative delay – time required to analyze problem – time required to specify which changes are to be made – time needed to make the change – time needed to test the change – Time needed to document the change Desirable data – ratio of total change implementation time to total number of changes implemented – number of unresolved problems – time spent on unresolved problems – percentage of changes that introduce new faults – number of components modified to implement a change

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.4 Measuring Maintenance Characteristics External View of Maintainability (continued) Graph illustrates the mean time to repair the various subsystems for software at a large British firm

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.4 Measuring Maintenance Characteristics Internal Attributes Affecting Maintainability Cyclomatic number (McCabe, 1976) –The structural complexity of the source code linearly independent path –Based on graph theoretic concept

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.4 Measuring Maintenance Characteristics Example for Calculating Cyclomatic Number Consider the following code Scoreboard::drawscore(int n) { while(numdigits-- > 0} { score[numdigits]->erase(); } // build new score in loop, each time update position numdigits = 0; // if score is 0, just display “0” if (n == 0) { delete score[numdigits]; score[numdigits] = new Displayable(digits[0]); score[numdigits]->move(Point((700-numdigits*18),40)); score[numdigits]->draw(); numdigits++; } while (n) { int rem = n % 10; delete score[numdigits]; score[numdigits] = new Displayable(digits[rem]); score[numdigits]->move(Point(700-numdigits*18),40)); score[numdigits]->draw(); n /= 10; numdigits++; }

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.4 Measuring Maintenance Characteristics Example for Calculating Cyclomatic Number (continued) Linearly independent path = e - n + 2 –e: edges, n : nodes

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.4 Measuring Maintenance Characteristics Other Measures Classification tree analysis –Identify product measures that are the best predictors of interface errors Fog index: textual products, readability affects maintainability –F = 0.4 X (number of words/number of sentences) + percentage of words of three or more syllables De Young and Kampen readability –R = 0.295a – 0.499b c a : the average normalized length of variable b: number of lines containing statements c : McCabe’s cyclomatic number

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.4 Measuring Maintenance Characteristics Sidebar 11.4 Models of Fault Behavior Hatton and Hopkins (1989) studied the NAG Fortran scientific subroutine library –Smaller components contained proportionately more faults than larger ones They notes similar evidence –at Siemens –Ada code at Unisys –Fortran products at NASA Goddard

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.4 Measuring Maintenance Characteristics Sidebar 11.5 Maintenance Measures at Hewlett-Packard Used maintainability index –Index was calibrated with a large number of metrics –A tailored polynomial index was calculated using extended cyclomatic number, lines of code, number of comments, and an effort measure –The polynomial was applied to 714 components containing 236,000 lines of C code developed by third party

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.5 Maintenance Techniques and Tools Configuration management –Configuration control board –Change control Impact analysis Automated maintenance tools

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.5 Maintenance Techniques and Tools Configuration Control Process Problem discovered by or change requested by user/customer/developer, and recorded Change reported to the configuration control board CCB discusses problem: determines nature of change, who should pay CCB discusses source of problem, scope of change, time to fix; they assign severity/priority and analyst to fix Analyst makes change on test copy Analyst works with librarian to control installation of change Analyst files change report

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.5 Maintenance Techniques and Tools Change Control Issues Synchronization: When was the change made? Identification: Who made the change? Naming: What components of the system were changed? Authentication: Was the change made correctly? Authorization: Who authorized that the change be made? Routing: Who was notified of the change? Cancellation: Who can cancel the request for change? Delegation: Who is responsible for the change? Valuation: What is the priority of the change?

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.5 Maintenance Techniques and Tools Impact Analysis The evaluation of many risks associated with the change, including estimates of effects on resources, effort, and schedule Helps control maintenance cost

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.5 Maintenance Techniques and Tools Software Maintenance Activities Graph illustrates the activities performed when a change is requested

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.5 Maintenance Techniques and Tools Measuring Impact of Change Workproduct: any development artifact whose change is significant Horizontal traceability: relationships of components across collections of workproducts Vertical traceability: relationships among parts of a workproduct

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.5 Maintenance Techniques and Tools Horizontal Traceability Graph illustrates how the graphical relationships and traceability links among related workproducts are determined

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.5 Maintenance Techniques and Tools Underlying Graph for Maintenance

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.5 Maintenance Techniques and Tools Sidebar 11.6 Applying Traceability to Real-World System Five kinds of traceability –object-to-object –association-to-association –use case-to-use case –use case-to-object –two-dimensional object-to-object How tracing is performed –Using explicit links –Using textual references to different documents –Using names and concepts that are the same and similar –Using knowledge and domain knowledge

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.5 Maintenance Techniques and Tools Automated Maintenance Tools Text editors File comparators Compilers and linkers Debugging tools Cross-reference generators Static code analyzers Configuration management repositories

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.5 Maintenance Techniques and Tools Sidebar 11.7 Panvalet Incorporates the source code, object code, control language, and data files needed to run a system Controls more than one version of a system –A single version is designated as the production version, and no one is allowed to alter it Places the version number and date of last change on the compiler listing and object module automatically when a file is compiled Has reporting, backup, and recovery features, plus three levels of security access

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.6 Software Rejuvenation Redocumentation: static analysis adds more information Restructuring: transform to improve code structure Reverse engineering: recreate design and specification information from the code Reengineering: reverse engineer and then make changes to specification and design to complete the logical model; then generate new system from revised specification and design

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.6 Software Rejuvenation Taxonomy Graph illustrates the relationship among the four types of rejuvenation

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.6 Software Rejuvenation Redocumentation Begins by submitting the code to an analysis tool Output may include: –component calling relationships –data-interface tables –data-dictionary information –data flow tables or diagrams –control flow tables or diagrams –pseudocode –test paths –component and variable cross-references

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.6 Software Rejuvenation Redocumentation Process Graph illustrates redocumentation process

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.6 Software Rejuvenation Restructuring Activities Interpreting the source code and representing it internally Simplifying the internal representation Regenerating structured code

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.6 Software Rejuvenation Restructuring Activities (continued) Graph illustrates the three major activities involved in restructuring

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.6 Software Rejuvenation Reverse Engineering Attempting to recover engineering information based on software specification and design methods Obstacles remain before reverse engineering can be used universally –Real time system problem –Extremely complex system

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.6 Software Rejuvenation Reverse Engineering Process Graph depicts the reverse-engineering process

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.6 Software Rejuvenation Reengineering An extension of reverse engineering –produces new software code without changing the overall system function Reengineering steps –The system is reverse-engineered –The software system is corrected or completed –The new system is generated

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.6 Software Rejuvenation Reengineering Process Graph illustrates the steps in reengineering process

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.6 Software Rejuvenation Sidebar 11.8 Reengineering Effort The U.S National Institute of Standard and Technology (NIST) studied the results of reengineering 13,131 lines of COBOL source statements using automatic translation –Entire reengineering effort took 35 person-month Boehm point out that original COCOMO model estimated 152 person months for reengineering the same type of system, clearly unacceptable level of accuracy –COCOMO II has been revised to include a factor for automatic translation

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.7 Information System Example Piccadilly System The software can not be an S-system –the problem may change dramatically The software can not be a P-system –P-system requires a stable abstraction, while Piccadilly changes constantly The software must be E-system –The system is an integral part of the world it models

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.8 Real-Time Example Ariane-5 Developers focused on mitigating random failure –The inertial reference system failed because of a design fault, not a result of a random failure Needs to change the failure strategy and implement a series of preventive enhancements Invokes change control and configuration management

Pfleeger and Atlee, Software Engineering: Theory and PracticePage © 2006 Pearson/Prentice Hall 11.9 What this Chapter Means for You The more a system is linked to the real world, the more likely it will change and the more difficult it will be to maintain Maintainers have many jobs in addition to software developers Measuring maintainability is difficult Impact analysis builds and tracks links among the requirements, design, code, and test cases Software rejuvenation involves redocumenting, restructuring, reverse engineering, and reengineering