0% found this document useful (0 votes)
17 views76 pages

Software Development Life Cycle (SDLC)

The document discusses the Software Development Life Cycle (SDLC), which is a process used in software development. It describes the typical phases of SDLC including planning, requirements analysis, design, implementation, testing, deployment, and maintenance. It also discusses different SDLC models such as waterfall, iterative, spiral, and agile.

Uploaded by

Suzan Shrestha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views76 pages

Software Development Life Cycle (SDLC)

The document discusses the Software Development Life Cycle (SDLC), which is a process used in software development. It describes the typical phases of SDLC including planning, requirements analysis, design, implementation, testing, deployment, and maintenance. It also discusses different SDLC models such as waterfall, iterative, spiral, and agile.

Uploaded by

Suzan Shrestha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 76

Software Development Life Cycle (SDLC)

Software Development Life Cycle (SDLC) is a process used by the software industry to design,
develop and test high quality softwares. The SDLC aims to produce a high-quality software that
meets or exceeds customer expectations, reaches completion within times and cost estimates.
•SDLC is the acronym of Software Development Life Cycle.
•It is also called as Software Development Process.
•SDLC is a framework defining tasks performed at each step in the software development process.
What is SDLC?
SDLC is a process followed for a software project, within a software organization. It consists of a
detailed plan describing how to develop, maintain, replace and alter or enhance specific software.
The life cycle defines a methodology for improving the quality of software and the overall
development process.
Software Development Life Cycle (SDLC)
• Stage 1: Planning and Requirement Analysis
• Requirement analysis is the most important and
fundamental stage in SDLC. It is performed by the
senior members of the team with inputs from the
customer, the sales department, market surveys and
domain experts in the industry. This information is then
used to plan the basic project approach and to conduct
product feasibility study in the economical, operational
and technical areas.
• Planning for the quality assurance requirements and
identification of the risks associated with the project is
also done in the planning stage. The outcome of the
technical feasibility study is to define the various
technical approaches that can be followed to implement
the project successfully with minimum risks.
Phase 2:
System Analysis
• In depth study of the existing system to determine
what the new system should do.
• Expand on data gathered in Phase 1
• In addition to observation and interviews,
examine:
• Formal lines of authority (org chart)
• Standard operating procedures
• How information flows
• Reasons for any inefficiencies
System analysis:
• Systems analysis is a process of collecting factual data,
understand the processes involved, identifying problems
and recommending feasible suggestions for improving
the system functioning.
• The major objectives of systems analysis are to find
answers for each business process:
What is being done?
How is it being done?
Who is doing it?
When is he doing it? Why is it being done?
How can it be improved?
Feasibility Analysis
Feasibility – the measure of how beneficial or practical an information
system will be to an organization.

Feasibility analysis – the process by which feasibility is measured.

11-6
Six Tests For Feasibility
Operational feasibility – a measure of how well a solution
meets the system requirements.
Cultural (or political) feasibility - a measure of how well a
solution will be accepted in an organizational climate.
Technical feasibility – a measure of the practicality of a
technical solution and the availability of technical resources
and expertise.
Schedule feasibility – a measure of how reasonable the
project timetable is.
Economic feasibility - a measure of the cost-effectiveness of a
project or solution.
Legal feasibility - a measure of how well a solution can be
implemented within existing legal/contractual obligations.
11-7
• Stage 2: Defining Requirements
• Once the requirement analysis is done the next step is to clearly define and document the product
requirements and get them approved from the customer or the market analysts. This is done through
an SRS (Software Requirement Specification) document which consists of all the product requirements
to be designed and developed during the project life cycle.
• Stage 3: Designing the Product Architecture
• SRS is the reference for product architects to come out with the best architecture for the product to be
developed. Based on the requirements specified in SRS, usually more than one design approach for the
product architecture is proposed and documented in a DDS - Design Document Specification.
• This DDS is reviewed by all the important stakeholders and based on various parameters as risk
assessment, product robustness, design modularity, budget and time constraints, the best design approach is
selected for the product.
• A design approach clearly defines all the architectural modules of the product along with its
communication and data flow representation with the external and third party modules (if any). The
internal design of all the modules of the proposed architecture should be clearly defined with the minutest
of the details in DDS.
• Stage 4: Building or Developing the Product
• In this stage of SDLC the actual development starts and the product is built. The programming code is
generated as per DDS during this stage. If the design is performed in a detailed and organized manner,
code generation can be accomplished without much hassle.
• Developers must follow the coding guidelines defined by their organization and programming tools
like compilers, interpreters, debuggers, etc. are used to generate the code. Different high level
programming languages such as C, C++, Pascal, Java and PHP are used for coding. The programming
language is chosen with respect to the type of software being developed.
• Stage 5: Testing the Product
• This stage is usually a subset of all the stages as in the modern SDLC models, the testing activities are
mostly involved in all the stages of SDLC. However, this stage refers to the testing only stage of the
product where product defects are reported, tracked, fixed and retested, until the product reaches the
quality standards defined in the SRS.
• Stage 6: Deployment in the Market and Maintenance
• Once the product is tested and ready to be deployed it is released formally in the appropriate market.
Sometimes product deployment happens in stages as per the business strategy of that organization.
The product may first be released in a limited segment and tested in the real business environment
(UAT- User acceptance testing).
• Then based on the feedback, the product may be released as it is or with suggested enhancements in
the targeting market segment. After the product is released in the market, its maintenance is done for
the existing customer base.
SDLC Models
• There are various software development life cycle models defined and designed
which are followed during the software development process. These models are also
referred as Software Development Process Models". Each process model follows a
Series of steps unique to its type to ensure success in the process of software
development.
• Following are the most important and popular SDLC models followed in the industry

• Waterfall Model
• Iterative Model
• Spiral Model
• Other related methodologies are Agile Model, RAD Model, Rapid Application
Development and Prototyping Models.
Waterfall Model
• The Waterfall Model was the first Process Model to be introduced. It is also referred to as
a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall
model, each phase must be completed before the next phase can begin and there is no
overlapping in the phases.
• The Waterfall model is the earliest SDLC approach that was used for software development.
• The waterfall Model illustrates the software development process in a linear sequential
flow. This means that any phase in the development process begins only if the previous
phase is complete. In this waterfall model, the phases do not overlap.
• Waterfall Model - Design
• Waterfall approach was first SDLC Model to be used widely in Software Engineering to
ensure success of the project. In "The Waterfall" approach, the whole process of software
development is divided into separate phases. In this Waterfall model, typically, the outcome
of one phase acts as the input for the next phase sequentially.
• The sequential phases in Waterfall model
are −
• 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.
• 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.
• 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.
• 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.

• All these phases are cascaded to each other in which progress is seen as flowing steadily downwards
(like a waterfall) through the phases. The next phase is started only after the defined set of goals are
achieved for previous phase and it is signed off, so the name "Waterfall Model". In this model, phases
do not overlap.
• 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.
• 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.
• 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.
Unit 1.2 Other Approaches

• Prototyping; Spiral; Rapid Application Development;


Introduction to Agile Development
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.
• For example, Serena prototype composer, Mockup Builder.
• Adobe XD
• Figma
• Framer
• InVision
• Sketch
• Usabilla
• Proto.io
• Balsamiq
• Axure RP
• Infragistics
Prototyping 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:
• The Prototyping Model is one of the most popularly
used Software Development Life Cycle Models (SDLC
models). 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.
• 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.
.
1. Communication
In this phase, developer and customer meet and discuss the overall
objectives of the software.

2. Quick design Quick design is implemented when requirements are


known.
It includes only the important aspects like input and output format of
the software.
It focuses on those aspects which are visible to the user rather than the
detailed plan.
It helps to construct a prototype.
3. Modeling quick design This phase gives the clear idea about the
development of software because the software is now built.
It allows the developer to better understand the exact requirements.
4. Construction of prototype
The prototype is evaluated by the customer itself.

5. Deployment, delivery, feedback


If the user is not satisfied with current prototype then it refines
according to the requirements of the user.
The process of refining the prototype is repeated until all the
requirements of users are met.
When the users are satisfied with the developed prototype then the
system is developed on the basis of final prototype.
• Advantages of Prototyping
• In the development process of this model users are actively
involved.
• The development process is the best platform to understand the
system by the user.
• Errors are detected much earlier.
• Gives quick user feedback for better solutions.
• It identifies the missing functionality easily. It also identifies the
confusing or difficult functions.
• Disadvantages of Prototyping Model:The client involvement
is more and it is not always considered by the developer.
• It is a slow process because it takes more time for development.
• Many changes can disturb the rhythm of the development team.
• It is a thrown away prototype when the users are confused with
it.
• Types of Prototyping Models
• Two types of Prototyping models are:
1.Rapid Throwaway prototypes
2.Evolutionary prototype
• 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.
• A prototype which is usually a practical implementation of the system is produced
to help discover requirements problems and then discarded. The system is then
developed using some other development process
Prototyping in the software process
• Evolutionary prototyping
• An approach to system development where an initial prototype is produced
and refined through a number of stages to the final system
• Evolutionary prototyping is a software development method where the
developer or development team first constructs a prototype. After receiving
initial feedback from the customer, subsequent prototypes are produced,
each with additional functionality or improvements, until the final product
emerges
• 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.
Approaches to prototyping

Evolutionary Delivered
prototyping system
Outline
Requirements
Throw-away Executable Prototype +
Prototyping System Specification
Evolutionary prototyping

Develop abstract Build prototype Use prototype


specification system system

Deliver YES System


system adequate?
• 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
• Advantages of the Prototyping Model
• Here, are important pros/benefits of using Prototyping models:
• 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.
• 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 straightforward 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.
• 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.
• 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.
• 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.
SDLC Iterative Model
The iterative development model develops a system through building small portions of all the
features. This helps to meet initial scope quickly and release it for feedback.
In the iterative model, you start off by implementing a small set of the software requirements.
These are then enhanced iteratively in the evolving versions until the system is completed.
This process model starts with part of the software, which is then implemented and reviewed
to identify further requirements.
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 - 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.
• 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.
• Iterative Model - Pros and Cons
• The advantage of this model is that there is a working model of the system at a very early stage
of development, which makes it easier to find functional or design flaws. Finding issues at an
early stage of development enables to take corrective measures in a limited budget.
• The disadvantage with this SDLC model is that it is applicable only to large and bulky software
development projects. This is because it is hard to break a small software system into further
small serviceable increments/modules.
• The advantages of the Iterative and Incremental • During the life cycle, software is produced early which
SDLC Model are as follows − facilitates customer evaluation and feedback.
• Some working functionality can be developed quickly • The disadvantages of the Iterative and Incremental
and early in the life cycle. SDLC Model are as follows −
• Results are obtained early and periodically. • More resources may be required.
• Parallel development can be planned. • Although cost of change is lesser, but it is not very
• Progress can be measured. suitable for changing requirements.
• Less costly to change the scope/requirements. • More management attention is required.
• Testing and debugging during smaller iteration is easy. • System architecture or design issues may arise because
not all requirements are gathered in the beginning of
• Risks are identified and resolved during iteration; and the entire life cycle.
each iteration is an easily managed milestone.
• Defining increments may require definition of the
• Easier to manage risk - High risk part is done first. complete system.
• With every increment, operational product is delivered. • Not suitable for smaller projects.
• Issues, challenges and risks identified from each • Management complexity is more.
increment can be utilized/applied to the next
increment. • End of project may not be known which is a risk.
• Risk analysis is better. • Highly skilled resources are required for risk analysis.
• It supports changing requirements. • Projects progress is highly dependent upon the risk
analysis phase.
• Initial Operating time is less.
• Better suited for large and mission-critical projects.
Spiral Model
• The spiral model combines the idea of iterative development with the
systematic, controlled aspects of the waterfall model. This Spiral
model is a combination of iterative development process model and
sequential linear development model i.e. the waterfall model with a
very high emphasis on risk analysis. It allows incremental releases of
the product or incremental refinement through each iteration around
the spiral.
Spiral development Model
• The spiral model is a risk driven iterative software process model. The
spiral model delivers projects in loops. Unlike other process models, its
steps aren’t activities but phases for addressing whatever problem has the
greatest risk of causing a failure
• Process is represented as a spiral rather than as a sequence of activities
with backtracking
• Each loop in the spiral represents a phase in the process.
• No fixed phases such as specification or design - loops in the spiral are
chosen depending on what is required
• Risks are explicitly assessed and resolved throughout the process
• It is a combination of prototype and sequential model or waterfall model.
• In one iteration all activities are done, for large project's the output is small.
1. 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.
2. 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.
1.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.
2.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.
Spiral model of the software process
Spiral Quadrant
Determine objectives, alternatives and constraints
• Objectives: functionality, performance, hardware/software
interface, critical success factors, etc.
• Alternatives: build, reuse, buy, sub-contract, etc.
• Constraints: cost, schedule, interface, etc.
Evaluate alternatives, identify and resolve risks
• Study alternatives relative to objectives and constraints
• Identify risks (lack of experience, new technology, tight schedules,
poor process, etc.
• Resolve risks (evaluate if money could be lost by continuing
system development
Develop next-level product
• Typical activites:
• Create a design
• Review design
• Develop code
• Inspect code
• Test product
Plan next phase
• Typical activities
• Develop project plan
• Develop configuration management plan
• Develop a test plan
• Develop an installation plan
• 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.
• Advantages of Spiral Model:
Below are some advantages of the Spiral Model.
1. 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.
2. Good for large projects: It is recommended to use the Spiral Model in large and complex projects.
3. Flexibility in Requirements: Change requests in the Requirements at later phase can be incorporated
accurately by using this model.
4. 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:
Below are some main disadvantages of the spiral model.
1. Complex: The Spiral Model is much more complex than other SDLC models.
2. Expensive: Spiral Model is not suitable for small projects as it is expensive.
3. 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.
4. Difficulty in time management: As the number of phases is unknown at the start of the project, so time
estimation is very difficult.
Spiral Model Application
• The Spiral Model is widely used in the software industry as it is in sync with the
natural development process of any product, i.e. learning with maturity which
involves minimum risk for the customer as well as the development firms.
• The following pointers explain the typical uses of a Spiral Model −
• When there is a budget constraint and risk evaluation is important.
• For medium to high-risk projects.
• Long-term project commitment because of potential changes to economic priorities
as the requirements change with time.
• Customer is not sure of their requirements which is usually the case.
• Requirements are complex and need evaluation to get clarity.
• New product line which should be released in phases to get enough customer
feedback.
• Significant changes are expected in the product during the development cycle.
RAD (Rapid Application Development)
• The RAD (Rapid Application Development) model is based on
prototyping and iterative development with no specific planning
involved. The process of writing the software itself involves the
planning required for developing the product.
• Rapid Application Development focuses on gathering customer
requirements through workshops or focus groups, early testing of the
prototypes by the customer using iterative concept, reuse of the
existing prototypes (components), continuous integration and rapid
delivery.
• What is RAD?
• Rapid application development is a software development methodology
that uses minimal planning in favor of rapid prototyping. A prototype is a
working model that is functionally equivalent to a component of the
product.
• In the RAD model, the functional modules are developed in parallel as
prototypes and are integrated to make the complete product for faster
product delivery. Since there is no detailed preplanning, it makes it easier
to incorporate the changes within the development process.
• RAD projects follow iterative and incremental model and have small teams
comprising of developers, domain experts, customer representatives and
other IT resources working progressively on their component or prototype.
• The most important aspect for this model to be successful is to make sure
that the prototypes developed are reusable.
• RAD Model - Applicatio n

• RAD model can be applied successfully to the


projects in which clear modularization is
possible. If the project cannot be broken into
modules, RAD may fail.
• The following pointers describe the typical
scenarios where RAD can be used −
• 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.
• RAD Model Design
• 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.
• 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.
• 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.
SDLC - 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?
• 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. In Agile, the 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.
• The Agile thought process had started
early in the software development
and started becoming popular with
time due to its flexibility and
adaptability.
• The most popular Agile methods
include Rational Unified Process
(1994), Scrum (1995), Crystal Clear,
Extreme Programming (1996),
Adaptive Software Development,
Feature Driven Development, and
Dynamic Systems Development
Method (DSDM) (1995). These are
now collectively referred to as Agile
Methodologies, after the Agile
Manifesto was published in 2001.
• Following are the Agile Manifesto principles −
• Individuals and interactions − In Agile development, self-organization and
motivation are important, as are interactions like co-location and pair
programming.
• Working software − Demo working software is considered the best means of
communication with the customers to understand their requirements, instead of
just depending on documentation.
• Customer collaboration − As the requirements cannot be gathered completely in
the beginning of the project due to various factors, continuous customer
interaction is very important to get proper product requirements.
• Responding to change − Agile Development is focused on quick responses to
change and continuous development.
• Agile Vs Traditional SDLC Models
• Agile is based on the adaptive software development methods, whereas the traditional SDLC
models like the waterfall model is based on a predictive approach. Predictive teams in the
traditional SDLC models usually work with detailed planning and have a complete forecast of the
exact tasks and features to be delivered in the next few months or during the product life cycle.
• Predictive methods entirely depend on the requirement analysis and planning done in the
beginning of cycle. Any changes to be incorporated go through a strict change control
management and prioritization.
• Agile uses an adaptive approach where there is no detailed planning and there is clarity on future
tasks only in respect of what features need to be developed. There is feature driven development
and the team adapts to the changing product requirements dynamically. The product is tested very
frequently, through the release iterations, minimizing the risk of any major failures in future.
• Customer Interaction is the backbone of this Agile methodology, and open communication with
minimum documentation are the typical features of Agile development environment. The agile
teams work in close collaboration with each other and are most often located in the same
geographical location.
• Agile Model - Pros and Cons
• Agile methods are being widely accepted in the software world recently. However, this method
may not always be suitable for all products. Here are some pros and cons of the Agile model.
• The advantages of the Agile Model are as follows −
• Is a very realistic approach to software development.
• Promotes teamwork and cross training.
• Functionality can be developed rapidly and demonstrated.
• Resource requirements are minimum.
• Suitable for fixed or changing requirements
• Delivers early partial working solutions.
• Good model for environments that change steadily.
• Minimal rules, documentation easily employed.
• Enables concurrent development and delivery within an overall planned context.
• Little or no planning required.
• Easy to manage.
• Gives flexibility to developers.
• The disadvantages of the Agile Model are as follows −
• Not suitable for handling complex dependencies.
• 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.
• Strict delivery management dictates the scope, functionality to be
delivered, and adjustments to meet the deadlines.
• 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.
• Computer Aided Software Engineering Tools (CASE)
CASE stands for Computer Aided Software Engineering. It means, development and
maintenance of software projects with help of various automated software tools.
CASE tools are set of software application programs, which are used to automate SDLC
activities. CASE tools are used by software project managers, analysts and engineers to
develop software system.
There are number of CASE tools available to simplify various stages of Software Development
Life Cycle such as Analysis tools, Design tools, Project management tools, Database
Management tools, Documentation tools are to name a few.
Use of CASE tools accelerates the development of project to produce desired result and helps
to uncover flaws before moving ahead with next stage in software development.

CASE stands for Computer Aided Software Engineering which is software that supports one or
more software engineering activities within a software development process.
improving capabilities, functionality and quality of software
CASE
TOOLS:
• Software that is used to support software process activities
• Provides software process support by
• automating some process activities
• providing information about the software being developed
• Almost all the phases of the software development life cycle are
supported by them such as analysis; design, etc.
Basically, the CASE tools are used
to
• Reduce the cost as they automate many repetitive manual tasks.
• Reduce development time of the project as they support
standardization and avoid repetition and reuse.
• Develop better quality complex projects as they provide greater
consistency and coordination.
• Create good quality documentation.
• Create systems that are maintainable because of proper control of
configuration item that support traceability requirements.
• Case Tools are used in many ways in our organizations. Case tools can be broadly
classed into these broader areas:
• Requirement Analysis Tool
• Structure Analysis Tool
• Software Design Tool
• Code Generation Tool
• Test Case Generation Tool
• Document Production Tool
• Reverse Engineering Tool
Many systems developers use the CASE tools in various stages of the Software
Development Life Cycle. They mainly use it while developing the following
methodologies:
• Object-oriented Approach
• Rapid Applications Development (RAD)
• Prototyping Joint Applications Development (JAD)
Exampl
e
CASE tools may support the following development steps for
developing data base application:
• Creation of data flow and entity models
• Establishing a relationship between requirements and
models
• Development of top-level design
• Development of functional and process description
• Development of test cases.
Why CASE tools are
developed:
• Firstly Quick Installation.
• Time Saving by reducing coding and testing time.
• Enrich graphical techniques and data flow.
• Optimum use of available information.
• Enhanced analysis and design development.
• Create and manipulate documentation.
• Transfer the information between tools efficiently.
• The speed during the system development increased.
Advantages and Disadvantages of CASE
Tools:
CASE
Tools
• Upper-CASE tools (front-end
tools)
• Assist developer during requirements, analysis,
and design workflows or activities
• Lower-CASE tools (back-end
tools)
• Assist with implementation, testing,
and maintenance workflows or
activities
• Integrated CASE tools (I-CASE)
• provide support for the full life cycle
• Central Repository: A central repository is required by the tools to serve as a common source of
integrated and consistent information. The central place of storage consisting of specifications of
product, documents requirement, diagrams and reports and information about the management is a
central repository. The central repository also acts as a data dictionary.
• Upper: Planning, analysis, and designing of different stages of the software development life cycle can
be performed using upper case.
• Lower: Implementation, testing, and maintenance can be performed using lower case.
• Integrated: All the stages of the software development life cycle right from the gathering of
requirements for testing and documentation can be performed using integrated tools.
• This that have similar functionality, process activities and based on their capacity of integration with
other different tools can be grouped together. This has scope throughout all the stages of the software
development life cycle.
CASE Tools (Cont.)

64
Components/Types of
CASE Tools
Design Analysis
Generator tool

Drawing Code
Tool Generator

Document CASE Database


Generator repository Generator

Error-checking Prototyping
tool Tool

Screen and
Security and
Report Generator
Version Control
Components of
CASE
• CASE repository
• Central component of any CASE tool
• Also known as the information repository or data
dictionary
• Centralized database
• Allows easy sharing of information between tools
and SDLC activities
• Used to store graphical diagrams and prototype
forms and reports during analysis and design
workflows
• Provides wealth of information to project
manager and allows control over project
• Facilitates reusability
Components of
CASE
• Diagramming tools
• Allow you to represent a system and its components visually
• Allows higher level processes to be easily decomposed
• Can examine processes or data models at high or low level
• The components of the system, data flow, control flow
among the various components of software and the
structure of the system can be represented in graphical
form using diagram tools.

• Example: The state-of-the-art flowcharts can be created


using flow chart maker tool.
Components of
CASE
• Screen and report generators
• Used to
• Create, modify and test prototypes of computer displays and reports
• Identify which data items to display or collect for each screen or report
• Some tools have templates
Components of
CASE
• Analysis tools
• Generate reports that help identify possible inconsistencies,
redundancies and omissions
• Generally focus on
• diagram completeness and consistency
• data structures and usage
• These tools help to gather requirements, automatically check for
any inconsistency, inaccuracy in the diagrams, data redundancies
or erroneous omissions. For example, Accept 360, Accompa,
CaseComplete for requirement analysis, Visible Analyst for total
analysis.
Components of
CASE
• CASE documentation generator tools
• Create standard reports based on contents of repository
• Need textual descriptions of needs, solutions, trade-offs, diagrams of
data and processes, prototype forms and reports, program
specifications and user documentation
• High-quality documentation leads to 80% reduction in system
maintenance effort in comparison to average quality documentation
• Before the beginning of software process, documentation of the software project must
begin. This documentation must cover the all the software development life cycle phases
and the completion of the software development phase as well. The documents are
generated by the documentation tools for both technical and end users. The in-house
professionals in the development team who refer the manual maintained for the system,
manual maintained for reference, manual for training, manuals for installation etc. make
the technical users. The functioning of the system and how system works is described in
the end user documents.
• Example: Doxygen, adobe robohelp, DrExplain etc.
• Prototyping Tools
• Software prototype is simulated version of the intended software product.
Prototype provides initial look and feel of the product and simulates few
aspect of actual product.
• Prototyping CASE tools essentially come with graphical libraries. They can
create hardware independent user interfaces and design. These tools help us
to build rapid prototypes based on existing information. In addition, they
provide simulation of software prototype. For example, Serena prototype
composer, Mockup Builder.
• Web Development Tools
• These tools assist in designing web pages with all allied elements like forms,
text, script, graphic and so on. Web tools also provide live preview of what is
being developed and how will it look after completion. For example, Fontello,
Adobe Edge Inspect, Foundation 3, Brackets.
• Design Tools
• These tools help software designers to design the block
structure of the software, which may further be broken down in
smaller modules using refinement techniques. These tools
provides detailing of each module and interconnections among
modules. For example, Animated Software Design
• The block structure of the software can be designed by the
software designers using design tools which are again broken
down into smaller modules using techniques of refinement.
The detailing of every module and the interconnections
between the modules can be done using this.

• Example: Animated software design.


• Configuration Management Tools
• An instance of software is released under one version.
Configuration Management tools deal with –
•• Version and revision management
•• Baseline configuration management
•• Change control management
• CASE tools help in this by automatic tracking, version
management and release management. For example, Fossil,
Git, Accu REV.
• Change Control
• Change Control are a part of configuration management. The changes
that occur in the software after fixing its baseline or after the first
release of the software are dealt by change control tools. Tracking the
changes, management of files, management of codes etc. can be
automated using change control. The change policy of the
organization can be enforced by using change control.
• Programming
• The programming environments like integrated development
environment , library consisting of in built modules, simulation are all
included in programming tools. The development of software product
is aided by these and simulation and testing features are included.
• Example: Cscope for searching code in C, Eclipse.
• Quality Assurance
• Monitoring the engineering process and methods used for software development to ensure the quality
is as per the standards of the organization can be performed using quality assurance tools. The
configuration change control and software testing tools come under the category of QA tools.

• Example: SoapTest, Jmeter, AppsWatch, etc.


• Maintenance
• If there are any modifications after the delivery of the software product can be done through software
maintenance tools. Techniques for automatically logging, error reporting, generation of error tickets
automatically and root cause analysis are used in the maintenance phase of the software development life
cycle to help the software organizations.
• Example: Bugzilla for tracking defects etc.

You might also like