Software Engineering: Analysis and Design - CSE3308
Software Engineering: Analysis and Design - CSE3308
Lecture 10B.1
Lecture Outline
x x x
x x x x
Alternatives to Maintenance The Maintenance Process The Laws of Change Motivating Maintenance Staff
Lecture 10B.2
No matter where you are in the system life cycle, the system will change, and the desire to change it will persist throughout the life cycle
Bersoff et al. (1980)
Lecture 10B.3
Sources of Change
x
x x x
New business or market conditions which cause changes in product requirements or business rules New customer needs that demand modification of data, functionality or services delivered by the system Reorganisation and/or business downsizing that changes priorities and team structures Budgetary or scheduling constraints that cause a redefinition of the system MOST CHANGES ARE JUSTIFIED
Lecture 10B.4
x x
In the Waterfall software development lifecycle, we had a nice little box at the end of the process and one which was generally ignored in descriptions of the process In more advanced lifecycles such as the Spiral Model, maintenance was accorded a much more prominent place Still, maintenance is a relatively neglected aspect of the SDLC Examples: Pressman has no specific chapter on Maintenance, Somerville has 15 pages out of 742 pages
Lecture 10B.5
x x x
Another study found at least 50%of effort spent on maintenance Another study found between 65% and 75%on maintenance In embedded real-time systems, maintenance costs may be up to 4 times development costs
Lecture 10B.6
x x x x x x
Most software is between 10 and 15 years old Much of that software is showing its age as it was created when program size and storage space were far more important factors This has lead to inflexible designs, coding and documentation Maintenance is usually done by inexperienced staff unfamiliar with the application Developers dont like maintenance Changes often cause new faults in the system Changes tend to degrade the structure of a program Changes are often not documented
Lecture 10B.7
Module Independence
y the ability to modify one part of the system y potential advantage of OO
Programming Language
y the higher the level of the language, the cheaper the maintenance y C a write-only language, some say :-)
x x
Programming Style
y the way in which a program is written
Lecture 10B.8
Application Domain
y the less well-understood the domain, the greater the likelihood of the need for adaptive maintenance as users and developers begin to understand the domain
Staff Stability
y Maintenance costs are reduced if developers have to maintain their own systems, highly unusual though over the life of a system
Lecture 10B.9
Hardware Stability
y If the hardware platform will not change over the life of the system, maintenance for this reason will not be needed
Lecture 10B.10
Lecture 10B.11
Types of Maintenance
x x x
So how and why do we spend so much time and effort on maintenance? Maintenance is much more than fixing bugs Commonly divided into three main categories
y Corrective Maintenance y Adaptive Maintenance y Perfective Maintenance
x x
The boundaries between the three types of maintenance are often blurred We can also define another type of maintenance - Preventative Maintenance
Lecture 10B.12
Types of Maintenance
Corrective 17%
Adaptive 18%
Perfective 65%
Lecture 10B.13
Corrective Maintenance
x x
Fixing a fault has a 20 to 50% chance of introducing another fault Reasons for new faults include
y the ripple effect, where a change in one area may cause changes in seemingly unrelated areas y Person who makes the repair is generally not the person who wrote the code or designed the system
Lecture 10B.15
Adaptive Maintenance
x x
The evolution of the system to meet the needs of the user and the business Caused by
y internal needs y external competition y external requirements e.g. changes in law
x x
Essentially we are introducing new requirements to the system Therefore we should treat like a new development in our approach and methods
Lecture 10B.16
Perfective Maintenance
x x
Old proverb says If it isnt broken, dont fix it Perfective maintenance ignores this ancient piece of wisdom Is about improving the quality of a program that already works Aim to achieve
y reduced costs in using the system y increase maintainability of the system y more closely meet the users needs
Lecture 10B.17
Includes all efforts to polish or refine the quality of the software or the documentation Important that the potential benefits of the perfective maintenance outweigh
y the costs of the maintenance y and the opportunity costs of improvements elsewhere or using the resources on new developments
Therefore before performing perfective maintenance, one should go through an analysis process Nevertheless, a little perfective maintenance can have dramatic effects
Lecture 10B.18
Preventative Maintenance
x x x x x
Can be seen as radical perfective maintenance or as an alternative to maintenance More commonly known as Software Reengineering Taking a legacy system and converting its structure or converting to a new language Old system starts as a specification for the new system Common method now is known as wrappers where an entire system is placed in an OO wrapper and treated as one large object
Lecture 10B.19
Alternatives to Maintenance
x
Sometimes, maintenance is not enough on its own Partial restructuring integrated with adaptive maintenance
y use for orderly improvement with each system release
Lecture 10B.20
Lecture 10B.21
Lecture 10B.22
Change Management
y Uniquely identify, describe and track the status of all change requests
Impact Analysis
y identifies all systems and system products affected by a change request y makes an estimate of the resources needed to effect the change y analyses the benefits of the change
Lecture 10B.23
Change Implementation
y Design Changes y Coding y Testing - must perform regression testing
Lecture 10B.24
Five laws based upon the growth and evolution of a number of large software systems Law of Continuing Change
y A program used in a real-world environment necessarily must change or become less useful in that environment
Lecture 10B.25
Lecture 10B.26
Often considered a dead-end in organisations as well as being boring! Critical to the success of the organisation Possible strategies
y Couple software objectives to organisational goals y Couple software maintenance rewards to organisational performance y Integrate software maintenance personnel into operational teams y Create a discretionary, perfective/preventative maintenance budget which allows the maintenance team to decide when to re-engineer the system y Involve maintenance staff early in the software process during standards preparation, reviews and test preparation
Lecture 10B.27