Lecture 6
Lecture 6
CS-251
Lecture 6
• There is growing recognition that software, like all complex systems, evolves over a
period of time.
• Business and product requirements often change as development proceeds, making a
straight path to an end product unrealistic; tight market deadlines make completion of a
comprehensive software product impossible, but a limited version must be introduced to
meet competitive or business pressure; a set of core product or system requirements is
well understood, but the details of product or system extensions have yet to be defined.
• In these and similar situations, software engineers need a process model that has been
explicitly designed to accommodate a product that evolves over time.
2
Evolutionary Software Process Models
4
The Incremental Model
• When an incremental model is used, the first increment is often a core product.
• That is, basic requirements are addressed, but many supplementary features (some
known, others unknown) remain undelivered.
• The core product is used by the customer (or undergoes detailed review). As a result of
use and/or evaluation, a plan is developed for the next increment.
• The plan addresses the modification of the core product to better meet the needs of the
customer and the delivery of additional features and functionality.
• This process is repeated following the delivery of each increment, until the complete
product is produced.
5
The Incremental Model
6
The Incremental Model
• The incremental process model, like prototyping and other evolutionary
approaches, is iterative in nature.
• But unlike prototyping, the incremental model focuses on the delivery of
an operational product with each increment.
• Early increments are stripped-down versions of the final product, but they
do provide a capability that serves the user and also provides a platform
for evaluation by the user.
7
The Incremental Model
• Incremental development is particularly useful when staff is unavailable for a complete
implementation by the business deadline that has been established for the project.
• Early increments can be implemented with fewer people. If the core product is well
received, then additional staff (if required) can be added to implement the next
increment.
• In addition, increments can be planned to manage technical risks.
• For example, a major system might require the availability of new hardware that is under
development and whose delivery date is uncertain. It might be possible to plan early
increments in a way that avoids the use of this hardware, thereby enabling partial
functionality to be delivered to end-users without inordinate delay.
8
Advantages of the Incremental Model
• Generates working software quickly and early during the software life cycle.
• This model is more flexible – less costly to change scope and requirements.
• It is easier to test and debug during a smaller iteration.
• In this model customers can respond to each build.
• Lowers initial delivery cost.
• Easier to manage risk because risky pieces are identified and handled during
its iteration.
9
Advantages of the Incremental Model
• The feedback from early increments improves the later stages.
• The possibility of changes in requirements is reduced because of the
shorter time span between the design of a component and its delivery.
• Users get benefits earlier than with a conventional approach.
• Early delivery of some useful components improves cash flow because
you get some return on investment early on.
10
Advantages of the Incremental Model
• It’s ideal for those projects in which sufficient manpower is not available to
meet difficult project deadlines.
• Smaller sub-projects are easier to control and manage.
• ‘Gold-plating,’ that is the requesting of features that are unnecessary or less
used can be avoided.
• The project can be temporarily abandoned if more urgent work crops up.
• Job satisfaction is increased for developers who see their labors bearing fruit
at regular, short intervals.
11
Limitation of the Incremental Model
• Software breakage, that is, later increments may require modifications to
earlier increments
• Programmers may be more productive working on one large system than
on a series of smaller ones.
• Some problems are difficult to divide into functional units (modules),
which can be incrementally developed and delivered.
12
Limitation of the Incremental Model
• Needs good planning and design.
• Needs a clear and complete definition of the whole system before it can be
broken down and built incrementally.
• Total cost is higher than the Waterfall Model.
13
When to use the Incremental
Model
• This model can be used when the requirements of the complete system are
clearly defined and understood.
• Major requirements must be defined; however, some details can evolve with
time.
• There is a need to get a product to the market early.
• A new technology is being used
• Resources with needed skill set are not available
• There are some high-risk features and goals.
14