When a software organization has completed all the development and testing of a system, it continues to the next phase, deployment. This may include installation, acceptance test, operation, and maintenance of the software system.
Software deployment activities vary substantially depending on the type of system being installed and the particular circumstances related to that system. For instance, the system may be
a replacement for an older system, thus requiring system conversion to phase out the old
a completely new system being installed for the first time
an upgrade of a real-time system requiring uninterrupted service during the deployment
part of a complex hardware and software system
requiring considerable coordination activities
Software Installation and Conversion
The initial installation of any new or replacement software system is usually done via a beta test. If the completed system will eventually be installed at numerous user sites, one of these sites is chosen as the beta test site. During the beta test period, the new system is installed on the target hardware, and system conversion activities, if required, are completed. Users then begin to use the new system. Before any software system is installed, however, the development organization should prepare a complete system installation plan and review it with the customers, the user organization, and the system operations group.
During the initial installation or the early use of a software system at a user's site, errors often surface due to unexpected aspects of the user's environment. A system failure during this time could cause serious setbacks for users, especially on critical real-time systems. Because of this, the system installation plan should cover the installation, conversion, and beta test periods, and should include prearranged agreements about
The customers, the users, and the development organization should also agree about a time during the beta test period when the software will be baselined and a formal customer test of the software, called an acceptance test, will begin. As with all other tests of the system, the acceptance test must be a planned activity that includes a test plan, test procedures, test cases, and the acceptance criteria.
During acceptance test, the system's users should attempt to perform every system activity. User training before the acceptance test is a critical success factor for a software system, as are the quality and the accuracy of the user documentation.
When the acceptance test is complete, there should be documented data about whether the system meets the customer's requirements. If the system is accepted, it officially enters the operation and maintenance phase of its life cycle. If there are multiple target user sites for this system, a schedule should be developed for deployment at those sites.
If the software system is not acceptable, the customer and the developers should agree on what changes are necessary for the system to meet the objectives. They should also agree on the proposed schedule and procedures for delivering the revised system. In some cases, an unacceptable system remains in operation at a customer's site and revisions are added to the system and tested as they become available. If the new system is a replacement system, a customer may request that the old system be reinstalled until the new system can be revised to meet stated objectives.
Software System Operation
The operation of a software system is the ongoing process of running the system. Some software systems are required to run 24 hours a day, 7 days a week; some have Mean Time Between Failure (MTBF) requirements that cannot be exceeded; and others may have specific performance tolerances within which the system must conform. As with every other phase of a software system, the operation phase should be planned and documented. Procedures for managing the operation, for evaluating the operation, and for providing information about operational problems are required.
System performance reports should be periodically scheduled and analyzed to ensure proper system operation and to monitor operational trends in the system's performance. Common software operational reports include statistics about the following aspects of the system:
system access time
data access time
The maintenance period of a software system covers customer acceptance of
the initial system to system retirement. The primary activities included in
the maintenance period are: correcting software problems, developing system
enhancements, and adapting the system to a new environment. Figure 18
illustrates the typical distribution of these maintenance activities,
determined from a survey of 487 business data processing installations.
In some cases, the maintenance period of a software system may be as long
10 to 15 years and may account for as much as 70 percent of the total system
costs. This means software maintenance should be planned early in the
development life cycle, and maintainability should be a design and
Enhancing Software Maintainability
Key development activities that can enhance the maintainability of a
software system include:
standardization of design notations for data flows, structures, algorithms,
interface specifications, pseudocode, and data dictionaries
emphasis on clarity of code and modularization through the use of
information hiding, data abstraction, and single-entry and single-exit
coding style standards including program prologues, comment lines,
indentation, parameters, and error handling
guidelines and requirements for supporting documentation such as a user
manual, a maintenance guide, an error message manual, test documentation, and
keeping all documents up-to-date
Configuration Management During Maintenance
During the maintenance phase of a software system, it is very important to
use a configuration management system to track and control both the software
and the documentation of the system. A description of change control and
configuration management is described in Step 2 of this section. Important
features of a configuration system during software maintenance include a
history of component revisions, version control by site, an accounting of the
number of errors reported, fixed and released to the field, and documentation
Software System Evolution
Over time, enhancements and adaptations may cause substantial cumulative
changes in a software system. These changes often increase the size and
complexity of a system while decreasing its flexibility. When this happens,
the maintenance of the software system can become difficult and even small
fixes or enhancements become costly. Often, a minor problem results in a major
Change Control Review Board
To help avoid these problems, system changes should be carefully regulated.
Many software organizations use a Change Control Review Board to consider and
approve all changes. The membership of this board (and the rules by which it
operates) vary depending on the nature of the software. The two primary
objectives of the board are to review all change requests and establish
priorities and constraints for making changes. In some cases, however, a
software system simply outgrows its originally planned and designed bounds. It
then becomes more cost-effective to replace the entire system than to continue
to patch the old one.