410 likes | 746 Views
Chapter 2 SW Process Models. Objectives. Understand various process models Understand the pros and cons of each model Evaluate the applicability of each model for a certain type of software development. Overview. Why SW process models? What are SW process models? The waterfall model
E N D
Objectives • Understand various process models • Understand the pros and cons of each model • Evaluate the applicability of each model for a certain type of software development
Overview • Why SW process models? • What are SW process models? • The waterfall model • Evolutionary models • The Spiral • CBSE • Which is best?
Why SW process models? • Some problems with ad-hoc development • Difficult to distinguish between tasks and therefore some important tasks may be ignored • Problem if multiple people are involved, as it is not easy to review their work. • If problems are found late, the more costly it is to fix. • Division of work • Helps in managing the process
What is it? • A SW process is a structured set of activities required to develop a software system • Specification; • Design and Implementation; • Validation; • Evolution. • A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective. • May take months or years to complete.
SW Process Models • Waterfall model • Separate and distinct phases of specification and development. • Evolutionary models • Specification, development and validation are interleaved. • Exploratory development • The incremental model • The prototyping model • The spiral model • Component-based development model • The system is assembled from existing components
The Waterfall Model • Oldest model • Called “linear sequential model” • Most widely used model for SW engineering • Documentation is produced at each stage.
The Waterfall model phases • Requirements analysis and definition • System and software design • Implementation and unit testing • Integration and system testing • Operation and maintenance
The Waterfall model Disadvantages • Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements. • Only appropriate when the requirements are well-understood and changes will be fairly limited during the design process. • The waterfall model is mostly used for large systems engineering projects.
Evolutionary Models • The Exploratory Model • Objective is to work with customers and to evolve a final system from an initial outline specification. Should start with well-understood requirements and add new features as proposed by the customer. • The Incremental Model • Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality. • The Prototyping Model • Objective is to understand the system requirements. Should start with poorly understood requirements to clarify what is really needed. • The Spiral Model • Process is represented as a spiral rather than as a sequence of activities with backtracking
The Exploratory Model • Problems • Lack of process visibility; • Systems are often poorly structured; • Applicability • For small or medium-size interactive systems; • For parts of large systems (e.g. the user interface); • For short-lifetime systems.
The Incremental Model • User requirements are prioritised and the highest priority requirements are included in early increments. • Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve.
The Incremental Model- Advantages • Customer value can be delivered with each increment so system functionality is available earlier. • Early increments act as a prototype to help elicit requirements for later increments. • Lower risk of overall project failure. • The highest priority system services tend to receive the most testing.
The Incremental Model- Disadvantages • Increments should be relatively small (20,000 lines of code) • Can be difficult to map the customer’s requirements onto increments of the right size • Hard to identify common functions
The Prototyping Model • When a customer defines a set of general objectives for a software but does not identify detailed input, processing, or output requirement. • It consists of the iterating phases: • Requirements gathering • Design and build SW prototype • Evaluate prototype with customer • Refine requirements
The Prototyping Model • Advantages • Users get a feel for the actual system • Developers get to build something immediately • Specifications can be developed incrementally • Disadvantages • The developer may make implementation compromises in order to get a prototype working quickly. • The process in not visible (few documents that reflect every version of the system) • Systems poorly structured
The Spiral Model • Defined by Barry Boehm in his 1988 article A Spiral Model of Software Development and Enhancement. • Process is represented as a spiral rather than as a sequence of activities with backtracking. • Each loop in the spiral represents a phase in the process. • Suitable for large, expensive and complicated projects
The Spiral Model • Objective setting • Specific objectives for the phase are identified. • Risk assessment and reduction • Risks are assessed and activities put in place to reduce the key risks. • Development and validation • A development model for the system is chosen which can be any of the generic models. • Planning • The project is reviewed and the next phase of the spiral is planned.
The Spiral Model • Risk driven process model • Different risk patterns can lead to choosing different process models • What is a risk? • Situations or possible events that may cause a project to fail to meet its goal. • Example risks: • Experienced staff leave the project • Hardware which is essential for the system will not be delivered on schedule • (more about risks in Chapter 3)
The Spiral Model- Advantages • Risks are explicitly assessed and resolved throughout the process. • Software engineers can start working on the project earlier rather than wading through a lengthy early design process.
The Spiral Model- Disadvantages • Requires highly skilled people in risk analysis and planning • Requires more time, and is more expensive • Estimates of budget and time are harder to judge at the beginning of the project since the requirements evolve through the process
Component Based Software Engineering (CBSE) • Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systems. • Process stages • Component analysis; • Requirements modification; • System design with reuse; • Development and integration. • This approach is becoming increasingly used as component standards have emerged.
Component Based Software Engineering (CBSE) • Advantages: • Reduce amount of software to be developed • Reduce costs and risks • Faster delivery • Disadvantages: • Requirements compromises, system does not meet real needs of users • Control over system evolution is lost
Which model is best? • The choice of a model depends on the project circumstances and requirements. • A combination of models is used sometimes get the benefits of more than one model. • Criteria for evaluating models: • Risk management • Quality / cost control • Visibility of progress • Early system functionality • Customer involvement and feedback
Model/Criteria Matrix • Rate each model 1-5 in each of the categories shown:
Model/Criteria Matrix Rate each model 1-5 in each of the categories shown: 32
Model/Criteria Matrix Rate each model 1-5 in each of the categories shown: 33
Model/Criteria Matrix Rate each model 1-5 in each of the categories shown: 34
Model/Criteria Matrix Rate each model 1-5 in each of the categories shown: 35
Model/Criteria Matrix Rate each model 1-5 in each of the categories shown: 36
Assignment 1 • Please check the weblog and download Assignment 1.