32 Software Maintenance II

R. Baskaran

 

SOFTWARE MAINTENANCE

 

Software maintenance is the process of modification or making changes in the system after delivery to overcome errors and faults in the system that were not uncovered during the early stages of the development cycle.

 

LEARNING OBJECTIVES 

 

• To study on why maintenance is an issue.

• To study on reverse engineering and limitations.

• To organize data.

• To check what the system does.

 

KEY ISSUES IN SOFTWARE MAINTENANCE: 

 

The key issues in software maintenance include:

 

•  Limited Understanding

•  Shift in type of maintenance

•  Impact Analysis

•  Maintainability

•  Alignment with organizational objectives

•  Staffing

•  Process

•  Organizational aspects of maintenance

•  Outsourcing

•  Cost Estimation

•  Specific Measures

 

Maintainability 

 

IEEE [IEEE610.12-90] defines maintainabiliy as the ease with which software can be maintained, enhanced, adapted, or corrected to satisfy specified requirements and the presence of systematic and mature processes, techniques, and tools helps to enhance the maintainability of a system.

 

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.

 

Staffing 

 

Maintenance is often not viewed as glamorous work. Software maintenance personnel are frequently viewed as second-class citizens and morale therefore suffers.

 

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

 

Organizational aspects of maintenance 

 

The team that develops the software is not necessarily assigned to maintain the software once it is operational. The important factor is the delegation or assignment of the maintenance responsibility to a single group or person, regardless of the organization´s structure.

 

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.

 

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

 

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

 

MAINTENANCE PROCESSES 

 

The maintenace process commences with the modification request to improvise the system. When the request is receieved the classfication and idenfication the modules is done for analysis. After analysis, design for the improvisation of the system is done and it is implemented. The modified system is then tested and delivered to the customers.

 

 

Maintenance process varies considerably depending on the types of software being maintained, the development processes used in an organization and people involved in the process.

 

The maintenance process is shown in the figure below, where a change request is received to modify the system. The impact analysis is done and the release of the new modified version is planned. The modifications that were specified are implemented and the modified system is released. Maintenance process also takes care of fault repair, system enhancement and platform adaptation.

Unique Maintenance Activities 

  • Transition– A 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.
  • 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).

 

Supporting Activities 

 

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

 

Maintenance Planning Activity 

  • Release/version planning activity involves
    • Collecting 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

 

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.

 

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

 

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.

 

SOFTWARE REJUVENATION 

 

Software rejuvenation includes the following actions:

 

Re-documentation – It is the creation or revision of alternative representations of software at the same level of abstraction. It generates data interface tables, call graphs, component/variable cross references etc.

 

Restructuring – it is the transformation of the system’s code without changing its behavior.

 

Reverse Engineering- Reverse engineering involves analyzing a system to extract information about the behavior and/or structure.

 

Design Recovery – It is the recreation of design abstractions from code, documentation, and domain knowledge. It generates structure charts, entity relationship diagrams, DFDs, requirements models.

 

Re-engineering- Examination and alteration of a system to reconstitute it in another form. It is also known as renovation, reclamation. It is often not undertaken to improve maintainability, but to replace aging legacy software.

 

Re-Engineering process involves the following activities:

  • Decide what to re-engineer and comprehend whether it is a whole software or a part of it.
  • Perform Reverse Engineering, in order to obtain specifications of existing software.
  • Restructure Program if required. For example, changing function-oriented programs into object-oriented programs.
  • Re-structure data as required.
  • Apply Forward engineering concepts in order to get re-engineered software.

 

Reengineering is done in the following occurrences:

  • When system changes are mostly confined to part of the system then re-engineer that part.
  • When hardware or software support becomes obsolete.
  • When tools to support re-structuring are available

 

Re-engineered System 

 

The development of a new system involves establishing a well defined system specification and the proceeding with the design a and implementation to come up with a new system. In a re- engineered system, a existing software is taken and the system is understood thoroughly to make the transformation to develop a reengineered system.

Advantages of Re-engineering

  • Reduced risk
    • There is a high risk in new software development There may be development problems, staffing problems and specification problems.
  • Reduced cost
    • The cost of re-engineering is often significantly less than the costs of developing new software
Web Links
  • swebokwiki.org/Chapter_5:_Software_Maintenance
  • agile.csc.ncsu.edu/SEMaterials/MaintenanceRefactoring.pdf
  • https://www.tutorialspoint.com/software…/software_maintenance_overview.htm
Supporting & Reference Materials
  • Roger S. Pressman, “Software Engineering: A Practitioner’s Approach”, Fifth Edition, McGraw Hill, 2001.
  • Pankaj Jalote, “An Integrated Approach to Software Engineering”, Second Edition, Narosa Publications2005.
  • Ian Sommerville, “Software Engineering”, Sixth Edition, Addison Wesley, 2000