Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

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

2 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

3 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 12207 Standard defines maintenance as modification to code and associated documentation due to a problem or the need for improvement. 1. Software Maintenance Fundamentals

4 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

5 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

6 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

7 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

8 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

9 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

10 11/09/2015Dr Andy Brooks10 1.6 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 11/09/2015Dr Andy Brooks11 2.1.1 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... 2. Key Issues in Software Maintenance2.1 Technical Issues

12 11/09/2015Dr Andy Brooks12 2.1.2 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

13 11/09/2015Dr Andy Brooks13 2.1.3 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

14 11/09/2015Dr Andy Brooks14 2.1.4 Maintainability “IEEE [IEEE610.12-90] 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

15 11/09/2015Dr Andy Brooks15 2.2.1 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

16 11/09/2015Dr Andy Brooks16 2.2.2 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

17 11/09/2015Dr Andy Brooks17 2.2.3 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

18 11/09/2015Dr Andy Brooks18 2.2.4 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

19 11/09/2015Dr Andy Brooks19 2.2.5 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

20 11/09/2015Dr Andy Brooks20 2.3.1 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

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

22 11/09/2015Dr Andy Brooks22 2.4.1 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

23 11/09/2015Dr Andy Brooks23 2.4.1 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

24 11/09/2015Dr Andy Brooks24 3.1 Maintenance Processes 3. Maintenance Process Classification & Identification Analysis Design Implementation System Test Acceptance Test Delivery The IEEE 1219-98 Maintenance Process Activities Modification Request

25 11/09/2015Dr Andy Brooks25 3.2.1 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”

26 11/09/2015Dr Andy Brooks26 3.2.1 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”

27 11/09/2015Dr Andy Brooks27 3.2.2 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...

28 11/09/2015Dr Andy Brooks28 3.2.3 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”

29 11/09/2015Dr Andy Brooks29 3.2.3 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.”

30 11/09/2015Dr Andy Brooks30 3.2.4 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.”

31 11/09/2015Dr Andy Brooks31 3.2.5 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.”

32 11/09/2015Dr Andy Brooks32 4.1 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.”

33 11/09/2015Dr Andy Brooks33 4.2 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.”

34 11/09/2015Dr Andy Brooks34 4.3 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.”

35 11/09/2015Dr Andy Brooks35 4.3 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.”

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


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

Similar presentations


Ads by Google