Ch2 Handouts
Ch2 Handouts
There are separate identified phases in the waterfall The waterfall model
model: ▪ Plan-driven model. Separate and distinct phases of specification
▪ Requirements analysis and definition (system services, constraints and development.
and goals)
Incremental development
▪ System and software design (h/w or s/w ?)
▪ Specification, development and validation are interleaved. May
▪ Implementation and unit testing (each units meets its specification?) be plan-driven or agile.
▪ Integration and system testing
Reuse-oriented software engineering
▪ Operation and maintenance (longest life cycle phase, correcting errors)
▪ The system is assembled from existing components. May be
The main drawback of the waterfall model is the difficulty plan-driven or agile.
of accommodating change after the process is
underway. In principle, a phase has to be complete
before moving onto the next phase.
Chapter 2 Software Processes 8 Chapter 2 Software Processes 6
Incremental development benefits Waterfall model problems
The cost of accommodating changing customer Inflexible partitioning of the project into distinct stages
requirements is reduced. makes it difficult to respond to changing customer
▪ The amount of analysis and documentation that has to be requirements.
redone is much less than is required with the waterfall model. ▪ Therefore, this model is only appropriate when the requirements
It is easier to get customer feedback on the development are well-understood and changes will be fairly limited during the
design process.
work that has been done.
▪ Few business systems have stable requirements.
▪ Customers can comment on demonstrations of the software and
see how much has been implemented. The waterfall model is mostly used for large systems
engineering projects where a system is developed at
More rapid delivery and deployment of useful software to
several sites.
the customer is possible.
▪ In those circumstances, the plan-driven nature of the waterfall
▪ Customers are able to use and gain value from the software
model helps coordinate the work.
earlier than is possible with a waterfall process.
Chapter 2 Software Processes 11 Chapter 2 Software Processes 9
The process of establishing what services are required Based on systematic reuse where systems are
and the constraints on the system’s operation and integrated from existing components
development.
Process stages
Requirements engineering process
▪ Feasibility study
• Is it technically and financially feasible to build the system?
▪ Requirements induction and analysis
• What do the system stakeholders require or expect from the system?
▪ Requirements specification
• Defining the requirements in detail Reuse is now the standard approach for building many
▪ Requirements validation types of business system
• Checking the validity of the requirements ▪ Reuse covered in more depth in Chapter 16.
Chapter 2 Software Processes 15 Chapter 2 Software Processes 13
Software is inherently flexible and can change. The process of converting the system specification into
an executable system.
Software must evolve with changing business needs.
Software design
▪ Design a software structure that realises the specification;
Implementation
▪ Translate this structure into an executable program;
The activities of design and implementation are closely
related and may be inter-leaved.
May be based on rapid prototyping languages or tools Change is inevitable in all large software projects.
May involve leaving out functionality ▪ Business changes lead to new and changed system
requirements
▪ Prototype should focus on areas of the product that are not well-
▪ New technologies open up new possibilities for improving
understood;
implementations
▪ Error checking and recovery may not be included in the
▪ Changing platforms require application changes
prototype;
▪ Focus on functional rather than non-functional requirements Change leads to rework so the costs of change include
such as reliability and security both rework (e.g. re-analysing requirements) as well as
the costs of implementing new functionality
Rather than deliver the system as a single delivery, the A prototype is an initial version of a system used to
development and delivery is broken down into demonstrate concepts and try out design options.
increments with each increment delivering part of the
Benefits of Prototyping
required functionality.
▪ Improved system usability
Instead of giving the whole software at once, we make it ▪ A closer match to users’ real needs
in smaller parts. We start with the most important parts ▪ Improved design quality
first. Once we start working on a part, we don't change ▪ Improved maintainability
its plan, but we can still plan for future parts. ▪ Reduced development effort
Boehm's spiral model is a way to develop software by Customer value can be delivered with each increment so
going through cycles, like a spiral. system functionality is available earlier.
Each cycle involves planning, risk analysis, engineering, Early increments act as a prototype to help elicit
and evaluation. This helps manage risks and improve requirements for later increments.
the software step by step.
Lower risk of overall project failure.
The highest priority system services tend to receive the
most testing.