CS 477 Lecture Notes

Week Five, Tuesday: Pre-Midterm Exam Review

Handout

"Migration of Legacy Software Systems from Unix to Windows NT," by Eugene J. Rose. Systems that are successful become "legacy systems." As the computing environment changes around these legacy systems, they must change to continue to survive. "Migration" is the move of a legacy system from one environment to another. This paper discusses the system migration experience of one software team at TRW.

Review Topics

The aim of software engineering is to maximize value to the software customer (by delivering fault-free products on time and within budget). Several aspects of software engineering are frequently neglected within software production organizations. These aspects include maintenance, documentation, verification, metrics, process definition and planning, and requirements acquisition.

Maintenance

Software production has two components, development and maintenance. Software engineers must perform cost-benefit analysis to maximize value to their customers. Maintenance costs comprise approximately two-thirds of total software costs. Software production organizations neglect maintenance at their peril. Maintenance can be enhanced by strengthening maintenance organizations by enhancing salaries to recruit competent maintainers and by considering maintenance issues in requirements, specification, and design phases.

Documentation

It's a fact that most programmers and engineers dislike documentation tasks. Thus, these tasks are often performed as after-thoughts (or not at all) in many organizations, with software quality and maintainability suffering as a result. Software engineers and managers must strive to incorporate documentation processes into every phase of the software life-cycle.

Verification

Like documentation, verification processes should be integrated into all phases of software production. Verify requirements, specifications, etc. Faults caught in early phases are faults that do not impact later phases. The later in the life-cycle that a fault is detected, the higher is the fault detection and correction cost.

Metrics

Processes cannot be optimized if they aren't measured. The measured process can be corrected.

Processes

If the process is good, so will be the product. While a good product can occasionally arise from a bad process, having good (documented, measured, verified) processes ensures repeatably good performance.


Focusing on processes isn't everything, but it's still one inportant aspect of software engineering.

Requirements

Providing value to the customer means satisfying the customer's needs. In order to obtain requirements for a product that meets the customer's needs the software engineering team must first understand the customer's business. That means interviewing, observing, and analyzing the customer's business processes. The customer cannot be expected to understand software engineering. Requirements such as product extensibility and maintainability must be originated by the development team.


This page established February 4, 1998; last updated February 4, 2000.