SDLC
SDLC
Waterfall Model
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.
There is a time to the market constraint.
A new technology is being used and is being learnt by the
development team while working on the project.
Resources with needed skill sets are not available and are planned to
be used on contract basis for specific iterations.
There are some high-risk features and goals which may change in the
future.
Advantages of the Iterative and
Incremental SDLC Model
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.
Advantages of the Iterative and
Incremental SDLC Model
With every increment, operational product is delivered.
Issues, challenges and risks identified from each increment can be
utilized/applied to the next increment.
Risk analysis is better.
It supports changing requirements.
Initial Operating time is less.
Better suited for large and mission-critical projects.
During the life cycle, software is produced early which facilitates
customer evaluation and feedback.
Disadvantages of the Iterative and
Incremental SDLC Model
More resources may be required.
Although cost of change is lesser, but it is not very suitable for
changing requirements.
More management attention is required.
System architecture or design issues may arise because not all
requirements are gathered in the beginning of the entire life cycle.
Defining increments may require definition of the complete system.
Disadvantages of the Iterative and
Incremental SDLC Model
Not suitable for smaller projects.
Management complexity is more.
End of project may not be known which is a risk.
Highly skilled resources are required for risk analysis.
Projects progress is highly dependent upon the risk analysis phase.
Spiral Model
The spiral model has four phases. A software project repeatedly passes
through these phases in iterations called Spirals.
Identification
This phase starts with gathering the business requirements in the baseline
spiral. In the subsequent spirals as the product matures, identification of
system requirements, subsystem requirements and unit requirements are
all done in this phase.
This phase also includes understanding the system requirements by
continuous communication between the customer and the system
analyst. At the end of the spiral, the product is deployed in the
identified market.
Spiral Model - Design
Design
The Design phase starts with the conceptual design in the baseline spiral
and involves architectural design, logical design of modules, physical
product design and the final design in the subsequent spirals.
Construct or Build
The Construct phase refers to production of the actual software product
at every spiral. In the baseline spiral, when the product is just thought of
and the design is being developed a POC (Proof of Concept) is
developed in this phase to get customer feedback.
Then in the subsequent spirals with higher clarity on requirements and
design details a working model of the software called build is produced
with a version number. These builds are sent to the customer for
feedback.
Spiral Model - Design
Design
The Design phase starts with the conceptual design in the baseline spiral
and involves architectural design, logical design of modules, physical
product design and the final design in the subsequent spirals.
Construct or Build
The Construct phase refers to production of the actual software product
at every spiral. In the baseline spiral, when the product is just thought of
and the design is being developed a POC (Proof of Concept) is
developed in this phase to get customer feedback.
Then in the subsequent spirals with higher clarity on requirements and
design details a working model of the software called build is produced
with a version number. These builds are sent to the customer for
feedback.
Spiral Model - Design
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.
V-Model - Verification Phases
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.
V-Model - Verification Phases
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.
V-Model - Verification Phases
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.
V-Model - Validation Phases
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.
V-Model - Validation Phases
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 non-
functional issues such as load and performance defects in the actual
user environment.
V- Model ─ Application
The Big Bang model is an SDLC model where we do not follow any
specific process. The development just starts with the required
money and efforts as the input, and the output is the software
developed which may or may not be as per customer requirement.
This Big Bang Model does not follow a process/procedure and there
is a very little planning required. Even the customer is not sure about
what exactly he wants and the requirements are implemented on
the fly without much analysis.
Usually this model is followed for small projects where the
development teams are very small.
Big Bang Model ─ Design and
Application
The Big Bang Model comprises of focusing all the possible resources
in the software development and coding, with very little or no
planning. The requirements are understood and implemented as
they come. Any changes required may or may not need to revamp
the complete software.
This model is ideal for small projects with one or two developers
working together and is also useful for academic or practice
projects. It is an ideal model for the product where requirements are
not well understood and the final release date is not given.
Advantages of the Big Bang
Model
The Big Bang Model comprises of focusing all the possible resources
in the software development and coding, with very little or no
planning. The requirements are understood and implemented as
they come. Any changes required may or may not need to revamp
the complete software.
This model is ideal for small projects with one or two developers
working together and is also useful for academic or practice
projects. It is an ideal model for the product where requirements are
not well understood and the final release date is not given.
Disadvantages of the Big Bang
Model
Very High risk and uncertainty.
Not a good model for complex and object-oriented projects.
Poor model for long and ongoing projects.
Can turn out to be very expensive if requirements are
misunderstood.
Agile Model
Agile SDLC model is a combination of iterative and incremental process models
with focus on process adaptability and customer satisfaction by rapid delivery
of working software product.
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.
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?
RAD model distributes the analysis, design, build and test phases into a
series of short, iterative development cycles.
Following are the various phases of the RAD Model −
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, how it can be obtained, how and
when is the information processed and what are the factors driving
successful flow of information.
RAD Model Design
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.
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 Design
Application Generation
The actual system is built and coding is done by using automation tools
to convert process and data models into actual prototypes.
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 Vs Traditional SDLC