MSc Software Maintenance

advertisement

13/04/2020

MSc Software Maintenance

MS Viðhald hugbúnaðar

Fyrirlestrar 1 & 2 http://www.swebok.org/

The SWEBOK Chapter on

Software Maintenance

© IEEE

Dr Andy Brooks 1

Software Maintenance

1. Software

Maintenance

Fundamentals

2. Key Issues in

Software

Maintenance

3. Maintenance

Process

Definitions and

Terminology

Nature of

Maintenance

Need for

Maintenance

Majority of

Maintenance Costs

Evolution of

Software

Categories of

Maintenance

13/04/2020

Technical Issues

Management

Issues

Maintenance

Cost Estimation

Maintenance

Measurement

Maintenance

Processes

Maintenance

Activities

Dr Andy Brooks

4. Techniques for

Maintenance

Program

Comprehension

Re-engineering

Reverse

Engineering

2

1. Software Maintenance Fundamentals

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.

13/04/2020 Dr Andy Brooks 3

1. Software Maintenance Fundamentals

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

13/04/2020 Dr Andy Brooks 4

1. Software Maintenance Fundamentals

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”

13/04/2020 Dr Andy Brooks 5

1. Software Maintenance Fundamentals

Some things a maintainer does

• “Maintain control over the software´s dayto-day functions

• Maintain control over software modification

• Perfecting existing functions

• Preventing software performance from degrading to unacceptable levels”

13/04/2020 Dr Andy Brooks 6

1. Software Maintenance Fundamentals

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 noncorrective actions”.

• Quality of software design, construction, documentation, and testing affects software maintenance costs.

13/04/2020 Dr Andy Brooks 7

1. Software Maintenance Fundamentals

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.

13/04/2020 Dr Andy Brooks 8

1. Software Maintenance Fundamentals

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

13/04/2020 Dr Andy Brooks 9

1. Software Maintenance Fundamentals

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

13/04/2020 Dr Andy Brooks 10

2.1 Technical Issues 2. Key Issues in Software Maintenance

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

13/04/2020 Dr Andy Brooks 11

2.1 Technical Issues 2. Key Issues in Software Maintenance

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.

13/04/2020 Dr Andy Brooks 12

2.1 Technical Issues 2. Key Issues in Software Maintenance

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”

13/04/2020 Dr Andy Brooks 13

2.1 Technical Issues 2. Key Issues in Software Maintenance

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

13/04/2020 Dr Andy Brooks 14

2. Key Issues in Software Maintenance 2.2 Management Issues

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

13/04/2020 Dr Andy Brooks 15

2. Key Issues in Software Maintenance

2.2.2 Staffing

2.2 Management Issues

• “Maintenance is often not viewed as glamorous work.”

• “Software maintenance personnel are frequently viewed as second-class citizens and morale therefore suffers.”

13/04/2020 Dr Andy Brooks 16

2. Key Issues in Software Maintenance

2.2.3 Process

2.2 Management Issues

• “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).

13/04/2020 Dr Andy Brooks 17

2. Key Issues in Software Maintenance 2.2 Management Issues

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

13/04/2020 Dr Andy Brooks 18

2.2 Management Issues 2. Key Issues in Software Maintenance

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 servicelevel agreement”.

13/04/2020 Dr Andy Brooks 19

2.3 Maintenance Cost Estimation 2. Key Issues in Software Maintenance

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

13/04/2020 Dr Andy Brooks 20

2.3 Maintenance Cost Estimation 2. Key Issues in Software Maintenance

2.3.2 Parametric models

• Data from past projects are used to develop models.

2.3.3 Experience

• Expert judgement and analogical reasoning can be used to complement the output from parametric models in reaching an estimate.

13/04/2020 Dr Andy Brooks 21

2.4 Software Maintenance Measurement 2. Key Issues in Software Maintenance

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

13/04/2020 Dr Andy Brooks 22

2.4 Software Maintenance Measurement 2. Key Issues in Software Maintenance

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

13/04/2020 Dr Andy Brooks 23

3. Maintenance Process

3.1 Maintenance Processes

Modification

Request

Classification

&

Identification

Analysis

Design

13/04/2020

Delivery

Implementation

Acceptance

Test

System

Test

The IEEE 1219-98 Maintenance Process Activities

Dr Andy Brooks 24

3.2 Maintenance Activities 3. Maintenance Process

3.2.1 Unique 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”

13/04/2020 Dr Andy Brooks 25

3.2 Maintenance Activities 3. Maintenance Process

3.2.1 Unique Activities

• Impact Analysis

• Software Support

– “help and advice to users concerning a request for information (for example, business rules, validation, data meaning and adhoc requests/reports)”

• “Service Level Agreements and specialized

(domain-specific) maintenance contracts which are the responsibility of the maintainers”

13/04/2020 Dr Andy Brooks 26

3.2 Maintenance Activities 3. Maintenance Process

3.2.2 Supporting Activities

• software maintenance planning, software configuration management, verification and validation, software quality assurance, reviews, audits, and user training...

27 13/04/2020 Dr Andy Brooks

3. Maintenance Process 3.2 Maintenance Activities

3.2.3 Maintenance Planning Activity

• “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”

13/04/2020 Dr Andy Brooks 28

3. Maintenance Process 3.2 Maintenance Activities

3.2.3 Maintenance Planning Activity

• “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.”

13/04/2020 Dr Andy Brooks 29

3. Maintenance Process 3.2 Maintenance Activities

3.2.4 Software Configuration Management

• “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.”

13/04/2020 Dr Andy Brooks 30

3. Maintenance Process 3.2 Maintenance Activities

3.2.5 Software Quality

• “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.”

13/04/2020 Dr Andy Brooks 31

4. Techniques for Maintenance

4.1 Program Comprehension

• “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.”

13/04/2020 Dr Andy Brooks 32

4. Techniques for Maintenance

4.2 Reengineering

• “... 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.”

13/04/2020 Dr Andy Brooks 33

4. Techniques for Maintenance

4.3 Reverse engineering

• “... 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.”

13/04/2020 Dr Andy Brooks 34

4. Techniques for Maintenance

4.3 Reverse engineering

• “... data reverse engineering has gained in importance over the last few years where logical schemas are recovered from physical databases.”

13/04/2020 Dr Andy Brooks 35

4. Techniques for Maintenance

Refactoring

• “Refactoring is program transformation which reorganizes a program without changing its behavior... that seeks to improve program structure.”

13/04/2020 Dr Andy Brooks 36

Download