maintanance 2 (1)

Upload: apacetech-iluvb

Post on 03-Apr-2018

224 views

Category:

Documents


0 download

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