Incremental Process Model
The incremental model combines elements of linear and parallel
process flows.
The incremental model applies linear sequences in a staggered fashion
as calendar time progresses.
Each linear sequence produces deliverable “increments” of the
software.
For example, word-processing software developed may 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.
Advanced page layout capability in the fourth increment.
Advantages:
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 customer can respond to each built.
Lowers initial delivery cost.
Easier to manage risk because risky pieces are identified and handled during
iteration.
Disadvantages:
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 waterfall model.
When to use 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.
RAD (Rapid Application Development) Process
Model
It is a type of incremental model.
In RAD model the components or functions are developed in
parallel as if they were mini projects.
The developments are time boxed, delivered and then assembled
into a working prototype.
This can quickly give the customer something to see and use and
to provide feedback regarding the delivery and their
requirements.
Advantages :
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 :
For large but scalable projects RAD requires sufficient human
resources.
Projects fail if developers and customers are not committed in
a much shortened time-frame.
Problematic if system cannot be modularized.
Not appropriate when technical risks are high (heavy use of
new technology)
When to use RAD model ?
RAD should be used when there is a need to create a system that
can be modularized in 2-3 months of time.
It should be used if there’s high availability of designers for
modeling and the budget is high enough to afford their cost along
with the cost of automated code generating tools.
RAD SDLC model should be chosen only if resources with high
business knowledge are available and there is a need to produce
the system in a short span of time (2-3 months)
Prototype process model
The basic idea here is that instead of freezing the requirements
before a design or coding can proceed, a throwaway prototype is
built to understand the requirements.
This prototype is developed based on the currently known
requirements.
By using this prototype, the client can get an “actual feel” of the
system, since the interactions with prototype can enable the client
to better understand the requirements of the desired system.
Prototyping is an attractive idea for complicated and large
systems for which there is no manual process or existing system
to help determining the requirements.
The prototype are usually not complete systems and many of the
details are not built in the prototype. The goal is to provide a
system with overall functionality.
Advantages:
Users are actively involved in the development .
Since in this methodology a working model of the system is provided, the
users get a better understanding of the system being developed.
Errors can be detected much earlier.
Quicker user feedback is available leading to better solutions.
Missing functionality can be identified easily .
Confusing or difficult functions can be identified.
Disadvantages:
Leads to implementing and then repairing way of building systems.
Practically, this methodology may increase the complexity of the system as
scope of the system may expand beyond original plans.
Incomplete application may cause application not to be used as the full system
was designed
When to use Prototype Model?
Prototype model should be used when the desired system needs
to have a lot of interaction with the end users.
Typically, online systems, web interfaces have a very high
amount of interaction with end users, are best suited for Prototype
model.
Prototyping ensures that the end users constantly work with the
system and provide a feedback which is incorporated in the
prototype to result in a useable system.
Spiral process model
The spiral model is an evolutionary software process model that
couples the iterative nature of prototyping with the controlled and
systematic aspects of the waterfall model.
It provides the potential for rapid development of increasingly
more complete versions of the software.
Using the spiral model , software is developed in series of
evolutionary releases.
During early iterations a working prototype might be released.
During later iterations, increasingly more complete versions of
the software product are released.
The first circuit around the spiral might result in the development of a 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 through the planning region results in adjustments to the project plan.
Cost and schedule are adjusted based on feedback derived from the customer after
delivery.
In addition, the project manager adjusts the planned number of iterations required
to complete the software.
Advantages:
High amount of risk analysis hence, avoidance of Risk is enhanced.
Good for large and mission-critical projects.
Strong approval and documentation control.
Additional Functionality can be added at a later date.
Software is produced early in the software life cycle
Disadvantages:
Can be a costly model to use.
Risk analysis requires highly specific expertise.
Project’s success is highly dependent on the risk analysis phase.
Doesn’t work well for smaller projects.
When to use spiral process model?
When costs and risk evaluation is important for medium to high-risk
projects.
Users are unsure of their needs.
Requirements are complex.
New product line Significant changes are expected
Specialized Process Model
Specialized process models take on many of the characteristics
of one or more of the traditional models However, these
models tend to be applied when a specialized or narrowly
defined software engineering approach is chosen.
There are 3 types of specialized process models:
Component Based Development.
Formal Methods Model.
Aspect Oriented Software development.
Component Based Development :
The component-based development model incorporates many of the
characteristics of the spiral model.
It is evolutionary in nature, demanding an iterative approach to the
creation of software.
However, the component-based development model constructs
applications from prepackaged software component.
Modeling and construction activities begin with the identification
of candidate components.
In this approach, Commercial Off The Shelf (COTS) s/w
components, developed by vendors who offer them as products are
used in the development of the software.
Regardless of the technology that is used to create the
components, the component-based development model
incorporates the following steps:
1. Available component-based products are researched and
evaluated for the application domain in question.
2. Component integration issues are considered.
3. A software architecture is designed to accommodate the
components.
4. Components are integrated into the architecture.
5. Comprehensive testing is conducted to ensure proper
functionality
Advantages:
Leads to software reuse, which provides number of benefits.
70% reduction in development of cycle time.
Disadvantages:
Component library must be Robust.
Performance may degrade.
Formal Methods Model :
The formal methods model encompasses a set of activities that leads to
formal mathematical specification of computer software.
Formal methods enable to specify, develop, and verify a computer-based
system by applying a rigorous mathematical notation.
A variation on this approach, called Cleanroom software engineering.
When formal methods are used during development, they provide a
mechanism for eliminating many of the problems that are difficult to
overcome using other software engineering paradigms.
Ambiguity, incompleteness, and inconsistency can be discovered and
corrected more easily, but through the application of mathematical
analysis.
Although not a mainstream approach, the formal methods model
offers the promise of defect free software.
When formal methods are used during design, they serve as a
basis for program verification and therefore enable you to
discover and correct errors that might otherwise go undetected.
Draw Backs:
The development of formal models is currently quite time
consuming and expensive.
Because few software developers have the necessary background
to apply formal methods, extensive training is required.
It is difficult to use the models as a communication mechanism
for technically unsophisticated customers.
Aspect Oriented Software Development:
It has many different modules, which has many common snippets of
code like(security, profiling, transaction management).
Hence these codes are written in classes and these classes are called
aspects.
It involves breaking down a software system into components
known as modules.
The common code i,e (security, profiling etc) are called as Cross
Cutting Concerns. (Concern means code working in different areas
of application)
AOSD defines “aspects” that express customer concerns that cut
across multiple system functions, features, and information
Aspect oriented software development (AOSD), often referred
to as aspect oriented programming (AOP), is a relatively new
software engineering paradigm that provides a process and
methodological approach for defining, specifying, designing,
and constructing aspects.
Advantages:
Increase modularity and reusability
Increase maintainability
Disadvantages:
Reduces efficiency due to increase overhead aspects
Security risk involving aspects