Chapter 2

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 80

Chapter 2

Software Development
Process Model
Program Development Methods
• Waterfall Model
• Evolutionary Development
• V-shaped Model
• Spiral Model
• Iterative Model
• Big Bang Model
• Agile Model
• RAD Model
• Prototype or Transformation Model
Waterfall Model/Traditional Model

• Waterfall is the oldest and most straightforward of the structured


SDLC methodologies — finish one phase, then move on to the
next.
• No going back. Each stage relies on information from the previous
stage and has its own project plan.
• Waterfall is easy to understand and simple to manage.
• But early delays can throw off the entire project timeline.
• And since there is little room for revisions once a stage is
completed, problems can’t be fixed until you get to the
maintenance stage.
• This model doesn’t work well if flexibility is needed or if the
project is long term and ongoing.
Waterfall Model
Sequential phases in Waterfall model
• Requirement Gathering and
analysis − All possible requirements
of the system to be developed are
captured in this phase and
documented in a requirement
specification document.
Sequential phases in Waterfall model

• System Design − The requirement


specifications from first phase are
studied in this phase and the system
design is prepared. This system design
helps in specifying hardware and
system requirements and helps in
defining the overall system
architecture.
Sequential phases in Waterfall model

• Implementation − With inputs from


the system design, the system is first
developed in small programs called
units, which are integrated in the
next phase. Each unit is developed
and tested for its functionality, which
is referred to as Unit Testing.
Sequential phases in Waterfall model

• Integration and Testing − All the units developed in the implementation


phase are integrated into a system after testing of each unit. Post integration
the entire system is tested for any faults and failures.

• Deployment of system − Once the functional and non-functional testing is


done; the product is deployed in the customer environment or released into
the market.

• Maintenance − There are some issues which come up in the client


environment. To fix those issues, patches are released. Also to enhance the
product some better versions are released. Maintenance is done to deliver
these changes in the customer environment.
Applications
• Requirements are very well documented, clear
and fixed.
• Product definition is stable.
• Technology is understood and is not dynamic.
• There are no ambiguous requirements.
• Sample resources with required expertise are
available to support the product.
• The project is short.
Advantages
• 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.
Disadvantages
• 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.
Prototype or Transformation Model

• In this process model, the system is partially implemented


before or during the analysis phase thereby giving the
customers an opportunity to see the product early in the life
cycle.
• The process starts by interviewing the customers and
developing the incomplete high-level paper model.
• This document is used to build the initial prototype supporting
only the basic functionality as desired by the customer.
• Once the customer figures out the problems, the prototype is
further refined to eliminate them.
• The process continues until the user approves the prototype
and finds the working model to be satisfactory.
Prototype or Transformation Model
• Prototyping is defined as the process of
developing a working replication of a product
or system that has to be engineered.
• It offers a small scale facsimile of the end
product and is used for obtaining customer
feedback as described below:
Prototype or Transformation Model
Prototype or Transformation Model

• This model is used when the customers do not


know the exact project requirements
beforehand.
• In this model, a prototype of the end product
is first developed, tested and refined as per
customer feedback repeatedly till a final
acceptable prototype is achieved which forms
the basis for developing the final product.
Prototype or Transformation Model
• The time interval between the project begin
and final delivery is substantially reduced
because all parts of the system are prototyped
and tested simultaneously.
• Of course, there might be the possibility that
the pieces just not fit together due to some lack
ness in the development phase – this can only
be fixed by careful and complete plotting of the
entire system before prototyping starts.
Prototype or Transformation Model

There are four types of model available:


A) Rapid Throwaway Prototyping

• This technique offers a useful method of exploring ideas


and getting customer feedback for each of them.
• In this method, a developed prototype need not
necessarily be a part of the ultimately accepted prototype.
• Customer feedback helps in preventing unnecessary design
faults and hence, the final prototype developed is of better
quality.
Prototype or Transformation Model

B) Evolutionary Prototyping

• In this method, the prototype developed initially is


incrementally refined on the basis of customer feedback
till it finally gets accepted.
• In comparison to Rapid Throwaway Prototyping, it offers
a better approach which saves time as well as effort.
• This is because developing a prototype from scratch for
every iteration of the process can sometimes be very
frustrating for the developers.
Prototype or Transformation Model

C) Incremental Prototyping –
• In this type of incremental Prototyping, the final expected
product is broken into different small pieces of
prototypes and being developed individually.
• In the end, when all individual pieces are properly
developed, then the different prototypes are collectively
merged into a single final product in their predefined
order.
• It’s a very efficient approach which reduces the complexity
of the development process, where the goal is divided into
sub-parts and each sub-part is developed individually.
Prototype or Transformation Model

D) Extreme Prototyping –
This method is mainly used for web development. It is
consists of three sequential independent phases:
• D.1) In this phase a basic prototype with all the existing
static pages are presented in the HTML format.
• D.2) In the 2nd phase, Functional screens are made with
a simulate data process using a prototype services layer.
• D.3) This is the final step where all the services are
implemented and associated with the final prototype.
Advantages –
• The customers get to see the partial product early in the life
cycle, which ensures a greater level of customer satisfaction
and comfort.
• New requirements can be easily accommodated as there is
scope for refinement.
• Missing functionalities can be easily figured out.
• Errors can be detected much earlier thereby saving a lot of
effort and cost, besides enhancing the quality of the software.
• The developed prototype can be reused by the developer for
more complicated projects in the future.

• Flexibility in design.
Disadvantages –
• Costly w.r.t time as well as money.
• There may be too much variation in requirements each time the prototype
is evaluated by the customer.

• It is very difficult for developers to accommodate all the changes demanded


by the customer.
• There is uncertainty in determining the number of iterations that would be
required before the prototype is finally accepted by the customer.
• After seeing an early prototype, the customers sometimes demand the
actual product to be delivered soon.
• Developers in a hurry to build prototypes may end up with sub-optimal
solutions.
• The customer might lose interest in the product if he/she is not satisfied
with the initial prototype.
Spiral model
Spiral Model
• Looks like a spiral with many loops.
• Also called risk handling model
• 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.
Spiral Model
• 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.
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.
• Each loop of the spiral from x-axis clockwise
through 360 degree represent one phase.
• One phase is split roughly into four sectors of
major activities.
Spiral Model
Phases of spiral model
Objectives determination and identify
alternative solutions:
• Requirements are gathered from the
customers
• Objectives are identified, elaborated, and
analyzed at the start of every phase.
• Then alternative solutions possible for the
phase are proposed in this quadrant.
Phases of spiral model
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.
Phases of spiral model
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.
Phases of spiral model
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.
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.
Risk Handling in Spiral Model
• 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.
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.
Why Spiral Model is called Meta 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.
Advantages of 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.
Disadvantages of 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.
Iterative Model
• Iterative process starts with a simple
implementation of a subset of the software
requirements and iteratively enhances the
evolving versions until the full system is
implemented.
• At each iteration, design modifications are made
and new functional capabilities are added.
• The basic idea behind this method is to develop a
system through repeated cycles (iterative) and in
smaller portions at a time (incremental).
Iterative Model
• Iterative and Incremental development is a
combination of both iterative design or iterative
method and incremental build model for
development.
• "During software development, more than one
iteration of the software development cycle may
be in progress at the same time."
• This process may be described as an "evolutionary
acquisition" or "incremental build" approach."
Iterative Model
Iterative Model
• In this incremental model, the whole
requirement is divided into various builds.
• During each iteration, the development module
goes through the requirements, design,
implementation and testing phases.
• Each subsequent release of the module adds
function to the previous release.
• The process continues till the complete system
is ready as per the requirement.
Iterative Model
• The key to a successful use of an iterative
software development lifecycle is rigorous
validation of requirements, verification &
testing of each version of the software against
those requirements within each cycle of the
model.
• As the software evolves through successive
cycles, tests must be repeated and extended
to verify each version of the software.
Application

• Like other SDLC models, Iterative and


incremental development has some specific
applications in the software industry. This model
is most often used in the following scenarios −
• Requirements of the complete system are
clearly defined and understood.
• Major requirements must be defined; however,
some functionalities or requested
enhancements may evolve with time.
Advantages
• Some working functionality can be developed quickly and
early in the life cycle.
• Results are obtained early and periodically.
• Parallel development can be planned.
• Progress can be measured.
• Less costly to change the scope/requirements.
• Testing and debugging during smaller iteration is easy.
• Risks are identified and resolved during iteration; and
each iteration is an easily managed milestone.
• Easier to manage risk - High risk part is done first.
Rapid Application Development(RAD
Model)
• Based on prototyping and iterative development
with no specific planning involved.
• Product can be developed faster and higher
quality.
• Gathering customer requirements through
workshops or focus groups.
• Early testing of the prototypes by the customer
using iterative concept.
• Reuse of software components
Rapid Application Development(RAD
Model)
• Uses minimal planning in favor of rapid
prototyping
• The functional modules are developed in
parallel as prototypes
• Integrated to make the complete product for
faster product delivery
• RAD model distributes the analysis, design,
build and test phases into a series of short,
iterative development cycles
RAD Model Phases
Business Modelling
• The business model for the product under development is
designed in terms of flow of information and the
distribution of information between various business
channels.
• A complete business analysis is performed to find the vital
information for business,
1. How it can be obtained
2. How and when is the information processed
3. What are the factors driving successful flow of
information.
RAD Model Phases
Data Modelling
• The information gathered in the Business
Modelling phase is reviewed and analyzed to
form sets of data objects vital for the business.
• The attributes of all data sets is identified and
defined.
• The relation between these data objects are
established and defined in detail in relevance to
the business model.
RAD Model Phases
Process Modelling
• The data object sets defined in the Data Modelling
phase are converted to establish the business
information flow needed to achieve specific
business objectives as per the business model.
• The process model for any changes or
enhancements to the data object sets is defined in
this phase.
• Process descriptions for adding, deleting, retrieving
or modifying a data object are given.
RAD Model Phases
Application Generation
• The actual system is built and coding is done
by using automation tools to convert process
and data models into actual prototypes.
RAD Model Phases
Testing and Turnover
• The overall testing time is reduced in the RAD model
as the prototypes are independently tested during
every iteration.
• However, the data flow and the interfaces between
all the components need to be thoroughly tested
with complete test coverage.
• Since most of the programming components have
already been tested, it reduces the risk of any major
issues.
RAD Model
RAD Model Vs. Traditional SDLC

• The traditional SDLC follows a rigid process


models with high emphasis on requirement
analysis and gathering before the coding starts.
• It puts pressure on the customer to sign off the
requirements before the project starts and the
customer doesn’t get the feel of the product as
there is no working build available for a long time.
• The customer may need some changes after he
gets to see the software.
RAD Model Vs. Traditional SDLC

• However, the change process is quite rigid and it may


not be feasible to incorporate major changes in the
product in the traditional SDLC.
• The RAD model focuses on iterative and incremental
delivery of working models to the customer.
• This results in rapid delivery to the customer and
customer involvement during the complete
development cycle of product reducing the risk of
non-conformance with the actual user requirements.
RAD Model - Application

• RAD model can be applied successfully to the projects in which clear


modularization is possible.
• RAD should be used only when a system can be modularized to be
delivered in an incremental manner.
• It should be used if there is a high availability of designers for
Modelling.
• It should be used only if the budget permits use of automated code
generating tools.
• RAD SDLC model should be chosen only if domain experts are
available with relevant business knowledge.
• Should be used where the requirements change during the project
and working prototypes are to be presented to customer in small
iterations of 2-3 months.
Advantages of the RAD Model

• Changing requirements can be accommodated.


• Progress can be measured.
• Iteration time can be short with use of powerful RAD tools.
• Productivity with fewer people in a short time.
• Reduced development time.
• Increases reusability of components.
• Quick initial reviews occur.
• Encourages customer feedback.
• Integration from very beginning solves a lot of integration
issues.
Disadvantages of the RAD Model

• Dependency on technically strong team members for identifying


business requirements.
• Only system that can be modularized can be built using RAD.
• Requires highly skilled developers/designers.
• High dependency on Modelling skills.
• Inapplicable to cheaper projects as cost of Modelling and
automated code generation is very high.
• Management complexity is more.
• Suitable for systems that are component based and scalable.
• Requires user involvement throughout the life cycle.
• Suitable for project requiring shorter development times.
Agile SDLC
• Combination of iterative and incremental
process models.
• Focus on process adaptability and customer
satisfaction
• Agile Methods break the product into small
incremental builds.
• These builds are provided in iterations.
• Each iteration typically lasts from about one to
three weeks..
Agile SDLC
Every iteration involves cross functional teams working
simultaneously on various areas like −
• Planning
• Requirements Analysis
• Design
• Coding
• Unit Testing and
• Acceptance Testing.
At the end of the iteration, a working product is displayed
to the customer and important stakeholders
What is Agile?
• Agile model believes that every project needs to be
handled differently and the existing methods need
to be tailored to best suit the project requirements.
• Tasks are divided to time boxes (small time frames)
to deliver specific features for a release.
• Iterative approach is taken and working software
build is delivered after each iteration.
• Each build is incremental in terms of features, the
final build holds all the features required by the
customer
Agile Vs Traditional SDLC Model

• Agile is based on the adaptive software


development methods, whereas the
traditional SDLC models like the waterfall
model is based on a predictive approach
• Customer Interaction is the backbone of this
Agile methodology,
• Open communication with minimum
documentation are the typical features of
Agile development environment
Agile SDLC
Advantages
• Realistic approach to software development.
• Promotes teamwork and cross training.
• Resource requirements are minimum.
• Suitable for fixed or changing requirements
• Good model for environments that change
steadily.
• Minimal rules, documentation easily employed.
• Little or no planning required.
Disadvantages
• More risk of sustainability, maintainability and
extensibility.
• An overall plan, an agile leader and agile PM practice is
a must without which it will not work.
• Depends heavily on customer interaction, so if customer
is not clear, team can be driven in the wrong direction.
• There is a very high individual dependency, since there
is minimum documentation generated.
• Transfer of technology to new team members may be
quite challenging due to lack of documentation.
Evolutionary Model
• Combination of Iterative and Incremental model of software
development life cycle.
• Delivering your system in a big bang release, delivering it in
incremental process over time is the action done in this model.
• It is better for software products that have their feature sets
redefined during development because of user feedback and
other factors.
• The Evolutionary development model divides the
development cycle into smaller, incremental waterfall models
in which users are able to get access to the product at the end
of each cycle.
Evolutionary Model
Application of Evolutionary Model

• It is used in large projects where you can easily


find modules for incremental implementation.
• Commonly used when the customer wants to
start using the core features instead of waiting
for the full software.
• Used in object oriented software development
because the system can be easily portioned into
units in terms of objects.
Component Based software Engineering
• Component-Based Software Engineering (CBSE) is a process
that focuses on the design and development of computer-
based systems with the use of reusable software
components.
• It identifies candidate components ,qualifies each
component’s interface, adapts components to remove
architectural mismatches, assembles components into a
selected architectural style, and updates components as
requirements for the system change.
• The process model for component-based software
engineering occurs concurrently with component-based
development.
Basic Principle of Component-Based
Software Engineering
• Reusability − Components are usually designed to be reused in different
situations in different applications. However, some components may be
designed for a specific task.
• Replaceable − Components may be freely substituted with other similar
components.
• Not context specific − Components are designed to operate in different
environments and contexts.
• Extensible − A component can be extended from existing components to
provide new behavior.
• Encapsulated − A A component depicts the interfaces, which allow the
caller to use its functionality, and do not expose details of the internal
processes or any internal variables or state.
• Independent − Components are designed to have minimal dependencies
on other components.
Reuse oriented model
Advantages

• It can reduce total cost of software


development.
• The risk factor is very low.
• It can save lots of time and effort.
• It is very efficient in nature.
Disadvantages
• Reuse-oriented model is not always worked as
a practice in its true form.
• Compromises in requirements may lead to a
system that does not fulfill requirement of
user.
• Sometimes using old system component, that
is not compatible with new version of
component, this may lead to an impact on
system evolution.
Computer aided software engineering
(CASE)
• CASE is the implementation of computer facilitated tools and
methods in software development.
• Ensure a high-quality and defect-free software.
• Ensures a check-pointed and disciplined approach and helps
designers, developers, testers, managers and others to see the
project milestones during development.
• CASE can also help as a warehouse for documents related to
projects, like business plans, requirements and design
specifications.
• One of the major advantages of using CASE is the delivery of the
final product, which is more likely to meet real-world requirements
as it ensures that customers remain part of the process.
Computer aided software engineering
(CASE)
• CASE illustrates a wide set of labor-saving
tools that are used in software development.
• It generates a framework for organizing
projects and to be helpful in enhancing
productivity.
• There was more interest in the concept of
CASE tools years ago, but less so today, as the
tools have morphed into different functions,
often in reaction to software developer needs.
CASE Tools
• The essential idea of CASE tools is that in-built
programs can help analyze developing systems to
enhance quality and provide better outcomes.
• Throughout 1990, CASE tools became part of the
software lexicon, and big companies like IBM were
using these kinds of tools to help create software.
• Various tools are incorporated in CASE and are
called CASE tools, which are used to support
different stages and milestones in a software
development life cycle.
Types of CASE Tools

1. Diagramming Tools:
• It helps in diagrammatic and graphical
representations of the data and system
processes.
• It represents system elements, control flow and
data flow among different software components
and system structure in a pictorial form.
For example, Flow Chart Maker tool for making
state-of-the-art flowcharts.
Types of CASE Tools

2. Computer Display and Report Generators:


It helps in understanding the data requirements and the relationships
involved.
3. Analysis Tools:
It focuses on inconsistent, incorrect specifications involved in the
diagram and data flow.
It helps in collecting requirements, automatically check for any
irregularity, imprecision in the diagrams, data redundancies or
erroneous omissions.
For example,
(i) Accept 360, Accompa, CaseComplete for requirement analysis.

ii) Visible Analyst for total analysis.


Types of CASE Tools:

4. Central Repository:
It provides the single point of storage for data diagrams, reports
and documents related to project management.
5. Documentation Generators:
It helps in generating user and technical documentation as per
standards. It creates documents for technical users and end
users.
For example, Doxygen, DrExplain, Adobe RoboHelp for
documentation.
6. Code Generators:
It aids in the auto generation of code, including definitions,
with the help of the designs, documents and diagrams.
Advantages of the CASE
• As special emphasis is placed on redesign as well as testing, the
servicing cost of a product over its expected lifetime is considerably
reduced.

• The overall quality of the product is improved as an organized


approach is undertaken during the process of development.

• Chances to meet real-world requirements are more likely and


easier with a computer-aided software engineering approach.

• CASE indirectly provides an organization with a competitive


advantage by helping ensure the development of high-quality
products.
Disadvantages of the CASE approach:

• Cost: Using case tool is a very costly. Mostly firms engaged in


software development on a small scale do not invest in CASE
tools because they think that the benefit of CASE are justifiable
only in the development of large systems.
• Learning Curve: In most cases, programmers productivity may
fall in the initial phase of implementation , because user need
time to learn the technology. Many consultants offer training and
on-site services that can be important to accelerate the learning
curve and to the development and use of the CASE tools.
• Tool Mix: It is important to build an appropriate selection tool
mix to urge cost advantage CASE integration and data integration
across all platforms is extremely important.

You might also like