CS451 Software Maintenance Yugi Lee STB #555 (816) 235-5932 Note: This lecture was designed based on Stephen Schach’s.

Slides:



Advertisements
Similar presentations
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
Advertisements

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
Slide 1.1 Copyright © 2004 by The McGraw-Hill Companies, Inc. All rights reserved. An Introduction to Object-Oriented Systems Analysis and Design with.
Slide 16.1 Copyright © 2004 by The McGraw-Hill Companies, Inc. All rights reserved. An Introduction to Object-Oriented Systems Analysis and Design with.
Lecturer: Dr. AJ Bieszczad Chapter Lehman’s system types S-system: formally defined, derivable from a specification P-system: requirements based.
12/06/20051 Software Configuration Management Configuration management (CM) is the process that controls the changes made to a system and manages the different.
Planning and Estimating
Slide 1.1 © The McGraw-Hill Companies, 2002 Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach
Object-Oriented Analysis and Design Lecture 11 Maintenance (from Schach, “O-O and Classical Software Engineering”)
Slide 16.1 © The McGraw-Hill Companies, 2002 Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach.
Maintenance = Software Evolution Any changes after the client has accepted the product is considered maintenance. n Any Changes? n What might these be?
Software Quality Assurance
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.
Slide 1.1 Copyright © 2011 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill,
Slide 1.1 Copyright © 2008 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented Software Engineering WCB/McGraw-Hill, 2008 Stephen R.
CSC 395 – Software Engineering Lecture 34: Post-delivery Maintenance -or- What’s Worse than Being a Code Monkey?
INFO 637Lecture #81 Software Engineering Process II Integration and System Testing INFO 637 Glenn Booker.
Slide 1.1 CHAPTER 1 INTRODUCTION TO SOFTWARE ENGINEERING.
Ch 1: The Scope of Software Engineering
PROJECT MILESTONES Group Presentations: ~ 5 mins presentations.
Software Engineering Lecture 20 Software Maintenance.
CS540 Software Design Lecture 8 1 Lecture 8: Structured Design Anita S. Malik Adapted from Schach (2004) Chapter 13 and Appendix.

CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
1 Scope of Software Engineering Somnuk Keretho, Assistant Professor Department of Computer Engineering Faculty of Engineering, Kasetsart University
Slide 15.1 © The McGraw-Hill Companies, 2005 Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach.
Slide 16.1 Copyright © 2011 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented and Classical Software Engineering Eighth Edition,
Slide 10.1 Copyright © 2011 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented and Classical Software Engineering Eighth Edition,
Slide 1 Teams l Most products are too large to be completed by a single software professional with the given time constraints l You will work within a.
1 The Scope of Software Engineering Xiaojun Qi. 2 Software Engineering Software engineering is a discipline whose aim is the production of fault-free.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Slide 20.1 Copyright © 2004 by The McGraw-Hill Companies, Inc. All rights reserved. An Introduction to Object-Oriented Systems Analysis and Design with.
Lecture 14 Maintaining the System and Managing Software Change SFDV Principles of Information Systems.
Chapter 5: Software Re-Engineering Omar Meqdadi SE 3860 Lecture 5 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Slide 13.1 © The McGraw-Hill Companies, 2002 Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach.
HNDIT23082 Lecture 06:Software Maintenance. Reasons for changes Errors in the existing system Changes in requirements Technological advances Legislation.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
Software Engineering At Glance. Why We Need Software Engineering? The aim of software engineering is to solve the software crisis Software is delivered.
Dr. DEVENDRA TAYAL– THE SCOPE OF SOFTWARE ENGINEERING.
CS451 Software Implementation and Integration Yugi Lee STB #555 (816) Note: This lecture was designed.
1 Object-Oriented and Classical Software Engineering Object-Oriented and Classical Software Engineering.
Configuration Management
Workflows Eighth Edition, WCB/McGraw-Hill, 2011 Stephen R. Schach.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill Stephen R. Schach 1.
Ch 7: From Modules to Objects (Part Two) CSCI 4320.
Chapter 2 Principles of Programming and Software Engineering.
2. Software Development Processes. Software Engineering Outline Historical aspects Economic aspects Maintenance aspects Requirements, analysis, and design.
CS223: Software Engineering Lecture 32: Software Maintenance.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Object Oriented Systems Design
Object-Oriented Software Engineering WCB/McGraw-Hill, 2008 Stephen R
Software Configuration Management
Chapter 1 The Systems Development Environment
Maintenance Issues in Software Engineering
8.4 Management of Postdelivery Maintenance
Environment Assessment
Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill, 2011 Stephen R. Schach 1.
Chapter 1 The Systems Development Environment
Software Maintenance PPT By :Dr. R. Mall.
Software life cycle models
Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach
Chapter 8 Software Evolution.
Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach
Chapter 1 The Systems Development Environment
Introduction Software maintenance:
Presentation transcript:

CS451 Software Maintenance Yugi Lee STB #555 (816) Note: This lecture was designed based on Stephen Schach’s Classical and Object-Oriented Software Engineering.

Difficulty of Maintenance Maintenance: Any change to any component of the product (including documentation) after it has passed the acceptance test About 67% of the total cost of a product accrues during the maintenance phase Maintenance is extremely hard –Testing is difficult and time consuming Maintenance is a major income source. Today many organizations assign maintenance to –Unsupervised beginners, and –Less competent programmers

Types of maintenance

Types of maintenance (contd) Corrective maintenance (17.5%) –To correct residual faults Specification, design, implementation, documentation, or any other types of faults Perfective maintenance (60.5%) –Client requests changes to improve product effectiveness Add additional functionality Make product run faster Improve maintainability

Types of maintenance (contd) Adaptive maintenance –Responses to changes in environment in which product operates Product ported to new compiler, operating system, and/or hardware Change to tax code 9-digit ZIP codes –On average, 18% of maintenance

What is Required of Maintenance Programmers? Maintenance is one of the most difficult aspects of software production because –Maintenance incorporates aspects of all other phases What tools does the maintenance programmer have to find the fault? –The fault report filed by user –The source code –And often nothing else

What is Required of Maintenance Programmers? Maintenance programmer must have super debugging skills –The fault could lie anywhere within the product –The original cause of the fault might lie in the by now non-existent specifications or design documents

Management of Maintenance We need a mechanism for changing a product If the product appears to function incorrectly, the user files a fault report –It must include enough information to enable the maintenance programmer to recreate the problem Ideally, every fault should be fixed immediately –In practice, immediate preliminary investigation

Ensuring Maintainability Maintenance is not a one-time effort We must plan for maintenance over the entire life cycle –Design phase—use information-hiding techniques –Implementation phase—select variable names meaningful to future maintenance programmers –Documentation must be complete and correct, and reflect current version of every module During the maintenance phase, maintainability must not be compromised ( conscious of the inevitable further maintenan) Principles leading to maintainability are equally applicable to the maintenance phase itself

Maintenance of Object-Oriented Software The object-oriented paradigm promotes maintenance –The product consists of independent units –Encapsulation (conceptual independence) –Information hiding (physical independence) –Message-passing is the sole communication Reality is somewhat different! Three obstacles –The complete inheritance hierarchy can be large –The consequences of polymorphism and dynamic binding –The consequences of inheritance

Maintenance versus Development Skills Skills needed for maintenance include –Ability to determine cause of failure of large product Also needed during integration and product testing –Ability to function effectively without adequate documentation Documentation rarely complete until delivery Skills in specification, design, implementation, testing –All four activities carried out during development Skills needed for maintenance same as those for other phases

Reverse Engineering When the only documentation is the code itself –Start with the code –Recreate the design –Recreate the specifications (extremely hard) –CASE tools help (flowcharters, other visual aids)

Reverse Engineering (contd) Definitions –Reengineering Reverse engineering, followed by forward engineering Lower to higher levels of abstraction –Restructuring Improving product without changing functionality Prettyprinting, structuring code, improving maintainability

Testing during the Maintenance Phase Maintainers view a product as loosely related modules –They were not involved in development of the product Regression testing is essential –Store test cases and outcomes, modify as needed

Challenges of the Maintenance Phase The development-then-maintenance model is unrealistic today –The client’s requirements frequently change before the product is delivered –Faults often have to be fixed before the product is delivered –Development from scratch is almost unknown today. Instead, products are built from reused components. Products are modified before delivery