Uploaded by asadmalick287

chapter-02--converted

advertisement
Chapter 2
Process Models
4 April 2021
Prepared By: Najaf Ali Khan Balouch
1
What / who / why is Process Models?
• What: Go through a series of predictable steps--- a road map that helps you
create a timely, high-quality results.
• Who: Software engineers and their managers, clients also. People adapt the
process to their needs and follow it.
• Why: Provides stability, control, and organization to an activity that can if left
uncontrolled, become quite chaotic. However, modern software engineering
approaches must be agile and demand ONLY those activities, controls and work
products that are appropriate.
• What Work products: Programs, documents, and data
• What are the steps: The process you adopt depends on the software that you
are building. One process might be good for aircraft avionic system, while an
entirely different process would be used for website creation.
• How to ensure right: A number of software process assessment mechanisms
that enable us to determine the maturity of the software process. However,
the quality, timeliness and long-term viability of the software are the best
indicators of the efficacy of the process you use.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
2
Definition of Software Process
• A framework for the activities, actions, and tasks that are required
to build high-quality software.
• SP defines the approach that is taken as software is engineered.
• Is not equal to software engineering, which also encompasses
technologies that populate the process– technical methods and
automated tools.
3
4 April 2021
Prepared By: Najaf Ali Khan Balouch
• As we discussed before, a generic process framework for software
engineering defines five framework activities-communication,
planning, modeling, construction, and deployment.
• In addition, a set of umbrella activities- project tracking and control,
risk management, quality assurance, configuration management,
technical reviews, and others are applied throughout the process.
• Next question is: how the framework activities and the actions and
tasks that occur within each activity are organized with respect to
sequence and time? See the process flow for answer.
4
4 April 2021
Prepared By: Najaf Ali Khan Balouch
Process Flow
• process flow—describes how the framework activities and the actions
and tasks that occur within each framework activity are organized
with respect to sequence and time and is illustrated in Figure 2.2.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
5
Process Flow…..
• A linear process flow executes each of the five framework activities in
sequence, beginning with communication and culminating with deployment .
• An iterative process flow repeats one or more of the activities before
proceeding to the next .
• An evolutionary process flow executes the activities in a “circular” manner.
Each circuit through the five activities leads to a more complete version of the
software.
• A parallel process flow executes one or more activities in parallel with other
activities
4 April 2021
Prepared By: Najaf Ali Khan Balouch
6
Process Flow
4 April 2021
Prepared By: Najaf Ali Khan Balouch
7
Small project
• For a small software project requested by one person (at a remote location) with simple,
straightforward requirements, the communication activity might encompass little more than a
phone call with the appropriate stakeholder. Therefore, the only necessary action is phone
conversation, and the work tasks (the task set) that this action encompasses are:
• Make contact with stakeholder via telephone.
. Discuss requirements and take notes.
• Organize notes into a brief written statement of requirements.
. E-mail to stakeholder for review and approval.
• If the project was considerably more complex with many stakeholders, each with a different set
of (sometime conflicting) requirements, the communication activity might have six distinct
actions (described in Chapter 5):
• inception,
• elicitation,
• Elaboration
• , negotiation,
• specification,
• and validation.
• Each of these software engineering actions would have many work tasks and a number of
distinct work products.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
8
Identifying a Task Set
• A task set defines the actual work to be done to accomplish the
objectives of a software engineering action.
• Each software engineering action (e.g., elicitation, an action associated
with the communication activity) can be represented by a number of
different task sets—each a collection of software engineering work tasks,
related work products, quality assurance points, and project milestones.
You should choose a task set that best accommodates the needs of the
project and the characteristics of your team. This implies that a software
engineering action can be adapted to the specific needs of the software
project and the characteristics of the project team.
• A list of the task to be accomplished(Choose a task set that best accommodates the
needs of the project and the characteristics of team)
• A list of the work products to be produced
• A list of the quality assurance filters to be applied
4 April 2021
Prepared By: Najaf Ali Khan Balouch
9
• A task set defines the actual work to be done to accomplish the objectives of
a software engineering action. For example, elicitation (more commonly
called “requirements gathering”) is an important software engineering
action that occurs during the communication activity.
• The goal of requirements gathering is to understand what various
stakeholders want from the software that is to be built. For a small, relatively
simple project, the task set for requirements gathering might look like this:
• 1. Make a list of stakeholders for the project.
• 2. Invite all stakeholders to an informal meeting.
• 3. Ask each stakeholder to make a list of features and functions required.
• 4. Discuss requirements and build a final list.
• 5. Prioritize requirements.
• 6. Note areas of uncertainty.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
10
Large Project
• For a larger, more complex software project, a different task set would be required. It
might encompass the following work tasks:
• 1. Make a list of stakeholders for the project.
• 2. Interview each stakeholder separately to determine overall wants and needs.
• 3. Build a preliminary list of functions and features based on stakeholder input.
• 4. Schedule a series of facilitated application specification meetings.
• 5. Conduct meetings.
• 6. Produce informal user scenarios as part of each meeting.
• 7. Refine user scenarios based on stakeholder feedback.
• 8. Build a revised list of stakeholder requirements.
• 9. Use quality function deployment techniques to prioritize requirements.
• 10. Package requirements so that they can be delivered incrementally.
• 11. Note constraints and restrictions that will be placed on the system.
• 12. Discuss methods for validating the system. Both of these task sets achieve
“requirements gathering,” but they are quite different in their depth and formality. The
software team chooses the task set that will allow it to achieve the goal of each action and
still maintain quality and agility.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
11
Process Patterns
• Every software team encounters problems as it moves through the
software process. It would be useful if proven solutions to these
problems were readily available to the team so that the problems
could be addressed and resolved quickly.
• A process pattern1 describes a process-related problem that is
encountered during software engineering work
• identifies the environment in which the problem has been
encountered.
• suggests one or more proven solutions to the problem.
• Stated in more general terms, a process pattern provides you with a
template [Amb98]—a consistent method for describing problem
solutions within the context of the software process. By combining
patterns, a software team can solve problems and construct a
process that best meets the needs of a project.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
12
• Patterns can be defined at any level of abstraction.2 In some cases, a
pattern might be used to describe a problem (and solution)
associated with a complete process model (e.g., prototyping).
• In other situations, patterns can be used to describe a problem (and
solution) associated with a framework activity (e.g., planning) or an
action within a framework activity (e.g., project estimating).
• Ambler [Amb98] has proposed a template for describing a process
pattern:
4 April 2021
Prepared By: Najaf Ali Khan Balouch
13
◼proposed a template for describing a process pattern:
◼Pattern Name.
The pattern is given a meaningful name describing it
within the context of the software process.
◼Forces.
The environment in which the pattern is encountered and
the issues that make the problem visible and may affect
its solution.
◼Type.
The pattern type is specified. There are three types:
4 April 2021
Prepared By: Najaf Ali Khan Balouch
14
Process Pattern Types
• Stage Pattern . Defines a problem associated with a framework
activity for the process. Since a framework activity encompasses
multiple actions and work tasks, a stage pattern incorporates multiple
task patterns (see the following) that are relevant to the stage
(framework activity)..
◼An example of a stage pattern might be Establishing Communication. This
pattern would incorporate the task pattern Requirements Gathering and
others.
◼Task patterns—defines a problem associated with a software
engineering action or work task and relevant to successful
software engineering practice(e.g., Requirements Gathering is a task pattern).
◼Phase patterns—define the sequence of framework activities that
occur with the process, even when the overall flow of activities
is iterative in nature. (An example of a phase pattern might be Spiral Model or Prototyping)
4 April 2021
Prepared By: Najaf Ali Khan Balouch
15
Process Assessment and Improvement
• Software process cannot guarantee that software will be delivered
on time, meet the needs, or has the desired technical
characteristics. However, the process can be assessed to ensure that
it meets a set of basic process criteria that have been shown to be
essential for a successful software engineering.
• In addition, the process itself can be assessed to ensure that it
meets a set of basic process criteria that have been shown to be
essential for a successful software engineering.
• A number of different approaches to software process assessment
and improvement have been proposed over the past few decades:
4 April 2021
Prepared By: Najaf Ali Khan Balouch
16
Process Assessment and Improvement
• Standard CMMI Assessment Method for Process Improvement (SCAMPI) —
provides a five step process assessment model that incorporates five phases:
initiating, diagnosing, establishing, acting and learning.
• CMM-Based Appraisal for Internal Process Improvement (CBA IPI)—provides a
diagnostic technique for assessing the relative maturity of a software organization;
uses the SEI CMM as the basis for the assessment
• —The SPICE (ISO/IEC15504) standard defines a set of requirements for software
process assessment. The intent of the standard is to assist organizations in
developing an SPICEobjective evaluation of the efficacy of any defined software
process.
• ISO 9001:2000 for Software—a generic standard that applies to any organization
that wants to improve the overall quality of the products, systems, or services that
it provides. Therefore, the standard is directly applicable to software organizations
and companies.
Prepared By: Najaf Ali Khan Balouch
4 April 2021
17
Prescriptive Process Models
• Prescriptive process models advocate an orderly approach to
software engineering
That leads to a few questions …
• If prescriptive process models strive for structure and order, are they
inappropriate for a software world that thrives on change?
• Yet, if we reject traditional process models (and the order they imply)
and replace them with something less structured, do we make it
impossible to achieve coordination and coherence in software work?
4 April 2021
Prepared By: Najaf Ali Khan Balouch
18
1. The Waterfall Model
Communication
project init iat ion
requirement gat hering
4 April 2021
Planning
estimating
scheduling
tracking
Modeling
analysis
design
Prepared By: Najaf Ali Khan Balouch
Construction
code
test
Deployment
delivery
support
f eedback
19
The Waterfall Model…..
• There are times when the requirements for a problem are well understood—
when work flows from communication through deployment in a reasonably
linear fashion. This situation is sometimes encountered when well-defined
adaptations or enhancements to an existing system must be made (e.g., an
adaptation to accounting software that has been mandated because of
changes to government regulations). It may also occur in a limited number of
new development efforts, but only when requirements are well defined and
reasonably stable.
• The waterfall model, sometimes called the classic life cycle, suggests a systematic,
sequential approach to software development that begins with customer specification
of requirements and progresses through planning, modeling, construction, and
deployment, culminating in ongoing support of the completed software .
• The waterfall model is the oldest paradigm for software engineering. However Among
the problems that are sometimes encountered when the waterfall model is applied
are:
4 April 2021
Prepared By: Najaf Ali Khan Balouch
20
The Waterfall Model…..
1.The main drawback of the waterfall is the difficulty of accommodating change after the process is
underway.
2. Real projects rarely follow the sequential flow that the model proposes. Although the
linear model can accommodate iteration, it does so indirectly. As a result, changes can
cause confusion as the project team proceeds.
3. It is often difficult for the customer to state all requirements explicitly. The
waterfall model requires this and has difficulty accommodating the natural
uncertainty that exists at the beginning of many projects.
4. The customer must have patience. A working version of the program(s) will
not be available until late in the project time span. A major blunder, if undetected
until the working program is reviewed, can be disastrous.
The waterfall model is mostly used for large system engineering project where a system is
developed at several sites
4 April 2021
Prepared By: Najaf Ali Khan Balouch
21
• The classic life cycle leads to “blocking states” in which some project team
members must wait for other members of the team to complete
dependent tasks. In fact, the time spent waiting can exceed the time spent
on productive work.
• Today, software work is fast-paced and subject to a never-ending stream of
changes (to features, functions, and information content). The waterfall
model is often inappropriate for such work.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
22
Waterfall Model - Application
• Every software developed is different and requires a suitable SDLC
approach to be followed based on the internal and external factors.
Some situations where the use of Waterfall model is most
appropriate are −
• Requirements are very well documented, clear and fixed.
• Product definition is stable.
• Technology is understood and is not dynamic.
• There are no ambiguous requirements.
• Ample resources with required expertise are available to support the
product.
• The project is short.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
23
Waterfall Model - Advantages
• The advantages of waterfall development are that it allows for departmentalization and
control. A schedule can be set with deadlines for each stage of development and a product
can proceed through the development process model phases one by one.
• Development moves from concept, through design, implementation, testing, installation,
troubleshooting, and ends up at operation and maintenance. Each phase of development
proceeds in strict order.
• Some of the major advantages of the Waterfall Model are as follows −
• Simple and easy to understand and use
• Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a
review process.
• Phases are processed and completed one at a time.
• Works well for smaller projects where requirements are very well understood.
• Clearly defined stages.
• Well understood milestones.
• Easy to arrange tasks.
• Process and results are well documented.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
24
Waterfall Model - Disadvantages
• The disadvantage of waterfall development is that it does not allow much
reflection or revision. Once an application is in the testing stage, it is very
difficult to go back and change something that was not well-documented or
thought upon in the concept stage.
• The major disadvantages of the Waterfall Model are as follows −
• No working software is produced until late during the life cycle.
• High amounts of risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where requirements are at a moderate to high risk
of changing. So, risk and uncertainty is high with this process model.
• It is difficult to measure progress within stages.
• Cannot accommodate changing requirements.
• Adjusting scope during the life cycle can end a project.
• Integration is done as a "big-bang. at the very end, which doesn't allow
identifying any technological or business bottleneck or challenges early.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
25
The V-Model
• A variation in the representation of the waterfall model is called the V-model. Represented
in Figure 2.4, the V-model [Buc99] depicts the relationship of quality assurance actions to
the actions associated with communication, modeling, and early construction activities.
• As a software team moves down the left side of the V, basic problem requirements are
refined into progressively more detailed and technical representations of the problem and
its solution.
• Once code has been generated, the team moves up the right side of the V, essentially
performing a series of tests (quality assurance actions) that validate each of the models
created as the team moved down the left side.
• In reality, there is no fundamental difference between the classic life cycle and the Vmodel. The V-model provides a way of visualizing how verification and validation actions
are applied to earlier engineering work.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
26
The V-Model
A variation of waterfall model depicts the
relationship of quality assurance actions
to the actions associated with
communication, modeling and early code
construction activates.
Team first moves down the left side of
the V to refine the problem requirements.
Once code is generated, the team
moves up the right side of the V,
performing a series of tests that validate
each of the models created as the team
moved down the left side.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
27
• The V-model is an SDLC model where execution of processes
happens in a sequential manner in a V-shape. It is also known
as Verification and Validation model.
• The V-Model is an extension of the waterfall model and is based on
the association of a testing phase for each corresponding
development stage.
• This means that for every single phase in the development cycle,
there is a directly associated testing phase.
• This is a highly-disciplined model and the next phase starts only after
completion of the previous phase.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
28
Business Requirement Analysis
• This is the first phase in the development cycle where the product
requirements are understood from the customer’s perspective. This
phase involves detailed communication with the customer to
understand his expectations and exact requirement. This is a very
important activity and needs to be managed well, as most of the
customers are not sure about what exactly they need.
The acceptance test design planning is done at this stage as business
requirements can be used as an input for acceptance testing.
• System Design
• Once you have the clear and detailed product requirements, it is time
to design the complete system. The system design will have the
understanding and detailing the complete hardware and
communication setup for the product under development. The
system test plan is developed based on the system design. Doing this
at an earlier stage leaves more time for the actual test execution
later.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
29
Architectural Design
• Architectural specifications are understood and designed in this
phase. Usually more than one technical approach is proposed and
based on the technical and financial feasibility the final decision is
taken. The system design is broken down further into modules taking
up different functionality. This is also referred to as High Level Design
(HLD).
• The data transfer and communication between the internal modules
and with the outside world (other systems) is clearly understood and
defined in this stage. With this information, integration tests can be
designed and documented during this stage.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
30
Module Design
• In this phase, the detailed internal design for all the system modules
is specified, referred to as Low Level Design (LLD). It is important that
the design is compatible with the other modules in the system
architecture and the other external systems. The unit tests are an
essential part of any development process and helps eliminate the
maximum faults and errors at a very early stage. These unit tests can
be designed at this stage based on the internal module designs.
• Coding Phase
• The actual coding of the system modules designed in the design
phase is taken up in the Coding phase. The best suitable
programming language is decided based on the system and
architectural requirements.
• The coding is performed based on the coding guidelines and
standards. The code goes through numerous code reviews and is
optimized for best performance before the final build is checked into
the repository.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
31
Validation Phases
• The different Validation Phases in a V-Model are explained in detail
below.
• Unit Testing
• Unit tests designed in the module design phase are executed on the
code during this validation phase. Unit testing is the testing at code
level and helps eliminate bugs at an early stage, though all defects
cannot be uncovered by unit testing.
• Integration Testing
• Integration testing is associated with the architectural design phase.
Integration tests are performed to test the coexistence and
communication of the internal modules within the system.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
32
System Testing
• System testing is directly associated with the system design phase.
System tests check the entire system functionality and the
communication of the system under development with external
systems. Most of the software and hardware compatibility issues can
be uncovered during this system test execution.
• Acceptance Testing
• Acceptance testing is associated with the business requirement
analysis phase and involves testing the product in user environment.
Acceptance tests uncover the compatibility issues with the other
systems available in the user environment. It also discovers the nonfunctional issues such as load and performance defects in the actual
user environment.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
33
V- Model ─ Application
• V- Model application is almost the same as the waterfall model, as
both the models are of sequential type. Requirements have to be
very clear before the project starts, because it is usually expensive to
go back and make changes. This model is used in the medical
development field, as it is strictly a disciplined domain.
• The following pointers are some of the most suitable scenarios to use
the V-Model application.
• Requirements are well defined, clearly documented and fixed.
• Product definition is stable.
• Technology is not dynamic and is well understood by the project
team.
• There are no ambiguous or undefined requirements.
• The project is short.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
34
V-Model - Pros and Cons
• The advantage of the V-Model method is that it is very easy to
understand and apply. The simplicity of this model also makes it
easier to manage. The disadvantage is that the model is not flexible
to changes and just in case there is a requirement change, which is
very common in today’s dynamic world, it becomes very expensive to
make the change.
• The advantages of the V-Model method are as follows −
• This is a highly-disciplined model and Phases are completed one at a
time.
• Works well for smaller projects where requirements are very well
understood.
• Simple and easy to understand and use.
• Easy to manage due to the rigidity of the model. Each phase has
specific deliverables and a review process.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
35
The disadvantages of the V-Model method are as follows −
• High risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where requirements are at a moderate
to high risk of changing.
• Once an application is in the testing stage, it is difficult to go back and
change a functionality.
• No working software is produced until late during the life cycle.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
36
2. The Incremental Model
4 April 2021
Prepared By: Najaf Ali Khan Balouch
37
Incremental Model
• Incremental Model is a process of software development where
requirements divided into multiple standalone modules of the
software development cycle.
• In this model, each module goes through the requirements, design,
implementation and testing phases.
• Every subsequent release of the module adds function to the
previous release.
• The process continues until the complete system achieved.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
38
Diagram
4 April 2021
Prepared By: Najaf Ali Khan Balouch
39
The Incremental Model
• When initial requirements are reasonably well defined, but the
overall scope of the development effort preclude a purely linear
process. A compelling need to expand a limited set of new functions
to a later system release.
• It combines elements of linear and parallel process flows. Each linear
sequence produces deliverable increments of the software.
• The first increment is often a core product with many supplementary
features. Users use it and evaluate it with more modifications to
better meet the needs.
• Early increments are stripped-down versions of the final product, but
they do provide capability that serves the user and also provide
platform for evaluation by the user.
•
4 April 2021
Prepared By: Najaf Ali Khan Balouch
40
The Incremental Model
• For example, word-processing software developed using the incremental
paradigm might deliver basic file management, editing, and document
production functions in the first increment; more sophisticated editing
and document production
• Capabilities in the second increment; spelling and grammar checking in
the third increment; and advanced page layout capability in the fourth
increment.
.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
41
The various phases of incremental model are as follows:
• 1. Requirement analysis: In the first phase of the incremental model,
the product analysis expertise identifies the requirements. And the
system functional requirements are understood by the requirement
analysis team. To develop the software under the incremental model,
this phase performs a crucial role.
• 2. Design & Development: In this phase of the Incremental model of
SDLC, the design of the system functionality and the development
method are finished with success. When software develops new
practicality, the incremental model uses style and development
phase.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
42
The various phases of incremental model are as follows:
• 3. Testing: In the incremental model, the testing phase checks the
performance of each existing function as well as additional
functionality. In the testing phase, the various methods are used to
test the behavior of each task.
• 4. Implementation: Implementation phase enables the coding phase
of the development system. It involves the final coding that design in
the designing and development phase and tests the functionality in
the testing phase. After completion of this phase, the number of the
product working is enhanced and upgraded up to the final system
product
4 April 2021
Prepared By: Najaf Ali Khan Balouch
43
When we use the Incremental Model?
• When the requirements are superior.
• A project has a lengthy development schedule.
• When Software team are not very well skilled or trained.
• When the customer demands a quick release of the product.
• You can develop prioritized requirements first.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
44
Advantage and Disadvantage
• Errors are easy to be recognized.
• Easier to test and debug
• More flexible.
• Simple to manage risk because it handled during its iteration.
• The Client gets important functionality early.
• Disadvantage of Incremental Model
• Need for good planning
• Total Cost is high.
• Well defined module interfaces are needed.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
45
3. Evolutionary Models: Prototyping
p l an
Q u i ck
Quick
Co m m u n icat io n
plan
communication
e lin g
Mo dModeling
d e si g n
Q u i ck
Quick
design
Deployment
Deployment
y
live r &
D edelivery
Fe e d b ack
& feedback
Co n st r u ct io n
Construction
Construction
of
of prototype of prototype
p r o t o t yp e
4 April 2021
Prepared By: Najaf Ali Khan Balouch
46
What is Prototyping Model?
• Prototyping Model is a software development model in which
prototype is built, tested, and reworked until an acceptable
prototype is achieved. It also creates base to produce the final system
or software. It works best in scenarios where the project's
requirements are not known in detail. It is an iterative, trial and error
method which takes place between developer and client.
• Prototyping Model has following six SDLC phases as follow:
4 April 2021
Prepared By: Najaf Ali Khan Balouch
47
Evolutionary Models
• Software system evolves over time as requirements often change as
development proceeds. Thus, a straight line to a complete end product is not
possible. However, a limited version must be delivered to meet competitive
pressure.
• Usually a set of core product or system requirements is well understood, but
the details and extension have yet to be defined.
• You need a process model that has been explicitly designed to accommodate
a product that evolved over time.
• It is iterative that enables you to develop increasingly more complete version
of the software.
• Two types are introduced, namely Prototyping and Spiral models.
48
4 April 2021
Prepared By: Najaf Ali Khan Balouch
Evolutionary Models: Prototyping
• When to use: Customer defines a set of general objectives but does not identify
detailed requirements for functions and features. Or Developer may be unsure of the
efficiency of an algorithm, the form that human computer interaction should take.
• What step: Begins with communication by meeting with stakeholders to define the
objective, identify whatever requirements are known, outline areas where further
definition is mandatory. A quick plan for prototyping and modeling (quick design) occur.
Quick design focuses on a representation of those aspects the software that will be
visible to end users. ( interface and output). Design leads to the construction of a
prototype which will be deployed and evaluated. Stakeholder’s comments will be used
to refine requirements.
• Both stakeholders and software engineers like the prototyping paradigm. Users get a
feel for the actual system, and developers get to build something immediately.
However, engineers may make compromises in order to get a prototype working
quickly. The less-than-ideal choice may be adopted forever after you get used to it.
49
4 April 2021
Prepared By: Najaf Ali Khan Balouch
Step 1: Requirements gathering and analysis
• A prototyping model starts with requirement analysis. In this phase,
the requirements of the system are defined in detail. During the
process, the users of the system are interviewed to know what is
their expectation from the system.
• Step 2: Quick design
• The second phase is a preliminary design or a quick design. In this
stage, a simple design of the system is created. However, it is not a
complete design. It gives a brief idea of the system to the user. The
quick design helps in developing the prototype.
• Step 3: Build a Prototype
• In this phase, an actual prototype is designed based on the
information gathered from quick design. It is a small working model
of the required system.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
50
Step 4: Initial user evaluation
• In this stage, the proposed system is presented to the client for an
initial evaluation. It helps to find out the strength and weakness of
the working model. Comment and suggestion are collected from the
customer and provided to the developer.
• Step 5: Refining prototype
• If the user is not happy with the current prototype, you need to
refine the prototype according to the user's feedback and
suggestions.
• This phase will not over until all the requirements specified by the
user are met. Once the user is satisfied with the developed
prototype, a final system is developed based on the approved final
prototype.
• Step 6: Implement Product and Maintain
• Once the final system is developed based on the final prototype, it is thoroughly
tested and deployed to production. The system undergoes routine maintenance
for minimizing downtime and prevent large-scale failures.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
51
Types of Prototyping Models
• Four types of Prototyping models are:
• Rapid Throwaway prototypes
• Evolutionary prototype
• Incremental prototype
• Extreme prototype
4 April 2021
Prepared By: Najaf Ali Khan Balouch
52
Types of Prototyping Models
• Rapid Throwaway Prototype
• Rapid throwaway is based on the preliminary requirement. It is quickly
developed to show how the requirement will look visually. The
customer's feedback helps drives changes to the requirement, and the
prototype is again created until the requirement is baselined.
• In this method, a developed prototype will be discarded and will not be a
part of the ultimately accepted prototype. This technique is useful for
exploring ideas and getting instant feedback for customer requirements.
• Evolutionary Prototyping
• Here, the prototype developed is incrementally refined based on
customer's feedback until it is finally accepted. It helps you to save time
as well as effort. That's because developing a prototype from scratch for
every interaction of the process can sometimes be very frustrating.
• This model is helpful for a project which uses a new technology that is
not well understood. It is also used for a complex project where every
functionality must be checked once. It is helpful when the requirement is
not stable or not understood clearly at the initial stage.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
53
Types of Prototyping Models
• Incremental Prototyping
• In incremental Prototyping, the final product is decimated into different
small prototypes and developed individually. Eventually, the different
prototypes are merged into a single product. This method is helpful to
reduce the feedback time between the user and the application
development team.
• Extreme Prototyping:
• Extreme prototyping method is mostly used for web development. It is
consists of three sequential phases.
• Basic prototype with all the existing page is present in the HTML format.
• You can simulate data process using a prototype services layer.
• The services are implemented and integrated into the final prototype.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
54
Best practices of Prototyping
• Here, are a few things which you should watch for during the prototyping
process:
• You should use Prototyping when the requirements are unclear
• It is important to perform planned and controlled Prototyping.
• Regular meetings are vital to keep the project on time and avoid costly delays.
• The users and the designers should be aware of the prototyping issues and
pitfalls.
• At a very early stage, you need to approve a prototype and only then allow the
team to move to the next step.
• In software prototyping method, you should never be afraid to change earlier
decisions if new ideas need to be deployed.
• You should select the appropriate step size for each version.
• Implement important features early on so that if you run out of the time, you
still have a worthwhile system
4 April 2021
Prepared By: Najaf Ali Khan Balouch
55
Advantages of the Prototyping Model
• Users are actively involved in development. Therefore, errors can be
detected in the initial stage of the software development process.
• Missing functionality can be identified, which helps to reduce the risk
of failure as Prototyping is also considered as a risk reduction activity.
• Helps team member to communicate effectively
• Customer satisfaction exists because the customer can feel the
product at a very early stage.
• There will be hardly any chance of software rejection.
• Quicker user feedback helps you to achieve better software
development solutions.
• Allows the client to compare if the software code matches the
software specification.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
56
Advantages of the Prototyping Model
• It helps you to find out the missing functionality in the system.
• It also identifies the complex or difficult functions.
• Encourages innovation and flexible designing.
• It is a straight forward model, so it is easy to understand.
• No need for specialized experts to build the model
• The prototype serves as a basis for deriving a system specification.
• The prototype helps to gain a better understanding of the customer's
needs.
• Prototypes can be changed and even discarded.
• A prototype also serves as the basis for operational specifications.
• Prototypes may offer early training for future users of the software
system.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
57
Disadvantages of the Prototyping Model
• Here, are important cons/drawbacks of prototyping model:
• Prototyping is a slow and time taking process.
• The cost of developing a prototype is a total waste as the prototype is
ultimately thrown away.
• Prototyping may encourage excessive change requests.
• Some times customers may not be willing to participate in the
iteration cycle for the longer time duration.
• There may be far too many variations in software requirements when
each time the prototype is evaluated by the customer.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
58
Disadvantages of the Prototyping Model
• Poor documentation because the requirements of the customers are
changing.
• It is very difficult for software developers to accommodate all the
changes demanded by the clients.
• After seeing an early prototype model, the customers may think that
the actual product will be delivered to him soon.
• The client may lose interest in the final product when he or she is not
happy with the initial prototype.
• Developers who want to build prototypes quickly may end up
building sub-standard development solutions.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
59
The Spiral Model
• Spiral model is one of the most important Software Development Life
Cycle models, which provides support for Risk Handling. In its
diagrammatic representation, it looks like a spiral with many loops. The
exact number of loops of the spiral is unknown and can vary from project
to project. Each loop of the spiral is called a Phase of the software
development process. The exact number of phases needed to develop
the product can be varied by the project manager depending upon the
project risks. As the project manager dynamically determines the
number of phases, so the project manager has an important role to
develop a product using the spiral model.
• The Radius of the spiral at any point represents the expenses(cost) of the
project so far, and the angular dimension represents the progress made
so far in the current phase.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
60
Evolutionary Models: The Spiral
•
It couples the iterative nature of prototyping with the controlled and systematic aspects of the waterfall
model and is a risk-driven process model generator that is used to guide multi-stakeholder concurrent
engineering of software intensive systems.
•
Two main distinguishing features: one is cyclic approach for incrementally growing a system’s degree of
definition and implementation while decreasing its degree of risk. The other is a set of anchor point
milestones for ensuring stakeholder commitment to feasible and mutually satisfactory system solutions.
•
A series of evolutionary releases are delivered. During the early iterations, the release might be a model
or prototype. During later iterations, increasingly more complete version of the engineered system are
produced.
•
The first circuit in the clockwise direction might result in the product specification; subsequent passes
around the spiral might be used to develop a prototype and then progressively more sophisticated
versions of the software. Each pass results in adjustments to the project plan. Cost and schedule are
adjusted based on feedback. Also, the number of iterations will be adjusted by project manager.
•
Good to develop large-scale system as software evolves as the process progresses and risk should be
understood and properly reacted to. Prototyping is used to reduce risk.
•
However, it may be difficult to convince customers that it is controllable as it demands considerable risk
assessment expertise.
61
4 April 2021
Prepared By: Najaf Ali Khan Balouch
Evolutionary Models: The Spiral
planning
estimation
scheduling
risk analysis
communication
modeling
analysis
design
start
deployment
delivery
feedback
4 April 2021
Prepared By: Najaf Ali Khan Balouch
construction
code
test
62
• Each phase of the Spiral Model is divided into four quadrants as
shown in the above figure. The functions of these four quadrants are
discussed above-
4 April 2021
Prepared By: Najaf Ali Khan Balouch
63
• Objectives determination and identify alternative solutions: Requirements are
gathered from the customers and the objectives are identified, elaborated, and
analyzed at the start of every phase. Then alternative solutions possible for the
phase are proposed in this quadrant.
• Identify and resolve Risks: During the second quadrant, all the possible solutions
are evaluated to select the best possible solution. Then the risks associated with
that solution are identified and the risks are resolved using the best possible
strategy. At the end of this quadrant, the Prototype is built for the best possible
solution.
• Develop next version of the Product: During the third quadrant, the identified
features are developed and verified through testing. At the end of the third
quadrant, the next version of the software is available.
• Review and plan for the next Phase: In the fourth quadrant, the Customers
evaluate the so far developed version of the software. In the end, planning for
the next phase is started.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
64
Risk Handling in Spiral Model
•
A risk is any adverse situation that might affect the successful
completion of a software project. The most important feature of the
spiral model is handling these unknown risks after the project has
started. Such risk resolutions are easier done by developing a prototype.
The spiral model supports coping up with risks by providing the scope to
build a prototype at every phase of the software development.
• The Prototyping Model also supports risk handling, but the risks must be
identified completely before the start of the development work of the
project. But in real life project risk may occur after the development
work starts, in that case, we cannot use the Prototyping Model. In each
phase of the Spiral Model, the features of the product dated and
analyzed, and the risks at that point in time are identified and are
resolved through prototyping. Thus, this model is much more flexible
compared to other SDLC models.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
65
Why Spiral Model is called Meta Model?
•
The Spiral model is called a Meta-Model because it subsumes all the
other SDLC models. For example, a single loop spiral actually
represents the Iterative Waterfall Model. The spiral model
incorporates the stepwise approach of the Classical Waterfall Model.
The spiral model uses the approach of the Prototyping Model by
building a prototype at the start of each phase as a risk-handling
technique. Also, the spiral model can be considered as supporting the
evolutionary model – the iterations along the spiral can be
considered as evolutionary levels through which the complete system
is built.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
66
Advantages of Spiral Model:
Below are some advantages of the Spiral Model.
• Risk Handling: The projects with many unknown risks that occur as the
development proceeds, in that case, Spiral Model is the best development model
to follow due to the risk analysis and risk handling at every phase.
• Good for large projects: It is recommended to use the Spiral Model in large and
complex projects.
• Flexibility in Requirements: Change requests in the Requirements at later phase
can be incorporated accurately by using this model.
• Customer Satisfaction: Customer can see the development of the product at the
early phase of the software development and thus, they habituated with the
system by using it before completion of the total product.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
67
Disadvantages of Spiral Model:
Below are some main disadvantages of the spiral model.
• Complex: The Spiral Model is much more complex than other SDLC
models.
• Expensive: Spiral Model is not suitable for small projects as it is
expensive.
• Too much dependability on Risk Analysis: The successful completion
of the project is very much dependent on Risk Analysis. Without very
highly experienced experts, it is going to be a failure to develop a
project using this model.
• Difficulty in time management: As the number of phases is unknown
at the start of the project, so time estimation is very difficult.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
68
Evolutionary Models: Concurrent
4 April 2021
Prepared By: Najaf Ali Khan Balouch
69
Still Other Process Models
• Component based development—the process to apply when
reuse is a development objective
• Formal methods—emphasizes the mathematical specification of
requirements
• AOSD—provides a process and methodological approach for
defining, specifying, designing, and constructing aspects
• Unified Process—a “use-case driven, architecture-centric,
iterative and incremental” software process closely aligned with
the Unified Modeling Language (UML)
4 April 2021
Prepared By: Najaf Ali Khan Balouch
70
The Unified Process (UP)
4 April 2021
Prepared By: Najaf Ali Khan Balouch
71
UP Phases
UP Phases
Incept ion
Elaborat ion
Const ruct ion
Transit ion
Product ion
Workflows
Requirements
Analysis
Design
Implementation
Test
Support
Iterations
4 April 2021
#1
#2
Prepared By: Najaf Ali Khan Balouch
#n-1
#n
72
UP Work Products
Incept ion phase
Vision document
Init ial use-case model
Init ial project glossary
Init ial business case
Init ial risk assessment .
Project plan,
phases and it erat ions.
Business model,
if necessary .
One or more prot ot y pes
I nc e pt i o
n
4 April 2021
Elaborat ion phase
Use-case model
Supplement ary requirement s
including non-funct ional
Analy sis model
Soft ware archit ect ure
Descript ion.
Execut able archit ect ural
prot ot y pe.
Preliminary design model
Rev ised risk list
Project plan including
it erat ion plan
adapt ed workflows
milest ones
t echnical work product s
Preliminary user manual
Prepared By: Najaf Ali Khan Balouch
Const ruct ion phase
Design model
Soft ware component s
Int egrat ed soft ware
increment
Test plan and procedure
Test cases
Support document at ion
user manuals
inst allat ion manuals
descript ion of current
increment
Transit ion phase
Deliv ered soft ware increment
Bet a t est report s
General user feedback
73
Personal Software Process (PSP)
• Planning. This activity isolates requirements and develops both size and resource estimates. In
addition, a defect estimate (the number of defects projected for the work) is made. All metrics
are recorded on worksheets or templates. Finally, development tasks are identified and a
project schedule is created.
• High-level design. External specifications for each component to be constructed are developed
and a component design is created. Prototypes are built when uncertainty exists. All issues are
recorded and tracked.
• High-level design review. Formal verification methods (Chapter 21) are applied to uncover
errors in the design. Metrics are maintained for all important tasks and work results.
• Development. The component level design is refined and reviewed. Code is generated,
reviewed, compiled, and tested. Metrics are maintained for all important tasks and work
results.
• Postmortem. Using the measures and metrics collected (this is a substantial amount of data
that should be analyzed statistically), the effectiveness of the process is determined. Measures
and metrics should provide guidance for modifying the process to improve its effectiveness.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
74
Team Software Process (TSP)
• Build self-directed teams that plan and track their work, establish
goals, and own their processes and plans. These can be pure
software teams or integrated product teams (IPT) of three to about
20 engineers.
• Show managers how to coach and motivate their teams and how
to help them sustain peak performance.
• Accelerate software process improvement by making CMM Level
5 behavior normal and expected.
• The Capability Maturity Model (CMM), a measure of the effectiveness of a
software process, is discussed in Chapter 30.
• Provide improvement guidance to high-maturity organizations.
• Facilitate university teaching of industrial-grade team skills.
4 April 2021
Prepared By: Najaf Ali Khan Balouch
75
Download