11/09/2015Dr Andy Brooks1 MSc Software Maintenance MS Viðhald hugbúnaðar Fyrirlestrar 1 & 2 The SWEBOK Chapter on Software Maintenance © IEEE

Slides:



Advertisements
Similar presentations
Software Quality Assurance Plan
Advertisements

Chapter 7: Key Process Areas for Level 2: Repeatable - Arvind Kabir Yateesh.
Acquiring Information Systems and Applications
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
Introduction to Software Evolution and Maintenance
Software Evolution Managing the processes of software system change
March 30, Exploratory Testing Testing Approaches Analytical Information-driven Intuitive Exploratory Design the tests and test concurrently Learn.
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.
MSIS 110: Introduction to Computers; Instructor: S. Mathiyalakan1 Systems Design, Implementation, Maintenance, and Review Chapter 13.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Software evolution.
Software evolution.
Software Architecture Quality. Outline Importance of assessing software architecture Better predict the quality of the system to be built How to improve.
Design, Implementation and Maintenance
CS 577b Software Engineering II -- Introduction
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Chapter 27 Software Change.
Acquiring Information Systems and Applications
Introduction to Computer Technology
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.
“Here’s why you need the new wheels, too…” Shawn and Steve Image from
S/W Project Management
Integrated Capability Maturity Model (CMMI)
Introduction to Software Quality Assurance (SQA)
Chapter 2 The process Process, Methods, and Tools
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.
Software Engineering Lecture 20 Software Maintenance.
SOFTWARE ENGINEERING1 Introduction. Software Software (IEEE): collection of programs, procedures, rules, and associated documentation and data SOFTWARE.
What is a life cycle model? Framework under which a software product is going to be developed. – Defines the phases that the product under development.
Software Maintenance.
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Principles of Information Systems, Sixth Edition Systems Design, Implementation, Maintenance, and Review Chapter 13.
©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.
Principles of Information Systems, Sixth Edition Systems Design, Implementation, Maintenance, and Review Chapter 13.
CHAPTER 13 Acquiring Information Systems and Applications.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Manag ing Software Change CIS 376 Bruce R. Maxim UM-Dearborn.
Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing.
Lecture 14 Maintaining the System and Managing Software Change SFDV Principles of Information Systems.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution 1.
Software Evolution Program evolution dynamics Software maintenance Complexity and Process metrics Evolution processes 1.
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
Principles of Information Systems, Sixth Edition 1 Systems Design, Implementation, Maintenance, and Review Chapter 13.
1 Overview of Maintenance CPRE 416-Software Evolution and Maintenance-Lecture 3.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
1 Software Maintenance and Evolution CSSE 575: Session 4, Part 2 Software Maintenance Process Steve Chenoweth Office Phone: (812) Cell: (937)
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
CS223: Software Engineering Lecture 32: Software Maintenance.
CS223: Software Engineering Lecture 33: Software Maintenance.
Software Engineering — Software Life Cycle Processes — Maintenance
Software Configuration Management
Software Project Configuration Management
Overview Software Maintenance and Evolution Definitions
Fundamentals of Information Systems, Sixth Edition
Software Verification and Validation
Chapter 18 Maintaining Information Systems
Introduction to Software Evolution and Maintenance
Software Maintenance PPT By :Dr. R. Mall.
CS 425/625 Software Engineering Software Evolution
Software Maintenance Main issues: why maintenance is such an issue
Software Maintenance Main issues: why maintenance is such an issue
Chapter 8 Software Evolution.
Presentation transcript:

11/09/2015Dr Andy Brooks1 MSc Software Maintenance MS Viðhald hugbúnaðar Fyrirlestrar 1 & 2 The SWEBOK Chapter on Software Maintenance © IEEE

11/09/2015Dr Andy Brooks2 Software Maintenance 1. Software Maintenance Fundamentals 2. Key Issues in Software Maintenance 3. Maintenance Process 4. Techniques for Maintenance Definitions and Terminology Nature of Maintenance Need for Maintenance Majority of Maintenance Costs Evolution of Software Categories of Maintenance Technical Issues Management Issues Maintenance Cost Estimation Maintenance Measurement Maintenance Processes Maintenance Activities Program Comprehension Re-engineering Reverse Engineering

11/09/2015Dr Andy Brooks3 1.1 Definitions and Terminology The IEEE Standard for Software Maintenance (IEEE 1219) defines maintenance as the modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment. The IEEE/EIA Standard defines maintenance as modification to code and associated documentation due to a problem or the need for improvement. 1. Software Maintenance Fundamentals

11/09/2015Dr Andy Brooks4 1.2 Nature of Maintenance “Modification requests are –logged and tracked, –the impact of proposed changes determined, –code and other software artifacts are modified, –testing is conducted, –and a new version of the software product released.” “Maintainers can learn from the developer´s knowledge of the software.” 1. Software Maintenance Fundamentals

11/09/2015Dr Andy Brooks5 1.3 Need for Maintenance “Maintenance must be performed in order to: –Correct faults –Improve the design –Implement enhancements –Interface with other systems –Adapt programs so that different hardware, software, system features, and telecommunications facilities can be used –Migrate legacy software –Retire software” 1. Software Maintenance Fundamentals

11/09/2015Dr Andy Brooks6 Some things a maintainer does “Maintain control over the software´s day- to-day functions Maintain control over software modification Perfecting existing functions Preventing software performance from degrading to unacceptable levels” 1. Software Maintenance Fundamentals

11/09/2015Dr Andy Brooks7 1.4 Majority of Maintenance Costs “Maintenance consumes a major share of software life cycle financial resources.” But studies and surveys have shown that “over 80% of the maintenance effort is used for non-corrective actions”. Quality of software design, construction, documentation, and testing affects software maintenance costs. 1. Software Maintenance Fundamentals

11/09/2015Dr Andy Brooks8 1.5 Evolution of Software Lehman has studied software maintenance and evolution for over 20 years, leading to ‘Lehman´s Laws’. E.g. Increasing complexity — As a program is evolved, its complexity increases unless work is done to maintain or reduce it. 1. Software Maintenance Fundamentals

11/09/2015Dr Andy Brooks9 1.6 Categories of Maintenance “Corrective maintenance: reactive modification of a software product performed after delivery to correct discovered problems.” “Adaptive maintenance: Modification of a software product performed after delivery to keep a software product usable in a changed or changing environment.” 1. Software Maintenance Fundamentals

11/09/2015Dr Andy Brooks Categories of Maintenance “Perfective maintenance: Modification of a software product after delivery to improve performance or maintainability.” “Preventive maintenance: Modification of a software product after delivery to detect and correct latent faults in the software product before they become effective faults.” 1. Software Maintenance Fundamentals

11/09/2015Dr Andy Brooks Limited Understanding How quickly can maintainers make changes or corrections to software that they did not write? 40%-60% of the maintenance effort is devoted to understanding the software. Comprehension is difficult in the absence of documentation and when the original developers are unavailable Key Issues in Software Maintenance2.1 Technical Issues

11/09/2015Dr Andy Brooks Testing Repeating all the the testing after a modification can be very expensive in terms of time and money. Regression testing (selective retesting) is important to maintenance. Testing needs to be coordinated when different problems are being worked on at the same time. 2. Key Issues in Software Maintenance2.1 Technical Issues

11/09/2015Dr Andy Brooks Impact Analysis “... the objectives of impact analysis are: –Determination of the scope of the change in order to plan and implement the work –Development of accurate estimates of resources needed to perform the work –Analysis of the cost/benefits of the requested change –Communication to others of the complexity of a given change” 2. Key Issues in Software Maintenance2.1 Technical Issues

11/09/2015Dr Andy Brooks Maintainability “IEEE [IEEE ] defines maintainabiliy as the ease with which software can be maintained, enhanced, adapted, or corrected to satisfy specified requirements.” “... the presence of systematic and mature processes, techniques, and tools helps to enhance the maintainability of a system.” 2. Key Issues in Software Maintenance2.1 Technical Issues

11/09/2015Dr Andy Brooks Alignment with organizational objectives The return on investment for software maintenance is less clear than the initial development. “... the view at senior management level is often a major activity consuming significant resources with no clear quantifiable benefit for the organization.” 2. Key Issues in Software Maintenance2.2 Management Issues

11/09/2015Dr Andy Brooks Staffing “Maintenance is often not viewed as glamorous work.” “Software maintenance personnel are frequently viewed as second-class citizens and morale therefore suffers.” 2. Key Issues in Software Maintenance2.2 Management Issues

11/09/2015Dr Andy Brooks Process “A software process is a set of activities, methods, practices, and transformations which people use to develop and maintain software and the associated products.” “At the process level, software maintenance activities share much in common with software development (for example, software configuration management is a crucial activity in both). 2. Key Issues in Software Maintenance2.2 Management Issues

11/09/2015Dr Andy Brooks Organizational aspects of maintenance “The team that develops the software is not necessarily assigned to maintain the software once it is operational.” “many pros and cons” “What is important is the delegation or assignment of the maintenance responsibility to a single group or person, regardless of the organization´s structure.” 2. Key Issues in Software Maintenance2.2 Management Issues

11/09/2015Dr Andy Brooks Outsourcing Software maintenance which is not mission critical can be outsourced. “Outsourcing companies typically spend a number of months assessing the software before they will enter into a contractual relationship.” One report states that “50% of outsourcers provide services without any clear service- level agreement”. 2. Key Issues in Software Maintenance2.2 Management Issues

11/09/2015Dr Andy Brooks Cost Estimation Impact analysis identifies systems and products affected by a software change request and yields an estimate of the resources required. ISO/IEC14764 states “the two most popular approaches to estimating resources for software maintenance are the use of parametric models and the use of experience”. 2. Key Issues in Software Maintenance2.3 Maintenance Cost Estimation

11/09/2015Dr Andy Brooks Parametric models Expert judgement and analogical reasoning can be used to complement the output from parametric models in reaching an estimate Experience Data from past projects are used to develop models. 2. Key Issues in Software Maintenance2.3 Maintenance Cost Estimation

11/09/2015Dr Andy Brooks Specific Measures Analyzability –“Measures of the maintainer´s effort or resources expended in trying to diagnose deficiencies or causes of failure, or in identifying parts to be modified.” Changeability –“Measures of the maintainer´s effort associated with implementing a specified modification.” 2. Key Issues in Software Maintenance2.4 Software Maintenance Measurement

11/09/2015Dr Andy Brooks Specific Measures Stability –“Measures of the unexpected behavior of software, including that encountered during testing.” Testability –“Measures of the maintainers´ and users´ effort in trying to test the modified software.” 2. Key Issues in Software Maintenance2.4 Software Maintenance Measurement

11/09/2015Dr Andy Brooks Maintenance Processes 3. Maintenance Process Classification & Identification Analysis Design Implementation System Test Acceptance Test Delivery The IEEE Maintenance Process Activities Modification Request

11/09/2015Dr Andy Brooks Unique Activities 3. Maintenance Process3.2 Maintenance Activities Transition –“sequence of activities during which software is transferred progressively from the developer to the maintainer” Modification Request acceptance/rejection –“work over a certain size/effort/complexity may be rejected by maintainers and rerouted to a developer” Modification Request and Problem Report Help Desk –“end-user support function that triggers the assessment, prioritization, and costing of modification requests”

11/09/2015Dr Andy Brooks Unique Activities 3. Maintenance Process3.2 Maintenance Activities Impact Analysis Software Support –“help and advice to users concerning a request for information (for example, business rules, validation, data meaning and ad-hoc requests/reports)” “Service Level Agreements and specialized (domain-specific) maintenance contracts which are the responsibility of the maintainers”

11/09/2015Dr Andy Brooks Supporting Activities 3. Maintenance Process3.2 Maintenance Activities software maintenance planning, software configuration management, verification and validation, software quality assurance, reviews, audits, and user training...

11/09/2015Dr Andy Brooks Maintenance Planning Activity 3. Maintenance Process3.2 Maintenance Activities “Release/version planning activity –Collect the dates of availability of individual requests –Agree with users on the content of subsequent releases/versions –Identify potential conflicts and develop alternatives –Assess the risk of a given release and develop a back-out plan in case problems arise –Inform all the stakeholders”

11/09/2015Dr Andy Brooks Maintenance Planning Activity 3. Maintenance Process3.2 Maintenance Activities “A software maintenance plan should specify how users will request software modifications or report problems.” “At the highest level, the maintenance organization will have to conduct business planning activities (budgetary, financial, and human resources) just like all other divisions of the organization.”

11/09/2015Dr Andy Brooks Software Configuration Management 3. Maintenance Process3.2 Maintenance Activities “Software configuration management procedures should provide for the verification, validation, and audit of each step required to identify, authorize, implement, and release the software product.” “It is not sufficient to simply track Modification Requests or Problem Reports. The software product and any changes made to it must be controlled.”

11/09/2015Dr Andy Brooks Software Quality 3. Maintenance Process3.2 Maintenance Activities “The activities and techniques for Software Quality Assurance (SQA), V&V, reviews, and audits must be selected in concert with all the other processes to achieve the desired level of quality.”

11/09/2015Dr Andy Brooks Program Comprehension 4. Techniques for Maintenance “Programmers spend considerable time in reading and understanding programs in order to implement changes.” “Code browsers are key tools for program comprehension.” “Clear and concise documentation can aid in program comprehension.”

11/09/2015Dr Andy Brooks Reengineering 4. Techniques for Maintenance “... defined as the examination and alteration of software to reconstitute it in a new form” “It is often not undertaken to improve maintainability, but to replace aging legacy software.”

11/09/2015Dr Andy Brooks Reverse engineering 4. Techniques for Maintenance “... is the process of analyzing software to identify the software´s components and their inter-relationships and to create representations of the software in another form or at higher levels of abstraction.” “Reverse engineering is passive:it does not change the software, or result in new software.”

11/09/2015Dr Andy Brooks Reverse engineering 4. Techniques for Maintenance “... data reverse engineering has gained in importance over the last few years where logical schemas are recovered from physical databases.”

11/09/2015Dr Andy Brooks36 Refactoring 4. Techniques for Maintenance “Refactoring is program transformation which reorganizes a program without changing its behavior... that seeks to improve program structure.”