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

Similar documents
Legacy Systems. Older software systems that remain vital to an organisation. Legacy systems. Legacy system replacement

Software re-engineering

Software change. Software maintenance

CSC 408F/CSC2105F Lecture Notes

SOFTWARE MAINTENANCE: A

Software Evolution. Dr. James A. Bednar. With material from

Software Engineering I. Chapters 8 & 9. SW Testing & Maintenance. Slide 1. 12/17/2017 SW Testing and Maintenance

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

Part 5. Verification and Validation

Living and Working with Aging Software. Ralph Johnson. University of Illinois at Urbana-Champaign

Documentation & Maintenance

SOFTWARE ENGINEERING DECEMBER. Q2a. What are the key challenges being faced by software engineering?

Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 22 Slide 1

Legacy Metamorphosis. By Charles Finley, Transformix Computer Corporation

A Visual Guide to Automated MVC Reengineering

Training & Documentation. Different Users. Types of training. Reading: Chapter 10. User training (what the system does)

2. Draw and explain state transition diagram for a typical weather information system. (8M)

2 Software life span models

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

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING CS SOFTWARE ENGINEERING

Crash Course in Modernization. A whitepaper from mrc

Expert Reference Series of White Papers. 12 Virtualization Myths Debunked

SOFTWARE ENGINEERING. Software Specification Software Design and Implementation Software Validation. Peter Mileff PhD

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1

Data Management Glossary

Incremental development A.Y. 2018/2019

ΗΜΥ 317 Τεχνολογία Υπολογισμού

Objectives. Chapter 19. Verification vs. validation. Topics covered. Static and dynamic verification. The V&V process

Software Maintenance and Evolution

Reducing the costs of rework. Coping with change. Software prototyping. Ways to Cope with change. Benefits of prototyping

USTGlobal INNOVATION INFORMATION TECHNOLOGY. Using a Test Design Tool to become a Digital Organization

Verification and Validation

VERIFYING SOFTWARE ROBUSTNESS. Ross Collard Collard & Company

PROBLEM SOLVING AND PYTHON PROGRAMMING

IBM DB2 Log Analysis Tool Version 1.3

UX Research in the Product Lifecycle

Refactoring and Rearchitecturing

Verification and Validation. Assuring that a software system meets a user s needs. Verification vs Validation. The V & V Process

INTRODUCTION TO SAMPLING 1

Software Testing and Maintenance

Markus Völter

UNIT II Requirements Analysis and Specification & Software Design

Object Oriented Programming

Verification and Validation

Verification and Validation

IBM Software Group. Mastering Requirements Management with Use Cases Module 10: Structure the Use-Case Model

CS2112 Fall Assignment 4 Parsing and Fault Injection. Due: March 18, 2014 Overview draft due: March 14, 2014

Business Phone System Buyer s Guide

Sample Question Paper. Software Testing (ETIT 414)

UNIT 1-SOFTWARE PROCESS AND PROJECT MANAGEMENT

CPSC 444 Project Milestone III: Prototyping & Experiment Design Feb 6, 2018

In this Lecture you will Learn: Testing in Software Development Process. What is Software Testing. Static Testing vs.

Data and the Environment: Impacts on Cost and Success

Introduction to Software Engineering

TESTING SOFTWARE QUALITY CHARACTERISTICS

Evaluating the Evolution of a C Application

Migration of Legacy Systems to Software Product Lines

Design. Introduction

Decision Management Community June 2017 Challenge

A RISC class (extended abstract)

Transforming The Code: More Than Meets The Eye

Overview. Consolidating SCM Infrastructures - Migrating between Tools -

Categorizing Migrations

User Centered Design - Maximising the Use of Portal

Creating a distribution group

CHAPTER 8: ONLINE ANALYTICAL PROCESSING(OLAP)

Introduction To Software Testing. Brian Nielsen. Center of Embedded Software Systems Aalborg University, Denmark CSS

8 Optimisation. 8.1 Introduction to Optimisation

Moving from a Paper to Paperless validation effort and how to get the most efficient mix of Manual vs. Automated testing.

Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered.

Cache Optimisation. sometime he thought that there must be a better way

Examination Questions Time allowed: 1 hour 15 minutes

Analysis of the Test Driven Development by Example

Business Process Outsourcing

Chapter 3 The project

Algorithms and Flowcharts

Modern Systems Analysis and Design. Third Edition. Jeffrey A. Hoffer Joey F. George Joseph S. Valacich. Chapter 17 System Implementation

EE382N (20): Computer Architecture - Parallelism and Locality Spring 2015 Lecture 14 Parallelism in Software I

C Programming. A quick introduction for embedded systems. Dr. Alun Moon UNN/CEIS. September 2008

Design Concepts and Principles

Virtualization. Q&A with an industry leader. Virtualization is rapidly becoming a fact of life for agency executives,

Figure 11-1: Organizational Issues. Managing the Security Function. Chapter 11. Figure 11-1: Organizational Issues. Figure 11-1: Organizational Issues

Chapter 2 Introduction to Transaction Processing

SUGGESTED SOLUTION IPCC MAY 2017EXAM. Test Code - I M J

BUILDING MICROSERVICES ON AZURE. ~ Vaibhav

Achieving Rapid Data Recovery for IBM AIX Environments An Executive Overview of EchoStream for AIX

TSW Reliability and Fault Tolerance

Information Systems. Software Engineering. MCQ - Part 2

Improving the Accuracy of Function Points Counts

Tool Selection and Implementation

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

Introduction to Software Fault Tolerance Techniques and Implementation. Presented By : Hoda Banki

Online Demo Guide. Barracuda PST Enterprise. Introduction (Start of Demo) Logging into the PST Enterprise

CHART BOOK: HAND-HELD MOBILE DEVICE USE TRENDS FOR MISSISSIPPI ADULTS

A Model of Large Software Development

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1

CSE 374 Programming Concepts & Tools

Full file at

Meltem Özturan misprivate.boun.edu.tr/ozturan/mis515

Systems Analysis & Design

Transcription:

Software Maintenance Managing the processes of system change Maintenance is Inevitable 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. Types of Maintenance 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.

Distribution of Maintenance Effort Corrective maintenance (17%) Adaptive maintenance (18%) Perfective maintenance (65%) 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. 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.

System Documentation Requirements document System architecture description Program design documentation Source code listings Test plans and validation reports System maintenance guide Maintenance Costs Usually greater than development costs (2* to 100* depending on the application). Affected by both technical and nontechnical 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 Cost Factors 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 (Cont d) 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) 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. Maintenance Measurements 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 (Cont d) 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. 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. Software Re-engineering Reorganising and modifying existing software systems to make them more maintainable.

When to Re-engineer 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. 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. Re-engineering Cost Factors The quality of the software to be reengineered. The tool support available for reengineering. The extent of the data conversion which is required. The availability of expert staff for 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. 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. The Reverse Engineering Process System to be re-engineered Automated analysis Manual annotation System information store Document generation Program stucture diagrams Data stucture diagrams Traceability matrices

Reverse Engineering Reverse engineering often precedes reengineering 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. 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? 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).

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. 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. 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.

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. 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 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.

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 Progress Has Been Made In Source code analysis Program tracing and profiling Automatic modularization (software clustering) But still a research area in its infancy