maintanance 2 (1)
TRANSCRIPT
-
7/28/2019 Maintanance 2 (1)
1/37
2004 by SEC
Software Maintenance
-
7/28/2019 Maintanance 2 (1)
2/37
2
2004 by SEC
Software Evolution
It is impossible to produce system of any size which do notneed to be changed. Once software is put into use, newrequirements emerge and existing requirements changes as the
business running that software changes.
Parts of the software may have to be modified to correcterrors that are found in operation, improve its performance orother non-functional characteristics.
All of this means that, after delivery, software systems always
evolve in response to demand for change.
-
7/28/2019 Maintanance 2 (1)
3/37
3
2004 by SEC
Software Maintenance
Software maintenance is the general process of changing asystem after it has been diverted.
The change may be simple changes to correct coding errors,more extensive changes to correct design errors or significantenhancement to correct specification error or accommodatenew requirements.
-
7/28/2019 Maintanance 2 (1)
4/37
4
2004 by SEC
Maintenance Characteristics
We need to look at maintenance from three differentviewpoints: [PRE2004]
the activities required to accomplish the maintenance phase and the
impact of a software engineering approach (or lack thereof) on theusefulness of such activities
the costs associated with the maintenance phase
the problems that are frequently encountered when softwaremaintenance is undertaken
-
7/28/2019 Maintanance 2 (1)
5/37
5
2004 by SEC
Computer software programmers and engineers perform
various software maintenance functions to keep software
running with as few problems as possible.
Programmers and engineers also constantly seek to improvethe reliability and functionality of software through
maintenance activities.
Many businesses rely on various software programs to
manage their finances, inventory, employees, securitysystems, and other facets of business activity.
Types of Maintenance
-
7/28/2019 Maintanance 2 (1)
6/37
6
2004 by SEC
Corrective software maintenance involves developing and
deploying solutions to problems ("bugs") that arise during use
of a software program.
Computer users will notice performance problems withsoftware, such as error messages coming on the screen or the
program freezing or crashing, meaning corrective software
maintenance is needed.
Often these fixes permanently solve the problem, but not
always. Some fixes act as a temporary solution while computer
programmers work on a more permanent solution.
Corrective
-
7/28/2019 Maintanance 2 (1)
7/37
7
2004 by SEC
Perfective
No software program contains zero flaws or areas
for improvement. Perfective software maintenance
involves computer programmers working to improve
the way a software program functions or how
quickly it processes requests. Programmers may also
engage in perfective
-
7/28/2019 Maintanance 2 (1)
8/37
8
2004 by SEC
software maintenance to improve the software's
menu layouts and command interfaces. Sometimes
programmers need to conduct perfective
maintenance on software because of outside
influences, such as new government regulations that
affect how a business operates.
Perfective(contd)
-
7/28/2019 Maintanance 2 (1)
9/37
9
2004 by SEC
Adaptive
The field of technology constantly changes through bothhardware and software developments. Adaptive softwaremaintenance addresses these changes. A change in a
processor's speed, for example, will affect how the softwareperforms on a single computer. Software interacts with othersoftware programs on a computer or network, meaningchanges in one program can require changes in other
programs. A user will eventually introduce new software tothe computer or network, which can also affect how other
software already present operates.
-
7/28/2019 Maintanance 2 (1)
10/37
10
2004 by SEC
Preventative
When computer programmers engage in preventative softwaremaintenance they try to prevent problems with software
programs before they occur. Programmers seek to preventcorrective maintenance as much as possible, while alsoanticipating adaptive maintenance needs before usersexperience problems. Computer programmers test software, asautomotive companies test the vehicles they make, to makesure the software can handle high data loads and otherstressful operations without problems. Computer
programmers also test the software with other programs userslikely will use on their computers, making sure compatibilityissues do not arise.
-
7/28/2019 Maintanance 2 (1)
11/37
11
2004 by SEC
Maintenance effort distribution .[SOM2004]
software
adaption
(18%)
Fault repair
(17%)
functionality
addition ormodification
(65%)
-
7/28/2019 Maintanance 2 (1)
12/37
-
7/28/2019 Maintanance 2 (1)
13/37
13
2004 by SEC
Maintenance Examples
Y2K
many, many systems had to be updated
language analyzers (find where changes need to be made)
Anti-Virus Software
don't usually have to update software, but must send virus definitions
-
7/28/2019 Maintanance 2 (1)
14/37
14
2004 by SEC
Maintenance Examples (contd)
Operating System Patching
Microsoft, Apple, Linux/Unix
OS is core to use of computer, so it must be constantly maintained
Commercial Software in General
customers need to be informed of updates
updates have to be easily available - web is good tool
-
7/28/2019 Maintanance 2 (1)
15/37
15
2004 by SEC
Usually greater than development costs (2* to100* depending on the application)
Affected by both technical and non-technicalfactors
Increases as software is maintained.Maintenance corrupts the software structure somakes further maintenance more difficult.
Ageing software can have high support costs
(e.g. old languages, compilers etc.)
Maintenance Costs
-
7/28/2019 Maintanance 2 (1)
16/37
16
2004 by SEC
Maintenance Costs (contd)
Time and money (software that costs 10 a line to develop costs 400 aline to maintain)
Organizations become maintenance bound and cannot produce new
software Customer dissatisfaction when seemingly legitimate requests for repair or
modification cannot be addressed in a timely manner
Reduction in overall software quality as changes introduce latent errors inthe maintained software
Upheaval caused during development efforts when staff must be pulledto work on a maintenance task
-
7/28/2019 Maintanance 2 (1)
17/37
17
2004 by SEC
Team stability
Maintenance costs are reduced if the same staff are involved withthem for some time
Contractual responsibility
The developers of a system may have no contractual responsibilityfor maintenance so there is no incentive to design for future change
Staff skills
Maintenance staff are often inexperienced and have limited domain
knowledge
Program age and structure
As programs age, their structure is degraded and they becomeharder to understand and change
Maintenance Cost Factors
-
7/28/2019 Maintanance 2 (1)
18/37
18
2004 by SEC
Maintainability Factors
Availability of qualified staff.
Understandable system structure.
Use of standardized programming languages
and operating systems. Standardized structure of documentation.
Availability of test cases.
Built-in debugging facilities.
Availability of a proper computer to conductmaintenance.
-
7/28/2019 Maintanance 2 (1)
19/37
19
2004 by SEC
Maintenance Side Effects
In this context a side effect implies an error or undesirablebehavior that occurs as the result of a modification.
the three major areas are[PRE2004]
code
data structures
documentation
-
7/28/2019 Maintanance 2 (1)
20/37
20
2004 by SEC
Documentation Side Effects
These consist of the failure to update documentation so that itno longer matches the code.
If the user doesnt know about changes frustration is
inevitable.
The entire documentation should be reviewed before re-release
-
7/28/2019 Maintanance 2 (1)
21/37
21
2004 by SEC
Coding Side Effects
Any change can cause side-effects but these tend to be moreerror prone a subprogram is deleted or changed
A statement label is deleted or modified
An identifier is deleted or modified
Changes are made to improve execution performance
-
7/28/2019 Maintanance 2 (1)
22/37
22
2004 by SEC
Coding Side Effects (contd)
Logical operators are modified
Files are opened or closed
Design changes which translate into major code changes Changes are made to logical tests of boundary conditions
These may be caught in testing or cause software failureduring operation.
-
7/28/2019 Maintanance 2 (1)
23/37
23
2004 by SEC
Data Side Effects
Data side effects occur as the result of modifications made toa data structure. The most error-prone are:
redefinition of local and global constants
redefinition of record or file formats
Incr. or decr. in size of array or other data structure
modification of global data
re initialization of control flags and pointers
rearrangements of parameters (especially in I/O)
-
7/28/2019 Maintanance 2 (1)
24/37
24
2004 by SEC
Re-engineering, Reverse Engineering
and Forward Engineering,
-
7/28/2019 Maintanance 2 (1)
25/37
25
2004 by SEC
Software Rejuvenation
Re-documentation
Creation or revision of alternative representations of software
at the same level of abstraction
Generates:
data interface tables, call graphs, component/variable crossreferences etc.
Restructuring
transformation of the systems code without changing its behavior
-
7/28/2019 Maintanance 2 (1)
26/37
26
2004 by SEC
Software Rejuvenation (contd)
Reverse Engineering
Analyzing a system to extract information about the behavior and/orstructure
also Design Recovery - recreation of design abstractions from
code, documentation, and domain knowledge Generates:
structure charts, entity relationship diagrams, DFDs, requirementsmodels
Re-engineering
Examination and alteration of a system to reconstitute it in anotherform
Also known as renovation, reclamation
-
7/28/2019 Maintanance 2 (1)
27/37
27
2004 by SEC
Re-structuring or re-writing part or all of alegacy system without changing itsfunctionality
Applicable where some but not all sub-systems
of a larger system require frequentmaintenance
Re-engineering involves adding effort to makethem easier to maintain. The system may be re-structuredand re-documented
System Re-engineering
-
7/28/2019 Maintanance 2 (1)
28/37
28
2004 by SEC
When system changes are mostly confined topart of the system then re-engineer that part
When hardware or software support becomesobsolete
When tools to support re-structuring areavailable
When to Re-engineer
-
7/28/2019 Maintanance 2 (1)
29/37
29
2004 by SEC
Re-engineering Advantages
Reduced risk
There is a high risk in new software development. There may bedevelopment problems, staffing problems and specification
problems
Reduced cost The cost of re-engineering is often significantly less than the costs
of developing new software
-
7/28/2019 Maintanance 2 (1)
30/37
30
2004 by SEC
Forward Engineering and Re-engineering [SOM2004]
Understanding andtransformation
Existingsoftware system
Re-engineeredsystem
Design andimplementation
Systemspecification
Newsystem
Software re-engineering
Forward engineering
-
7/28/2019 Maintanance 2 (1)
31/37
31
2004 by SEC
Re-Engineering Cost Factors
The quality of the software to be re-engineered
The tool support available for re-engineering
The extent of the data conversion which is required
The availability of expert staff for re-engineering
-
7/28/2019 Maintanance 2 (1)
32/37
32
2004 by SEC
Re-Engineering Approaches[SOM2004]
Automated r estructuringwith manual changes
Automated sourcecode conversion
Restructuring plusarchitectural changes
Automated programrestructuring
Program and datarestructuring
Increased cost
-
7/28/2019 Maintanance 2 (1)
33/37
33
2004 by SEC
Source Code Translation
Involves converting the code from one language (orlanguage version) to another e.g. FORTRAN to C
May be necessary because of:
Hardware platform update
Staff skill shortages
Organisational policy changes
Only realistic if an automatic translator is available
-
7/28/2019 Maintanance 2 (1)
34/37
34
2004 by SEC
The Program Translation Process[SOM2004]
Automaticallytranslate code
Design translatorinstructions
Identify sourcecode differences
Manuallytranslate code
System to bere-engineered
System to be
re-engineered
Re-engineered
system
-
7/28/2019 Maintanance 2 (1)
35/37
35
2004 by SEC
Program Structure Improvement
Maintenance tends to corrupt the structure of a program. Itbecomes harder and harder to understand
The program may be automatically restructured to removeunconditional branches
Conditions may be simplified to make them more readable
-
7/28/2019 Maintanance 2 (1)
36/37
36
2004 by SEC
Reverse Engineering
Analysing software with a view to understanding its designand specification
May be part of a re-engineering process but may also beused to re-specify a system for re-implementation
Builds a program data base and generates information fromthis
Program understanding tools (browsers, cross-referencegenerators, etc.) may be used in this process
-
7/28/2019 Maintanance 2 (1)
37/37
37
The Reverse Engineering Process[SOM2004]
Data stucturediagrams
Program stucturediagrams
Traceabilitymatrices
Documentgeneration
Systeminformation
store
Automated
analysis
Manualannotation
System to bere-engineered