Maintenance Phase. Maintenance Type

Similar documents
Java Object Oriented Design. CSC207 Fall 2014

QUIZ #5 - Solutions (5pts each)

Refactorings. Refactoring. Refactoring Strategy. Demonstration: Refactoring and Reverse Engineering. Conclusion

Software Engineering

Testing. Unit, integration, regression, validation, system. OO Testing techniques Application of traditional techniques to OO software

Object-Oriented and Classical Software Engineering

Object-Oriented and Classical Software Engineering

Introduction to Software Engineering p. 1 The Scope of Software Engineering p. 3 Historical Aspects p. 4 Economic Aspects p. 7 Maintenance Aspects p.

Chapter 5 Object-Oriented Programming

CHAPTER 5 GENERAL OOP CONCEPTS

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz

Software Design Fundamentals. CSCE Lecture 11-09/27/2016

CS111: PROGRAMMING LANGUAGE II

Introduction to Software Testing

Chapter 8: Class and Method Design

Software Testing and Maintenance

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1

Components Based Design and Development. Unit 3: Software Design Quick Overview

Software Paradigms (Lesson 3) Object-Oriented Paradigm (2)

Grade Weights. Language Design and Overview of COOL. CS143 Lecture 2. Programming Language Economics 101. Lecture Outline

CSC 330 Object-Oriented Software Design REUSABILITY

Why is Inheritance Important?

From Module To Objects

CO Java SE 8: Fundamentals

SOFTWARE ENGINEERING SOFTWARE EVOLUTION. Saulius Ragaišis.

Concepts 6. OOAD Part II. BlueJ ex 5.1. OO and inheritance. Intro to inheritance. The DoME project is a database for multimedia entertainment.

Data Structures and Algorithms Design Goals Implementation Goals Design Principles Design Techniques. Version 03.s 2-1

REVIEW OF THE BASIC CHARACTERISTICS OF OBJECT ORIENTATION

McLaughlin Brunson Insurance Agency, LLP

ITC213: STRUCTURED PROGRAMMING. Bhaskar Shrestha National College of Computer Studies Tribhuvan University

Deriving Strategy Pattern.... derived from the principles

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Inheritance and Interfaces

CSEN401 Computer Programming Lab. Topics: Object Oriented Features: Abstraction and Polymorphism

Module 10 Inheritance, Virtual Functions, and Polymorphism

CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS

Investigation of Metrics for Object-Oriented Design Logical Stability

In this Lecture you will Learn: Design Patterns. Patterns vs. Frameworks. Patterns vs. Frameworks

Cunning Plan. One-Slide Summary. Functional Programming. Functional Programming. Introduction to COOL #1. Classroom Object-Oriented Language

Tutorial 1 Answers. Question 1

Design Metrics for Object-Oriented Software Systems

Chapter 1: Principles of Programming and Software Engineering

Subject : Computer Science. Paper : Software Quality Management. Module : CASE Tools

CS111: PROGRAMMING LANGUAGE II

CSC207H: Software Design. Java + OOP. CSC207 Winter 2018

Testing Component-Based Software

Object-Oriented Concepts and Design Principles

Appendix A - Glossary(of OO software term s)

Programming II (CS300)

Object-Oriented Programming Paradigm

Review sheet for Final Exam (List of objectives for this course)

Introduction. O.Univ.-Prof. DI Dr. Wolfgang Pree. Universität Salzburg

VIRTUAL FUNCTIONS Chapter 10

MONIKA HEINER.

CS107 Handout 37 Spring 2007 May 25, 2007 Introduction to Inheritance

CHAPTER 9 DESIGN ENGINEERING. Overview

Quality Assurance = Testing? SOFTWARE QUALITY ASSURANCE. Meaning of Quality. How would you define software quality? Common Measures.

ACRONYMS AND GLOSSARY

2015 HSC Software Design and Development Marking Guidelines

Object Oriented Programming

The Visitor Pattern. Design Patterns In Java Bob Tarr

2. On classification and related tasks

OOP Design Conclusions and Variations

Object-Oriented Concepts and Principles (Adapted from Dr. Osman Balci)

HIRP OPEN 2018 Compiler & Programming Language. An Efficient Framework for Optimizing Tensors

THE BCS PROFESSIONAL EXAMINATION BCS Level 6 Professional Graduate Diploma in IT September 2017 EXAMINERS REPORT. Software Engineering 2

The major elements of the object-oriented model

Why testing and analysis. Software Testing. A framework for software testing. Outline. Software Qualities. Dependability Properties

Towards Cohesion-based Metrics as Early Quality Indicators of Faulty Classes and Components

Programming Exercise 14: Inheritance and Polymorphism

Job Ready Assessment Blueprint. Computer Programming. Test Code: 4023 / Version: 01

What about Object-Oriented Languages?

Chapter 11. Categories of languages that support OOP: 1. OOP support is added to an existing language

PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 00. WELCOME TO OBJECTVILLE. Speaking the Language of OO

Integration Testing Qualidade de Software 2

Testing & Debugging TB-1

CSE 403 Lecture 21. Refactoring and Code Maintenance. Reading: Code Complete, Ch. 24, by S. McConnell Refactoring, by Fowler/Beck/Brant/Opdyke

[ L5P1] Object-Oriented Programming: Advanced Concepts

The Legacy Bridge Problem. Douglas Lyon and Chris Huntley

HOW AND WHEN TO FLATTEN JAVA CLASSES?

Object Relationships

CHAPTER 1 Fundamentals of Distributed System. Issues in designing Distributed System

Impact of Dependency Graph in Software Testing

Self-test Programming Fundamentals

History of object-oriented approaches

Race Catcher. Automatically Pinpoints Concurrency Defects in Multi-threaded JVM Applications with 0% False Positives.

Object Oriented Programming: Based on slides from Skrien Chapter 2

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis

"Learn to do Verification with AOP? We've just learned OOP!"

Self-Controlling Architecture Structured Agents

Software Quality Assurance Test of Object-Oriented Software

CGS 2405 Advanced Programming with C++ Course Justification

Lecture 4: Design Concepts For Responsibility- Driven Design Kenneth M. Anderson January 20, 2005

Object Model. Object Orientated Analysis and Design. Benjamin Kenwright

OOAD - OBJECT MODEL. The concepts of objects and classes are intrinsically linked with each other and form the foundation of object oriented paradigm.

Software Maintenance. Maintenance is Inevitable. Types of Maintenance. Managing the processes of system change

CSC207H: Software Design. Java + OOP. CSC207 Winter 2018

Part 7 - Object Oriented Concepts Classes, Objects, Properties and Methods

Data Abstraction. Hwansoo Han

Exam in TDDB84: Design Patterns,

Transcription:

Maintenance Phase Any change to any component of the product after it has passed the acceptance test Requirements Specification Design Implementation Documentation Manuals 1 Maintenance Type Corrective Maintenance To correct residual faults Specification, design, implementation, documentation, or any other types of faults On average, 17.5% of maintenance 2 1

Maintenance Type Perfective Maintenance Client requests changes to improve product effectiveness Add additional functionality Make product run faster Improve maintainability On average, 60.5% of maintenance 3 Maintenance Type 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 4 2

Maintenance Difficulties About 67% of the total cost of a product accrues during the maintenance phase Maintenance is a major income source Nevertheless, even today many organizations assign maintenance to Unsupervised beginners Less competent programmers 5 What is Required of Maintenance Programmers? Maintenance is one of the most difficult aspects of software production since it incorporates aspects of every phases Suppose a fault report is handed to a maintenance programmer The programmer must have following abilities: Investigative Debugging Design Implementation Integration Testing 6 3

What is Required of Maintenance Programmers? Tools used by maintenance programmer to find the fault: The fault report filed by user The source code And often nothing else Maintenance programmer must have superb debugging skills The fault could lie anywhere within the product The original cause of the fault might lie in the non-existent specifications or design documents 7 Corrective Maintenance Suppose that the maintenance programmer has located the fault Problem is: how to fix it without introducing a regression fault How to minimize regression faults Consult the detailed documentation for product as a whole Consult the detailed documentation for each individual module 8 4

Corrective Maintenance What usually happens There is no documentation at all The documentation is incomplete The documentation is faulty The programmer must deduce from the source code all the information needed to avoid introducing a regression fault 9 Corrective Maintenance Programmer changes the source code Test that the modification works correctly Check for regression faults by using stored test data Add specially constructed test cases to stored test data for future regression testing Document all changes Major skills required for corrective maintenance Superb diagnostic skills Superb testing skills Superb documentation skills 10 5

Adaptive and Perfective Maintenance The maintenance programmer must go through the phases of Requirements Specifications Design Implementation and integration Using the existing product as a starting point No form of maintenance Is a task for an unsupervised beginner Should be done by a less skilled computer professional 11 Maintenance Reword Maintenance is a thankless task in every way Maintainers deal with dissatisfied users If the user were happy, the product would not need maintenance The user s problems are often caused by the individuals who developed the product, not the maintainer The code itself may be badly written Maintenance is despised by many software developers Unless good maintenance service is provided, the client will take future development business elsewhere Maintenance is the most important phase of software production, the most difficult and most thankless 12 6

Maintenance Reword How can this situation be changed? Managers must assign maintenance to their best software engineers Pay software engineers accordingly 13 Management of Maintenance A mechanism is needed 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 The maintenance programmer should first consult The fault report All reported faults not yet fixed Suggestions for working around them 14 7

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 Always be conscious of the inevitable further maintenance Principles leading to maintainability are equally applicable to the maintenance phase itself 15 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 In reality there are three obstacles 16 8

In reality there are three obstacles The complete inheritance hierarchy can be large Problem Inheritance tree may be spread over the entire product Solution A CASE tool can help developer to understand the inheritance tree 17 In reality there are three obstacles The consequences of polymorphism and dynamic binding Product fails on the invocation myfile.open () Which version of open contains the fault? A CASE tool cannot help (static tool) We must trace 18 9

In reality there are three obstacles The consequences of inheritance Create new subclass by inheritance Does not affect superclass Does not affect any other subclass Modify this new subclass Again, no affect Modify a superclass All descendent subclasses are affected Inheritance can have Positive effect on development Negative effect on maintenance 19 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 20 10

Maintenance versus Development Skills Key Point Maintenance programmers must not merely be skilled in broad variety of areas, they must be highly skilled in all those areas Specialization impossible for the maintenance programmer Maintenance is the same as development, only more!! 21 Reverse Engineering Reengineering Reverse engineering, followed by forward engineering Lower to higher to lower levels of abstraction Restructuring Improving product without changing functionality Prettyprinting, structuring code, improving maintainability 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) What if we have only the executable code? Treat as black box 22 11

Testing during the Maintenance Phase Maintainers view a product as loosely related modules developers were not involved in development of the product Regression testing is essential Store test cases and outcomes, modify as needed 23 CASE Tools for the Maintenance Phase Version, revision control tools Reengineering tools Battlemap, Teamwork, Bachman Product Set 24 12

Metrics for the Maintenance Phase Metrics for development phases Fault report metrics 25 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 26 13