250 likes | 349 Views
Ch7: Software Production Process. Waterfall models. Invented in the late 1950s for large air defense systems, popularized in the 1970s Main characteristics:. Waterfall models (contd..). Feasibility study. Requirements. Design. Coding and module testing. Integration and system testing.
E N D
Waterfall models • Invented in the late 1950s for large air defense systems, popularized in the 1970s • Main characteristics:
Waterfall models (contd..) Feasibility study Requirements Design Coding and module testing Integration and system testing Delivery, deployment, and maintenance
Waterfall models (contd..) • Organizations adopting waterfall models: • Example: Military Standard (MIL-STD-2167)
Evaluation of the waterfall model • Contributions to the understanding of software process: • Characteristics of a strict waterfall model: .
Evaluation of the waterfall model (contd..) • Problems with the waterfall model:
Evaluation of the waterfall model (contd..) • Characteristics of the waterfall model potentially lead to high maintenance costs: • In summary, software evolution is not anticipated or planned.
Waterfall model with feedback Feasibility study Requirements Design Coding and module testing Integration and system testing Delivery, deployment, and maintenance
Evolutionary models • Brooks advocates building a product twice: • Evolutionary or incremental approach: • Evolutionary model has several different versions
Evolutionary models (contd..) • Evolutionary process model (Boehm): • Delivered increment: • Development strategy (Glib, 1988): • Must use waterfall process discipline.
Evolutionary models (contd..) • Incremental implementation model: Waterfall model used until the implementation phase.
Evolutionary models (contd..) • Incremental development and delivery model: Incremental approach expanded to all stages of life cycle. • Achieves finer granularity in the process. • Waterfall model is followed for different portions. • Increments developed after feedback received from the user. • Allows users to understand what they actually need leading to changes in requirements.
Evolutionary models (contd..) • Evolutionary prototype: • Evolutionary models and maintenance:
Evaluation of evolutionary models • Problems with evolutionary models: • Advantages to evolutionary models:
Transformation model • Transformation model has roots in formal specifications. • Views software development as a sequence of steps that transform a specification into an implementation: • Transformation may be done manually or by a software engineer. • Still a theoretical reference model.
Transformation model (contd..) • Two main stages: • Requirements analysis: • Optimization: • Transformation controlled by software engineering • Before transformation, specifications are verified against user expectations. • Transformation model supported by software development environment. Tools for:
Transformation model (contd..) • Major advantage over waterfall model: • Problems: • Transformation model has been studied for small programs as a way of proving correctness.
Spiral model • Purpose: • Metamodel: • Guiding principles: • Risk: • Risk management (Boehm):
Spiral model (contd..) • Focuses on identifying and eliminating high-risk problems by careful process design. • Cyclic model with four stages: • Allows unstated requirements to become part of next specification cycle:
Assessment of process models • Historical evolution: • Waterfall: • Evolutionary: • Transformation: • Spiral:
Assessment of process models (contd..) • No detailed comparison of models. • Initial comparison of waterfall vs. evolutionary shows: • Flexibility needed to reduce risks • Waterfall may be useful as a reference structure for documentation
Assessment of process models (contd..) • In general, waterfall model is too rigid and should be replaced by a model that adopts some features of evolutionary approach. • Factors influencing evolution of software production process
Software evolution: Legacy software • Existing software must evolve because requirements change • Re-engineering • Reverse engineering