Changes are implemented in the software system by following a software maintenance process, which is known as Software Maintenance Life Cycle (SMLC).This life cycle comprises seven phases, namely, problem identification, analysis, design, implementation, system testing, acceptance testing, and delivery phase.
All the phases in SMLC evolve through four attributes, namely, input, process, control, and output. All these attributes are listed in Table
Table Attributes of SMLC
Problem identification phase
Updated design documents
Updated test documents
Updated user documents
Test preparation review report
System test phase
Acceptance test phase
We’ll be covering the following topics in this tutorial:
Problem Identification Phase
In this phase, the requests for modifications in the software are identified and assigned an identification number. Each Modification Request (MR) is then assessed to determine to which type of maintenance activity (corrective, adaptive, perfective, and preventive) the MR belongs. After classification, each MR is assigned with a priority to determine the order in which it is to be processed.
The input attribute comprises modification request. If changes are required in the software then the following set of activities is performed in the process attribute.
1. Assigning an identification number
2. Classifying MR into appropriate type of maintenance activity
3. Deciding whether to accept, reject, or evaluate the request further
4. Assigning a priority to each modification.
After the process attribute, the control attribute begins, which uniquely determines the identified MR and enters it into a repository. This is because there are different kinds of software maintenance requests and each modification required in a software system needs to be identified and stored in the repository according to its type, priority, and so on. Repository is a place of storage and consists of components such as statement of problem or modification request, requirement evaluation, type of software maintenance, initial priority, and an estimate of resources required in software maintenance. The output of this phase is a validated modification request and the process determinations that are stored in the repository.
Problem Analysis Phase
In this phase, the feasibility and scope of each validated modification request are determined and a plan is prepared to incorporate the changes in the software. The input attribute comprises validated modification request, initial estimate of resources, project documentation, and repository information.
The process attribute comprises two components, namely, feasibility, analysis and detailed analysis. A feasibility analysis is performed for an MR and a feasibility report is prepared, which contains the following information.
- Impact of the changes
- Alternative solutions including prototyping
- Analysis of conversion requirements
- Safety and security implications
- Human factors
- Short-term and long-term costs.
Detailed analysis serves the following purposes.
- Defining firm requirements for modification
- Determining the elements to be modified
- Determining safety and security issues
- Preparing a test strategy
- Devising an implementation plan.
The control attribute of this phase concentrates on the review of project documentation as well as modification request to evaluate the technical and economic feasibility. In addition, this attribute verifies that project documentation is updated according to the analysis of modification request. The time and resource estimates are verified for their accuracy in control attribute. The output of this phase comprises elements such as feasibility report for modification request, updated requirements, test strategy, detailed analysis report, and preliminary modification list.
In this phase, the modifications to be made in the software are designed. The input attribute comprises outputs produced by analysis phase (detailed analysis), project and system documentation, software’s source code, and databases.
The process attribute for design comprises the following steps.
- Identifying the affected software modules
- Modifying software module documentation (like data-flow diagrams and program design language)
- Developing test cases for the new design including safety and security issues.
- Creating regression tests
- Documenting the updated requirements
- Revising the list of modifications.
In the design phase, the control attribute performs the following functions.
- Conducting software inspection of the design in compliance with IEEE standards
- Verifying that the new design/requirement has been documented
- Verifying that the new design along with safety and security issues has been included
- Verifying that the test documentation has been modified.
The output of this phase is a refined modification list, refined detailed analysis, modified test plans, verified requirements, and the list of constraints and risks in implementation. The output provides information of detailed analysis of user requirements along with the implementation plan. This plan lists the tasks to be implemented in the implementation phase of SMLC. The design test plans are prepared according to the updated design. Generally, the quality factors that are considered before developing the software design include flexibility of design and reusability of the software code.
In this phase, the actual modifications in the software code are made, new features that support the specification of present software are added, and the modified software is installed. The input attribute comprises the source code, the output of design phase, and the modified system and project documentation.
The process attribute comprises the following subprocesses.
1. Coding and unit testing: The user requirements as identified in the design phase are implemented in the form of software code. After the software code is written, unit testing on individual modules is performed.
2. Integration: When the software code is written and all the modules are tested, the modified software modules are integrated with the existing system. After integration of the software system, integration test and regression test are performed. These tests are conducted to identify the impact on the functionality, performance, usability, and security of the modified software system. Impacts that lead to serious errors such as failure of software system are recorded so that they can be removed after identifying and understanding the source of error.
3. Risk analysis and review: In the implementation phase, the risk analysis and review are carried out periodically rather than on the completion of this phase. Risks that commonly occur are risk for data failure, provision of backup, and so on.
4. Test preparation review: This review is conducted to evaluate the review for system test in accordance with IEEE standards.
The control attribute performs the following functions.
- Conducting software inspections of the code in compliance with IEEE standards
- Ensuring that the unit and integration testing have been performed and documented
- Ensuring that test documentation such as test plan and test cases are either updated or created
- Verifying that the new software has been placed under SCM control
- Verifying that the changes in training and technical documentation have been made.
The output of this phase is in the form of updated (modified) software according to the modification request, updated design documents, updated test documents, updated user documents, and test preparation review report.
System Test Phase
In this phase, the regression testing (a type of system testing) is performed on the modified system to ensure that no new faults are introduced in the software as a result of the maintenance activity. The input attribute comprises the updated software documentation, test preparation review report, and the updated system.
In the process attribute, various types of testing such as system functional testing, interface testing, and regression testing are performed on the fully integrated system. While in the control attribute, system testing is performed. The system test is conducted with the help of a separate test function. The test function is required to record the output of the system test and determine the status of the criterion that has been established in the test plan for system testing. This information is essential to proceed to the next phase, which is acceptance testing. The output of this phase is the tested and integrated system and the test report.
Acceptance Test Phase
In this phase, acceptance testing is performed on the fully integrated system by the user or by a third party specified by the user. The objective is to detect errors and verify that the software features are according to the requirements stated in the modification request. The input attribute comprises the fully integrated system, acceptance test plans, acceptance test cases, and acceptance test procedures.
The process attribute includes the procedures for performing acceptance test at the functional level and testing the system to determine its performance and operation. The control attribute performs the following functions.
- Executing acceptance tests
- Conducting functional audit
- Reporting test results for the Functional Configuration Audit (FCA)
- Placing the acceptance test documentation under SCM control.
The output of acceptance test phase comprises an FCA report and the acceptance test report.
In this phase, the modified (or new) software system is delivered to the user. In addition, users are provided with a proper documentation consisting of manuals and help files that describe the operation of the software along with its hardware specifications. The input attribute comprises a fully tested and accepted version of the system.
The process attribute of the delivery phase comprises the following steps.
- Conducting a Physical Configuration Audit (PCA)
- Informing the users
- Making provision for the system backup
- Installing the modified system and providing training to the users.
The control attribute performs the following functions.
1. Arranging and documenting a PCA
2. Allowing users to access system materials
3. Providing a complete Version Description Document (VDD)
4. Placing contents of the delivery under SCM control.
The output of this phase is a VDD and a PCA report.