A software house produces a software package for the insurance industry. Purchases of the package have formed a very active user group which has lobbied for a particular change to be made to the software to improve the functionality and usability of the software.
(a) Briefly explain the following terms:
(i.) Corrective maintenance;
(ii.) Adaptive maintenance;
(iii.) Perfective maintenance.
(b) Briefly explain the meaning and purpose of a user group
The software house has an internal quality assurance process for implementing software changes
Explain each of the following two stages of an internal quality assurance process:
(c) Unit testing.
(d) System testing.
(a) (i) Corrective maintenance
Corrective maintenance addresses two sets of faults. Firstly, the correction of programming errors which have caused the software to fail. Secondly, the correction of system functions that do not perform to the agreed user specification. Hence corrective maintenance is concerned with making the software perform as it should have done in the first place. It should lead to a robust system that supports the user requirements signed off at the start of the project.
(ii) Adaptive maintenance
Adaptive maintenance is concerned with changes required to make the software support new or changed business circumstances. These changes will emerge throughout the project as a result of changes in the business process, changes in the priorities of users and external influences such as new government legislation. Adaptive maintenance is concerned with making sure that the software continues to robustly support the user requirements during the lifetime of the system.
For example, the User Group may request adaptive maintenance to improve the functionality of the software.
(iii) Perfective maintenance
Perfective maintenance attempts to make the software perform more effectively. These changes may include alterations in the user interface (to make the system easier to use) and the integration of new program sub-routines (to make the software run quicker). Perfective maintenance does not change the functionality of the software, but it should make that functionality more accessible and efficient. For example, the User Group requires perfective maintenance to improve the usability of the software.
(b) There is a tradition of individual users of software products banding together to exchange information and experience of using a particular package. In many instances this is translated into a formal User Group which acts as a forum for exchanging information and experience between members as well as forming a focus for lobbying the software developer to develop new features and correct current problems. In many
instances the activities of the User Group are encouraged and financed the software developer as it provides a convenient and coherent focus for defining the features that will further enhance their product. Most User Groups issue newsletters and hold regular conferences, which allow new and prospective users of the software to evaluate the software developer and the products it offers.
(c) Unit testing
Programmers usually perform unit testing. Programmers receive specifications from systems designers and develop programs to meet these requirements. Once they are sufficiently confident about their programs, they undertake a set of formal tests. These are usually designed to:
o Ensure that every line of the program has been executed and is working properly
o Ensure that data stored the program is accurately placed in the correct field in the database
o Ensure that interactions with other programs are working correctly
o Ensure that error conditions are handled correctly
Unit testing is performed explicitly on the program code and structure. It is often termed
‗white box testing‘ because it is concerned with inspecting the internal logic of the program.
(d) System testing
The analysts who have developed the functional specification and specified the design of the system usually perform system testing. System testing is often termed ‗black box testing‘ because the testing is concerned with proving that certain inputs produce predicted outputs. It is not concerned with proving the internal logic of the programs that cause that transformation to take place. This has already been done in unit testing. Hence system testing is concerned with ensuring that the system meets the functional requirements defined in the requirements specification. It also considers the general usability of the software, perhaps against agreed Style Guides. In some organizations, system testing includes load or stress testing which tests the system under operational conditions, ensuring that it can still deliver the required performance when handling operational volumes the agreed number of users.