Lec 6 7
Lec 6 7
Rapid application
development model (RAD)
Rapid application development model
(RAD)
The Rapid Application Development Model was first proposed by IBM in the 1980s. The critical
feature of this model is the use of powerful development tools and techniques. A software project
can be implemented using this model if the project can be broken down into small modules
wherein each module can be assigned independently to separate teams. These modules can finally
be combined to form the final product. Development of each module involves the various basic
steps as in the waterfall model i.e analyzing, designing, coding, and then testing, etc. as shown in
the figure. Another striking feature of this model is a short time span i.e the time frame for
delivery(time-box) is generally 60-90 days.
The use of powerful developer tools such as JAVA, C++, Visual BASIC, XML, etc. is also an
integral part of the projects. This model consists of 4 basic phases:
Requirements Planning – It involves the use of various techniques used in requirements
elicitation like brainstorming, task analysis, form analysis, user scenarios, FAST (Facilitated
Application Development Technique), etc. It also consists of the entire structured plan describing
the critical data, methods to obtain it, and then processing it to form a final refined model.
User Description – This phase consists of taking user feedback and building the prototype using
developer tools. In other words, it includes re-examination and validation of the data collected in
the first phase. The dataset attributes are also identified and elucidated in this phase.
Construction – In this phase, refinement of the prototype and delivery takes place. It includes the
actual use of powerful automated tools to transform process and data models into the final
working product. All the required modifications and enhancements are too done in this phase.
Cutover – All the interfaces between the independent modules developed by separate teams have
to be tested properly. The use of powerfully automated tools and subparts makes testing easier.
This is followed by acceptance testing by the user.
The process involves building a rapid prototype, delivering it to the customer, and taking
feedback. After validation by the customer, the SRS document is developed and the design is
finalized.
When to use RAD Model?
When the customer has well-known requirements, the user is involved throughout the life cycle,
the project can be time boxed, the functionality delivered in increments, high performance is not
required, low technical risks are involved and the system can be modularized. In these cases, we
can use the RAD Model.
Advantages:
•The use of reusable components helps to reduce the cycle time of the project.
•Feedback from the customer is available at the initial stages.
•Reduced costs.
•The use of powerful development tools results in better quality products in comparatively shorter
time spans.
•The progress and development of the project can be measured through the various stages.
•It is easier to accommodate changing requirements due to the short iteration time spans.
Disadvantages:
•The use of powerful and efficient tools requires highly skilled professionals.
•The absence of reusable components can lead to the failure of the project.
•The team leader must work closely with the developers and customers to close the project in
time.
•The systems which cannot be modularized suitably cannot use this model.
•Customer involvement is required throughout the life cycle.
•It is not meant for small-scale projects as in such cases, the cost of using automated tools and
techniques may exceed the entire budget of the project.
Applications:
1.This model should be used for a system with known requirements and requiring a short
development time.
2.It is also suitable for projects where requirements can be modularized and reusable components
are also available for development.
3.The model can also be used when already existing system components can be used in
developing a new system with minimum changes.
4.This model can only be used if the teams consist of domain experts. This is because relevant
knowledge and the ability to use powerful techniques are a necessity.
5.The model should be chosen when the budget permits the use of automated tools and techniques
required.
Software Engineering | RAD Model vs
Traditional SDLC
RAD Traditional SDLC
Different stages of application development can be reviewed and repeated as Follows a predictive, inflexible and rigid
2.
the approach is iterative. approach for application development.
The use of automated RAD tools and techniques enable faster and easier Prototyping is difficult and requires more
3.
prototypes which are then used to develop the final product. time and effort.
Generally preferred for projects with shorter time durations Used for projects with longer development
9. and budgets large enough to afford the use of automated tools schedules and where budgets do not allow
and techniques. the use of expensive and powerful tools.
10. Use of reusable components helps to reduce the cycle time of The use of powerful and efficient tools
the project. requires highly skilled professionals.
Software Engineering | Agile
Development Models
The Agile model was primarily designed to help a project adapt to change requests quickly. So,
the main aim of the Agile model is to facilitate quick project completion. To accomplish this task
agility is required. Agility is achieved by fitting the process to the project and removing activities
that may not be essential for a specific project. Also, anything that is waste of time and effort is
avoided.
Actually Agile model refers to a group of development processes. These processes share some
basic characteristics but do have certain subtle differences among themselves.
Agile SDLC models:
Crystal: Crystal Agile methodology places a strong emphasis on fostering effective
communication and collaboration among team members, as well as taking into account the human
elements that are crucial for a successful development process. This methodology is particularly
beneficial for projects with a high degree of uncertainty, where requirements tend to change
frequently.
Atern: This methodology is tailored for projects with moderate to high uncertainty, where
requirements are prone to change frequently. Its clear-cut roles and responsibilities focus on
delivering working software in short time frames, and governance practices set it apart and make
it an effective approach for teams and projects.
Feature-driven development: This approach is implemented by utilizing a series of techniques
like creating feature lists, conducting model evaluations, and implementing a design-by-feature
method to meet its goal. This methodology is particularly effective in ensuring that the end
product is delivered in a timely manner and that it aligns with the requirements of the customer.
Scrum: This methodology serves as a framework for tackling complex projects and ensuring
their successful completion. It is led by a Scrum Master, who oversees the process, and a Product
Owner, who establishes the priorities. The Development Team, accountable for delivering the
software, is another key player.
Extreme programming (XP): Extreme programming is ideal for projects that have high levels of
uncertainty and require frequent changes, as it allows for quick adaptation to new requirements
and feedback.
Unified process: Unified Process is a methodology that can be tailored to the specific needs of
any given project. It combines elements of both waterfall and Agile methodologies, allowing for
an iterative and incremental approach to development. This means that the UP is characterized by
a series of iterations, each of which results in a working product increment, allowing for
continuous improvement and delivery of value to the customer.
All Agile methodologies discussed above share the same core values and principles, but they may
differ in their implementation and specific practices. Agile development requires a high degree of
collaboration and communication among team members, as well as a willingness to adapt to
changing requirements and feedback from customers.
The agile model is a combination of iterative and incremental process models. The steps involve
in agile SDLC models are:
•Requirement gathering
•Requirement Analysis
•Design
•Coding
•Unit testing
•Acceptance testing
Principles of Agile model:
• To establish close contact with the customer during development and to gain a clear
understanding of various requirements, each Agile project usually includes a customer
representative on the team. At the end of each iteration stakeholders and the customer
representative review, the progress made and re-evaluate the requirements.
• The agile model relies on working software deployment rather than comprehensive
documentation.
• Frequent delivery of incremental versions of the software to the customer representative in
intervals of a few weeks.
• Requirement change requests from the customer are encouraged and efficiently incorporated.
• It emphasizes having efficient team members and enhancing communications among them is
given more importance. It is realized that enhanced communication among the development
team members can be achieved through face-to-face communication rather than through the
exchange of formal documents.
• It is recommended that the development team size should be kept small (5 to 9 people) to help
the team members meaningfully engage in face-to-face communication and have a
collaborative work environment.
Principles of Agile model:
• The agile development process usually deploys Pair Programming. In Pair programming, two
programmers work together at one workstation. One does coding while the other reviews the
code as it is typed in. The two programmers switch their roles every hour or so.
Advantages:
•Working through Pair programming produces well-written compact programs which have fewer
errors as compared to programmers working alone.
•It reduces the total development time of the whole project.
•Agile development emphasizes face-to-face communication among team members, leading to
better collaboration and understanding of project goals.
•Customer representatives get the idea of updated software products after each iteration. So, it is
easy for him to change any requirement if needed.
•Agile development puts the customer at the center of the development process, ensuring that the
end product meets their needs.
Disadvantages:
•The lack of formal documents creates confusion and important decisions taken during different
phases can be misinterpreted at any time by different team members.
•Agile development models often involve working in short sprints, which can make it difficult to
plan and forecast project timelines and deliverables. This can lead to delays in the project and can
make it difficult to accurately estimate the costs and resources needed for the project.
• Agile development models require a high degree of expertise from team members, as they need
to be able to adapt to changing requirements and work in an iterative environment. This can be
challenging for teams that are not experienced in agile development practices and can lead to
delays and difficulties in the project.
•Due to the absence of proper documentation, when the project completes and the developers are
assigned to another project, maintenance of the developed project can become a problem.