MIS 495 -- Dr. Reithel
Chapter 2

The four types of Maintenance
Correction: Corrective maintenance changes the software to correct defects.
Adaptation: Adaptive maintenance results in modification to the software to accomodate changes to its external environment.
Enhancement: Perfective maintenance extends the software beyond int original functional requirements.
Prevention: Preventive maintenance (often called software reengineering) must be conducted to enable the software to serve the needs of its end users. This makes computer programs so that they can be more easily corrected, adapted, and enhanced.

Key Process Areas (KPA's)

The following KPA's should be achieved at each process maturity level:
Process Maturity Level 2
Software configuration management
Software quality assurance
Software subcontract management
Software project tracking and oversight
Software project planning
Requirements management

Process Maturity Level 3
Peer Reviews
Intergroup coordination
Software product engineering
Integrated software management
Training program
Organization process definition
Organization process focus

Process Maturity Level 4
Software quality management
Quantitative process management

Process Maturity Level 5
Process change management
Technology change management
Defect prevention

Software Process Models

Linear Sequential Model: This model is also called the 'classic life cycle' or 'waterfall model', and suggests a systematic, sequential approach to software development. It is the oldest model and suggests that software development begins at the system level and progresses through analysis, design, coding, testing, and maintenance. Its basic steps are system/information engineering, requirements analysis, design, coding, testing, and maintenance.

The Prototyping Model: The prototyping paradigm begins with requirements gathering and "defining the rules" between the customer and developer. After the requirements are known, a 'quick design' occurs, focusing on a representation of the visible aspects of the software. The prototype can eventually become the first system, and has the following steps, which often repeat themselves: Listen to customer, build/revise mock-up, customer test-drives mock-up.

The RAD Model: An extremely short development cycle is the emphasis of the linear sequential software development process known as RAD (Rapid Application Development). RAD uses a component based construction approach that encompasses the following phases: business modeling, data modeling, process modeling, application generation, testing and turnover. Not all types of systems are appropriate for RAD development. Among these are systems that cannon be properly modularized and system with high technical risks.

The Incremental Model: This model combines the elements of the linear sequential model with the iterative philosophy of prototyping. The incremental model applies linear sequences "in a staggered fashion" as time passes, with each sequence producing a deliverable 'increment' to the original system, also known as the core product.

The Spiral Model: The spiral model is an evolutionary software process model that combines the iterative nature of prototyping with the controlled and systematic aspects of the linear sequential model. Software is developed in a series of rapid incremental releases. The spiral model is divided into a number of framework activities (or task regions) that are populated by a number of work tasks that are adapted to the characteristics of the current project. Following are some example task regions: customer communication, planning, risk analysis, engineering, construction and release, and customer evaluation.

The Component Assembly Model: This object-oriented model incorporates many of the spiral model's characteristics, however, it composes applications from prepackaged software components called classes. This model leads to high reusability, reductions in cycle time, and lower project costs. An iteration in this model might include the following: identify candidate components, look up components in library, extract components if available, build components if unavailable, put new components in library, and construct nth iteration of system.

The Concurrent Development Model: Also referred to as concurrent engineering, it can be represented schematically as a series of major technical activities, tasks, and their associated states. This model is often used as a method for developing client/server applications, because a client/server system is composed of a set of functional components. The concurrent model defines a network of activities, as opposed to confining software engineering activities to a sequence of events.

The Formal Methods Model: Formal methods ,also called cleanroom software engineering, enable the software engineer to specify, develop, and verify a computer-based system through the application of rigorous mathematical notation. Formal methods provide a mechanism for eliminating problems such as ambiguity, incompleteness, and inconsistency. The formal method presents problems of its own, however, as it is viewed as time-consuming, expensive, difficult to use, and it requires extensive training.

Fourth Generation Techniques: Fourth generation techniques (4GT) represent a broad set of software tools that have one thing in common: "Each enables the software engineer to specify some characteristic of software at a high level." Then, based on the developer's specification, the tool generates the source code. 4GT provides a dramatic decrease in development time and improved productivity, but they are known to produce massive, inefficient blocks of code. 

Suggested links for further readings
European SPI Initiative
NASA Software Engineering Lab
Software Engineering Institute
Software Engineering Lab, EPFL
Software Engineering Web Sites
Software Productivity Center, Canada
Software Productivity Consortium
Useful source of software engineering information (including quarterly newsletter)
Software Engineering Research Center
FAQ's from newsgroup 'comp.software-eng'
List of WWW references relavant to the software process

Last Modified: Wednesday, 6-Jan-1999 9:30:00 CDT
Copyright © 1997-1999 University of Mississippi. All rights reserved.
Comments: reithel@bus.olemiss.edu