by Dinesh Thakur Category: Software Engineering

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.

                                          Phases of SMLC

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

  • Modification request (MR)
  • Assign identification number
  • Classify MR into appropriate category
  • Accept or reject change
  • Assign a priority
  • Uniquely identified modification request
  • Enter process modification  request in repository
  • Validated modification request
  • Validated determinations

Analysis phase

  • Project document
  • Repository information
  • Validated modification request
  • Feasibility study
  • Detailed analysis
  • Conduct technical review
  • Verify test strategy
  • Verify whether documentation is updated or not
  • Identify security issues
  • Feasibility report
  • Updated requirements
  • Test strategy
  • Detailed analysis report
  • Preliminary modification list

Design phase

  • Project document
  • Source code
  • Databases
  • Output of analysis phase
  • Develop test cases
  • Revise requirements
  • Revise implementation plan
  • Software inspections /reviews
  • Verify design
  • Refined modification list
  • Refined detailed analysis
  • Modified test plans

Implementation phase

  • Source code
  • Project documentation
  • Output of design phase
  • Software code
  • Unit test
  • Test preparation review
  • Software inspections/review

Updated software

Updated design documents

Updated test documents

Updated user documents

Test preparation review report

System test phase

  • Updated software documentation
  • Test preparation review report
  • Updated system
  • Functional test
  • Interfere testing
  • Test preparation review
  • Software code listings
  • Modification request
  • Test documentation
  • Tested and integrated system
  • Test report

Acceptance test phase

  • Test preparation review report
  • Fully integrated system
  • Acceptance test plans
  • Acceptance test cases
  • Acceptance test procedures
  • Acceptance test
  • Interoperability test
  • Acceptance test
  • Acceptance test report

Delivery Phase

  • Tested/accepted system
  • Installation
  • Training
  • Version description document
  • Version description document

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.

                                    Problem Identification Phase

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.

                       Problem Analysis Phase

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.

  1. Impact of the changes
  2. Alternative solutions including prototyping
  3. Analysis of conversion requirements
  4. Safety and security implications
  5. Human factors
  6. Short-term and long-term costs.

Detailed analysis serves the following purposes.

  1. Defining firm requirements for modification
  2. Determining the elements to be modified
  3. Determining safety and security issues
  4. Preparing a test strategy
  5. 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.

Design Phase

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.

                      Design Phase

The process attribute for design comprises the following steps.

  1. Identifying the affected software modules
  2. Modifying software module documentation (like data-flow diagrams and program design language)
  3. Developing test cases for the new design including safety and security issues.
  4. Creating regression tests
  5. Documenting the updated requirements
  6. Revising the list of modifications.

In the design phase, the control attribute performs the following functions.

  1. Conducting software inspection of the design in compliance with IEEE standards
  2. Verifying that the new design/requirement has been documented
  3. Verifying that the new design along with safety and security issues has been included
  4. 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.

Implementation Phase

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.

                            Implementation Phase

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.

  1. Conducting software inspections of the code in compliance with IEEE standards
  2. Ensuring that the unit and integration testing have been performed and documented
  3. Ensuring that test documentation such as test plan and test cases are either updated or created
  4. Verifying that the new software has been placed under SCM control
  5. 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.

                         System Test Phase

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.

                              Acceptance Test Phase 

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.

  1. Executing acceptance tests
  2. Conducting functional audit
  3. Reporting test results for the Functional Configuration Audit (FCA)
  4. Placing the acceptance test documentation under SCM control.

The output of acceptance test phase comprises an FCA report and the acceptance test report.

Delivery Phase

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.

                Delivery Phase

The process attribute of the delivery phase comprises the following steps.

  1. Conducting a Physical Configuration Audit (PCA)
  2. Informing the users
  3. Making provision for the system backup
  4. 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.

About Dinesh Thakur

Dinesh ThakurDinesh Thakur holds an B.C.A, MCSE, MCDBA, CCNA, CCNP, A+, SCJP certifications. Dinesh authors the hugely popular blog. Where he writes how-to guides around Computer fundamental , computer software, Computer programming, and web apps. For any type of query or something that you think is missing, please feel free to Contact us.