Software Maintenance: Types, Techniques, and Management

Types of Maintenance

Perfective: Actions taken to improve internal quality systems, including restructuring code, clarifying system definitions, and optimizing performance and efficiency.

Evolutionary: Additions, modifications, and deletions necessary in a software product to accommodate expansions or changes in user needs.

Adaptive: Changes addressing the environments in which the system operates, such as hardware configuration changes, software updates, database managers, and communications.

Corrective: Changes required to correct errors in the software product.

Technical Support

Software engineering techniques provide solutions to address maintenance and lower its impact on life cycle costs.

Technical Solutions

1. Reverse Engineering: Analyzing a system to identify its components and their relationships and to create representations of the system in another form or at a higher abstraction level.

2. Reengineering: Modifying a software product or its components, using existing system analysis and reverse engineering for reconstruction, with engineering tools to enhance maintainability, reusability, comprehension, and evolution.

3. Software Restructuring: Changing the representation of a software product while maintaining the same abstraction level.

Objectives of these Techniques

  • Provide methods to rebuild software through reprogramming, re-documenting, redesigning, or reworking product features.

Direct Engineering: Traditional software development.

Reverse Engineering: The process of analyzing a system to identify its components, interrelationships, and create representations in another form or higher abstraction level.

Reengineering: Examining and altering a system to reconstruct a new form and implementing it.

Restructuring: Modifying software to enhance understandability and ease of change.

Remodularization: Changing a system’s modular structure to follow structured design principles.

Analysis of Maintainability: Maintenance often focuses on relatively few system modules.

Display: The longest process for understanding software.

Measurement and Analysis: Important technologies for studying program properties.

Analysis of Cases

To perform any type of maintenance, consider:

Maintenance Costs

  1. Development opportunities are lost.
  2. Customer dissatisfaction arises when repair requests are not addressed promptly.
  3. Hidden errors introduced during maintenance reduce overall product quality.
  4. Impact on other development projects when resources are diverted to maintenance.

Maintenance Difficulties

Technical and Practical Proposals for EV Metrics: Cost-benefit analysis, Use Case, Cataloging, Class Diagram, Functional Decomposition Diagram, Data Flow Diagram, Object Interaction Diagram, Diagram Representation, Impact on the Organization-Matrix, Extended Entity/Relationship Model, Planning, Presentation-Workshops.

Management Processes and Change Management are key to system evolution and development, enabling control over versions and changes throughout the life cycle.

Main Activities in Change Management

  • Introduce change requests.
  • Register requests and provide status reports.
  • Provide an audit log of changes.
  • Provide input to project management.
  • Impact analysis determines the scope of changes required for implementation.

Major Activities of Impact Assessment

  • Assess change requests on existing systems, other systems, hardware, data structures, etc.
  • Develop a preliminary resource estimate.
  • Document the scope of change and update the request.

Maintenance Management

Software Maintenance: All activities necessary to provide financial and operational support to the software system, conducted both before and after delivery.

Pre-delivery Activities

Include planning for post-delivery operations, support, and logistics determination.

Post-delivery Activities

Include software modification, user training, and help desk operation.