CH11: Maintaining the System maintenance process can be difficult * The Changing System * The Nature of Maintenance * Maintenance Problems * Measuring.

Slides:



Advertisements
Similar presentations
Data Model driven applications using CASE Data Models as the nucleus of software development in a Computer Aided Software Engineering environment.
Advertisements

1 Postdelivery Maintenance Xiaojun Qi. 2 Why Postdelivery Maintenance Is Necessary Corrective maintenance: To correct residual faults –Analysis, design,
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.
Lecturer: Dr. AJ Bieszczad Chapter Lehman’s system types S-system: formally defined, derivable from a specification P-system: requirements based.
Chapter 1 The Systems Development Environment 1.1 Modern Systems Analysis and Design Third Edition.
Software evolution.
Galin, SQA from theory to implementation © Pearson Education Limited Chapter 13 CASE Tools and their Effect on Software Quality.
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.
CS 577b Software Engineering II -- Introduction
©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.
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.
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.
CS 425/625 Software Engineering Legacy Systems
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Software change l Managing the processes of software system change.
This chapter is extracted from Sommerville’s slides. Text book chapter
 CS 5380 Software Engineering Chapter 9 Software Evolution.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
Chapter 11 Maintaining the System System evolution Legacy systems Software rejuvenation.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
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.
Systems Analysis and Design in a Changing World, Fourth Edition
Figures – Chapter 9. Figure 9.1 A spiral model of development and evolution.
SWE311_Ch01 (071) Software & Software Engineering Slide 1 Chapter 1 Software and Software Engineering Chapter 1 Software and Software Engineering.
Chapter 6 CASE Tools Software Engineering Chapter 6-- CASE TOOLS
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.
Software Development Life Cycle (SDLC)
1 Software Maintenance The process of changing the system after it has been delivered and in operation Software change is inevitable –New requirements.
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.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
CS223: Software Engineering Lecture 2: Introduction to Software Engineering.
CS223: Software Engineering Lecture 32: Software Maintenance.
© SERG Reverse Engineering (Software Maintenance & Reengineering) Software Maintenance Managing the processes of system change.
CASE Tools and their Effect on Software Quality
Software Design and Development Development Methodoligies Computing Science.
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
Chapter 18 Maintaining Information Systems
Introduction to Software Evolution and Maintenance
Managing the System PPT SOURCE : Shari L. Pfleeger Joann M. Atlee.
Managing the System PPT SOURCE : Shari L. Pfleeger Joann M. Atlee.
Software Maintenance PPT By :Dr. R. Mall.
CS 425/625 Software Engineering Software Evolution
Chapter 27 Software Change.
Chapter 8 Software Evolution.
Lecture 06:Software Maintenance
PPT11: System maintenance
Introduction Software maintenance:
Chapter 11 Managing the System Shari L. Pfleeger Joann M. Atlee
Presentation transcript:

CH11: Maintaining the System maintenance process can be difficult * The Changing System * The Nature of Maintenance * Maintenance Problems * Measuring Maintenance Characteristics * Maintenance Techniques and Tools * Software Rejuvenation TECH Computer Science

The Changing System Any work done to change the system after it is in operation is considered to be maintenance. Unlike hardware, software does not degrade or require periodic maintenance (?). Types of Systems:  S, P, E

Real world Problem Requirements specification System Information Comparison Subject to change S-System: the solution of the problem is well- know

P-System: based on a practical abstraction of the problem Real world Problem Requirements specification System Information Comparison Subject to change Abstraction

E-System: embedded in the real world and changes as the world does. Comparison Subject to change Problem Requirements specification System Information Abstraction Real world

Change During the System Life Cycle Everything Change Take change into consideration during system development. Make it easier to change during maintenance

The System Life Span Is it possible to build a system right the first time? Maintenance state of development is the evolutionary phase of the system. Legacy systems were built earlier when our needs and environment were different.

Development Time vs. Maintenance Time Typical development project takes between 1 and 2 years, but requires an additional 5 to 6 years of maintenance time! Rule: Twenty percent of the effect is in development and eighty percent is in maintenance.

System Evolution vs. System Decline: When shall we discard the old system and build a new one to replace it?  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?

“Laws of Software Evolution”  Continuing change: changing till replacing by recreated version  Increasing complexity: structure deteriorates and complexity increases  Fundamental law of program evolution: subjected to self-regulating with statistically-determinable trends and invariances.  Conservation of organizational stability (invariant work rate): rate in a programming project is statistically invariant.  Conservation of familiarity (perceived complexity): release content of the successive releases is statistically invariant.

The Nature of Maintenance Corrective Maintenance: maintenance in respond to problems resulting from faults during day-to-day system usage. Adaptive Maintenance: a change introduced in one part of the system requires changes to other parts. Perfective Maintenance: make changes to improve some aspect of the system Preventive Maintenance: make change to prevent failures.

Use of Maintenance Time Perfective 50% Adaptive 25% Corrective 21% Preventive 4%

Maintenance Problems How do we balance the need for change with the need for keeping a system accessible for users? Staff Problems Technical Problems The Need to Compromise Maintenance Cost

Staff Problems Limited Understanding: 47% of software maintenance effect is devoted to understanding the software to be modified. User’s Limited Understanding: provide incomplete and misleading data when reporting a problem Management Priorities: view maintaining and enhancing as more (or less?) important then building new applications

Staff Problems: Morale 11.9% of the problems during maintenance result from low morale and productivity. During maintenance, 8% of the problems result from a programmer’s being pulled in too many directions at one, and thus being unable to concentrate on one problem long enough to solve it.

Technical Problems Number one problem! The y2k problem, “year 2000 problem,” is a good example of where simple but narrow design decisions can have a major effect on maintenance. Maintaining object-oriented programs can be problematic: the design often involves components that are highly interconnected by complex inheritance schemes.

More Technical Problems Inadequate design specifications and low-quality programs and document account for almost 10% of maintenance effort. Testing Difficulties: Testing the system in used can be a problem.  Solution: tests are often run on duplicate system

The Need to Compromise Programmer may be forced to compromise elegance and design principles because a change is needed immediately. The team is forced to concentrate is resources on a problem about which it may have little understanding.

Maintenance Cost All the problems of maintaining a system contribute to the high cost of software maintenance. Maintenance costs may be up to 80% of a system’s lifetime costs.  A series of repairs and enhancements usually leads to fragmentation of system, poor document,... -> more difficult and more effort needed for future maintenance.  Staff Specialization: leads to exponential increase in resources devoted to maintenance.

Measuring Maintenance Characteristics External view of maintainability: records the following info for each problem  the time at which the problem is reported  any time lost due to administrative delay  the time required to analyze the problem  the time required to specify which changes are to be made  the time needed to make the change  the time needed to test the change  the time needed to document the change

Internal Attributes Affecting Maintainability the more complex the code, the more effort required to maintain it measuring how complex: Cyclomatic Number is a metric that captures an aspect of the structure complexity of source code by measuring the number of linearly independent paths through the code.

Finding the Cyclomatic number = edges - nodes + 2 = number of separated segments in the graph = number of decision statements in the code + 1 Cautions:  there are other attributes that contribute to complexity that are not captured by its structure

Graphs for Cyclomatic number calculation numdigit > 0? NO YES If numdigit = 0 n = 0? NO YES CONTROL FLOW GRAPHEQUIVALENT GRAPH

Readability Text: ~= number of years of schooling needed for a person to read a passage with ease and understanding Fog Index = 0.4 * number of words / number of sentences + percentage of words of 3 or more syllables Software: Readability of source code = 0.295*(average normalized length of variables) *(number of lines containing statements) *(Cyclomatic number)

Maintenance Techniques and Tools Configuration Management keeps track of changes and their effects on other system components. Impart analysis is the evaluation of the many risks associated with the change, including estimates of effects on resources, effect, and schedule.

Software maintenance Activities Manage software maintenance Analyze software change impact Understand software under change Implement maintenance change Account for ripple effect (Re)test affected software Preventive Adaptive Corrective Perfective NEW SYSTEM Impact/scope Traceability roadmap Complexity Modularity Documentation Self-descriptiveness Adaptability Stability Consistency Testability Verifiability Completeness Existing system Change Request

Workproducts and Traceability A workproduct is any development artifact whose change is significant. Vertical traceability expresses the relationship among the parts of the workproduct. Horizontal traceability addresses the relationships of the components across collections of workproducts.

Horizontal traceability Requirements document r1 r2 r2.2 r3. d1 d2. d1 d2. d1 d2 d3 Code m.1 Code m.2 Code m.3 Code m.4 Code m.5 Code m.6 Test t.11 Test t.12 Test t.10 Test t.1 Test t.2 Test t.3 Test t.4 Test t.5 Test t.6 Test t.7 Test t.8 Test t.9 Accep- tance test n.2... Design components Code components Tests

Underlying graph for maintenance D2 D1 D3 D4 D5 D6 Dk D7 D R2 R1 R3 R4 R5 R6 Rj.... C2 C1 C3 C4 C5 C6 Cm C7 C T2 T1 T3 T4 T5 T6 Tn T7 T RequirementsDesignCodeTest

Complexity as result of maintenance If the number of paths in the graph increase after the change, then the system is likely to be more unwieldy and difficult to maintain. If number edges go into the node (in-degrees) and number of edges go out the node (out-degrees) increase substantially, then the system may be harder to maintain in the future.

Tools for Maintenance Text Editors File Comparator Compilers and Linkers Debugging Tools Cross-reference Generators Static Code Analyzers Configuration Management repositories

Software Rejuvenation addresses maintenance challenge by trying to increase the overall quality of an existing system Redocument: analysis of the source code to provide more info to assist maintenance. Restructure: transforming ill-structured code into well-structured one.

Reverse engineer Reverse engineer: recreating design and specification information from the code. Reengineering: reverse engineer then “forward engineer” to change the specification and design

Taxonomy of software rejuvenation SPECIFICATION DESIGN SOURCE CODE Forward Engineering forward progression through process Restructuring from code internally represent iteratively simplify structure and eliminate dead code regenerate code Redocumenting from code static analysis reports on structure, complexity, volume, data, etc. not based on software methods Reverse Engineering from code produces design and specification based on accepted software methods manages representation Reengineering from code reverse- engineer code forward- engineer: complete and modify representation regenerate code

Redocumentation Source code Component and variable tables Cross-reference Data interface tables Pseudocode Data and control flows Component calling hierarchy Program tree Complexity and size data Data usage Ripple- effect Test paths DesignTests Code Evaluated using static analysis Leading to additional information about:

Restructuring Unstructured codeStructured code Simplify internal representation Regenerate structured code Internal representation of the code

Source code Static analysis Data dictionary Process specifications Component calling hierarchy Pseudocode Entity-relation diagrams Data and control flow diagrams Data structure diagrams Structure charts Module and variable tables Cross-reference Data interface tables Test paths *NEW* information about, and updates to, all system artifacts Reverse Engineering

Reengineering Unstructured codeStructured code Reverse engineer Regenerate new system STEP 1 Specification Design Update internal specification and design STEP 2 STEP 3

Concluding Remark: What this course means for you Software development processes Large software projects Team Work Documentation and communication Learn the terms of the trade What to expect when you work in software development co. ($$$) (???) “Live Long and Prosper”