You are on page 1of 20

1.

Waterfall Model

Framework Type: Linear

Basic Principles: Sequential and linear approach, with each phase completed before moving on
to the next.

The waterfall model is a linear sequential approach to software development, where progress
flows steadily downwards like a waterfall. The basic principles of the waterfall model include:

 Sequential Phases: The development process is divided into distinct phases, and each
phase is completed before moving on to the next. These phases typically include
requirements gathering, system design, implementation, testing, deployment, and
maintenance.
 Requirements Documentation: Detailed documentation of the project requirements is
created at the beginning of the project. This documentation serves as a blueprint for the
entire development process and helps ensure that all stakeholders have a clear
understanding of the project scope.
 Emphasis on Planning: The waterfall model places a strong emphasis on upfront
planning. Each phase is carefully planned before execution, including defining
deliverables, setting milestones, and estimating time and resources required.
 No Overlapping Phases : Unlike iterative models, the waterfall model does not allow for
overlapping or concurrent phases. Each phase must be completed and signed off before
moving on to the next. This rigid structure can sometimes lead to delays if any issues
arise during a phase.
 Verification and Validation: The waterfall model emphasizes verification and validation
at each phase. Verification ensures that each phase meets its objectives and deliverables,
while validation ensures that the final product meets the customer's requirements.
 Limited Customer Involvement: In the waterfall model, customer involvement is
typically limited to the requirements gathering phase. Once the requirements are defined
and documented, the development team works independently until the final product is
delivered.
 Documentation at Each Phase: Documentation is created at each phase of the waterfall
model to capture decisions, designs, and test results. This documentation serves as a
reference for future phases and helps with maintenance and troubleshooting.
 Linear Progression: The waterfall model follows a linear progression, with each phase
building upon the previous one. This linear flow makes it easier to track progress and
identify any deviations from the original plan.
 Limited Flexibility: The waterfall model has limited flexibility, as changes to
requirements or design can be costly and time-consuming. Once a phase is completed, it

1
is difficult to go back and make significant changes without affecting the entire project
timeline.
 Suitable for Well-defined Projects: The waterfall model is best suited for projects with
well-defined requirements and a clear understanding of the end product. It may not be
suitable for complex or dynamic projects where requirements are likely to change during
the development process.

Overall, the waterfall model provides a structured approach to software development, ensuring
that each phase is completed before moving on to the next. While it may lack flexibility, it can be
effective for projects with stable requirements and a clear project scope.

- Architecture: Requirements gathering, system design, implementation, testing, deployment,


and maintenance.

The waterfall model is a sequential design process used in software development and project
management. It is called the waterfall model because each phase flows downward, similar to a
waterfall, and the output of one phase becomes the input for the next phase. The architecture of
the waterfall model consists of the following phases:

 Requirements gathering: In this phase, the project requirements are collected and
documented. This includes understanding the client's needs, defining the scope of the
project, and identifying any constraints or limitations.
 System design: Once the requirements are gathered, the system design phase begins. This
involves creating a high-level design of the system architecture, including the overall
structure, modules, and interfaces. The design is usually represented using diagrams and
other documentation.
 Implementation: In this phase, the actual coding and development of the software system
takes place. The design specifications are translated into code, and the individual
components or modules are developed and integrated to form a complete system.
 Testing: After the implementation phase, the system is thoroughly tested to ensure that it
meets the specified requirements. Different types of testing, such as unit testing,
integration testing, and system testing, are performed to identify and fix any defects or
bugs.
 Deployment: Once the system has been tested and approved, it is deployed to the end-
users or customers. This may involve installation, configuration, and training to ensure
that the system is ready for use.
 Maintenance: After deployment, the system enters the maintenance phase. This involves
providing support, fixing any issues or bugs that arise, and making updates or
enhancements as needed.
 The waterfall model follows a linear and sequential approach, where each phase must be
completed before moving on to the next phase. This makes it easy to understand and
2
manage the project but lacks flexibility for changes or iterations once a phase is
completed.

- Strengths: Clear and well-defined project plan, easy to understand and manage, suitable for
projects with stable requirements.

 Presence of a clear structure. The waterfall methodology follows a distinct structure. It is


a sequential model which consists of different phases, each phase having its own set of
goals and deliverables. The initial phase consists of the analysis of the project
requirements. This is followed by designing, testing, implementation, verification and the
maintenance phase. The requirements are determined in the early stages and remain
constant throughout the development life cycle. The final result is delivered in the last
phase i.e., the maintenance phase.
 Smooth transfer of information. Since each phase of Waterfall project management
approach has a specific deliverable, information about the project can easily be passed
from one phase to another, allowing for a smooth transfer of knowledge between team
members. As this knowledge is often presented through documentation, this allows other
teams (e.g., maintenance or support) to easily pick up where previous ones left off should
the need arise.
 Easy to manage. As mentioned above, the Waterfall methodology has a clear structure
with well-defined goals and deliverables for each phase of the project life cycle. Thus it is
easy to manage this type of project as every milestone has to be achieved before going to
the next level. Due to this, it becomes easier to track the progress of work and identify
any kind of bottlenecks or delays that might have occurred during any phase.
 Early determination of goals. The initial phase of the Waterfall model involves a lot of
planning, research and brainstorming, which helps you determine your goals and
objectives before diving into the actual work. This allows your team to have a clear idea
of what they are trying to achieve as well as how they are going to go about achieving it.
 Extremely stable. The Waterfall methodology follows a linear approach which means it is
extremely stable in nature. There are no chances of deviation from the original plan once
the system requirements have been finalised. This makes it easier for managers to predict
any potential problems during execution.

- Weaknesses/Drawbacks

 Costly and inflexible. The Waterfall model is a linear sequential design process, meaning
that you have to complete one phase before moving on to the next phase. This process is
highly structured and regimented in a way that does not allow for much flexibility.
 All phases of the project need to be completed before you can move on to testing. As a
result, if your client decides to add or modify something late in the process, it may
require going back through all previous phases — which could be costly.
3
 Does not prioritise the client or end-user. Unlike other software development models, the
Waterfall project management approach does not prioritise feedback from customers
when developing a product. Instead, it focuses on meeting requirements that were
determined earlier in the project lifecycle. The problem with this approach is that
requirements can change — especially as users start using your product and providing
valuable feedback
 Delayed testing. The Waterfall methodology does not allow for testing until it reaches the
final stage of the development process, which is known as system testing. However, it
can create an issue because by then, many resources would have been applied to each
preceding stage. So if testers find any issues at this stage, business owners can incur
losses caused by rework.
 No scope for revision or reflection. When you are working with a project that is made up
of many parts, it is important to be able to make revisions and reflect on what has been
accomplished so far. Since you are not able to go back and make revisions until you get
to the end of each phase, this approach may not always work out well if you need to shift
in a different direction than planned before the completion of each stage.

2. Agile Model:

- Framework Type: Incremental

- Basic Principles: Iterative and collaborative approach, with frequent feedback and adaptation.

The Agile model is based on a set of principles that prioritize flexibility, collaboration, and
continuous improvement. Some key principles of the Agile model include:

 Customer collaboration over contract negotiation: Agile emphasizes the importance of


involving the customer throughout the development process. This allows for frequent
feedback and ensures that the final product meets the customer's needs and expectations.
 Responding to change over following a plan: Agile recognizes that requirements and
priorities can change over time. Instead of sticking to a rigid plan, Agile encourages
teams to be adaptable and responsive to changes in order to deliver the most valuable
product.
 Working software over comprehensive documentation: Agile values working software as
the primary measure of progress. While documentation is still important, Agile focuses
on delivering functional software that can be tested and validated by users.
 Individuals and interactions over processes and tools: Agile emphasizes the importance
of collaboration and effective communication within the development team. It recognizes
that people and their interactions are more valuable than relying solely on processes and
tools.

4
 Continuous improvement: Agile promotes a culture of continuous learning and
improvement. Teams regularly reflect on their processes and seek ways to optimize their
work, ensuring that they are delivering value efficiently.

These principles guide the Agile model and help teams to deliver high-quality software in a
flexible and iterative manner. By embracing change, collaborating with customers, and
continuously improving, Agile teams can respond effectively to evolving requirements and
deliver valuable software.

- Architecture: Iterative cycles of planning, development, testing, and delivery.

The Agile model does not have a specific architecture. Instead, it is a software development
approach that focuses on iterative and incremental development, frequent customer
collaboration, and adaptability to change. The Agile model can be applied to various software
development architectures, such as the following:

 Scrum: Scrum is one of the most popular frameworks used in Agile development. It
consists of small, cross-functional teams working in short iterations called sprints. The
architecture in Scrum can vary depending on the specific project requirements.
 Kanban: Kanban is another Agile framework that emphasizes visualizing work and
limiting work in progress. It focuses on continuous flow and optimizing the delivery
process. The architecture in Kanban can be adapted to suit the specific needs of the
project.
 Lean: Lean principles, derived from lean manufacturing, can also be applied to Agile
software development. Lean focuses on eliminating waste and maximizing value
delivery. The architecture in Lean Agile can involve streamlining processes and reducing
unnecessary steps.
 Extreme Programming (XP): XP is an Agile methodology that emphasizes close
collaboration between developers and stakeholders. It promotes practices such as pair
programming, test-driven development, and continuous integration. The architecture in
XP can incorporate these practices to ensure high-quality code.

Overall, the architecture in the Agile model is flexible and adaptable, allowing teams to choose
the most suitable approach for their specific project. The focus is on delivering working
software, collaborating with customers, and continuously improving the development process.

- Strengths: Flexibility to accommodate changes, customer involvement throughout the process,


faster delivery of working software.

Agile model strengths

 High flexibility of the project. Short cycles and constant iterations allow you to adapt
your project frequently and tailor it to the customer’s needs at any moment. You don’t
5
have to waste your time and resources on delivering a full project which will be rejected
by the customer. This makes the development process extremely flexible.
 High customer satisfaction over the development process. Since Agile projects are
closely coordinated with the customer, he/she has a strong impact on the development
project. Software pieces are delivered constantly, in short cycles and customer’s feedback
is always taken into consideration.
 Constant interaction among the stakeholders. With your teams constantly interacting with
each other and with the customer, you avoid producing tons of technical documentation,
processes, and tools. Each member feels like an important part of the team participating
in the decision-making process. This stimulates creativity and initiative and leads to
better results.
 Continuous quality assurance, attention to details. Quality of the product should be
ensured by the testing team from the early stages of Agile development. Since the
development is conducted in short cycles, testing is run non-stop, allowing you to
produce a good final product.

Agile model weaknesses

 Problems with workflow coordination. Agile projects involve several small teams
working on their own software pieces. They should always coordinate their work with
each other, testers and management. Add to that constant interaction with the customer,
and you will get a ton of communication management to consider before starting the
project. Even though a lot of interaction is considered an advantage of Agile
methodology, it may become a weak point due to many factors.
 Difficult planning at early stages. Planning in Agile development is essential before the
process is started. It is important to assess your resources, build up teams, and
communicate an overall vision of the project to them before it is kicked off.
 Professional teams are vital. Agile projects require teams to make serious decisions
constantly. It means that only experienced software developers, testers, and managers
should be working on the project. This software development methodology provides a
very few places for rookies.
 Lack of long-term planning. A lack of final vision of the project may be disorganizing in
some cases. Your project may end up off track if the customer changes his mind too often
during the process. And remember, by the end of the project you will have to assemble all
those software pieces, which had been changed and adapted a few times over the
development cycle and make them work. Also, there will be weak documentation, since
the interactions with the customer were mostly verbal.

6
3. Incremental Model:

- Framework Type: Incremental

- Basic Principles: Development divided into small incremental phases, with each phase
delivering a working subset of the final product.

The incremental model is based on the following principles:

Iterative Development: The development process is divided into multiple iterations or


increments, where each iteration focuses on delivering a specific set of functionalities.
This allows for continuous improvement and refinement of the product.
 Incremental Delivery: The product is delivered in increments or stages, with each
increment adding new features or enhancements to the previous increment. This allows
for early delivery of a working product and enables users to provide feedback and make
necessary changes.
 Feedback-driven Development: User feedback plays a crucial role in guiding the
development process. Users are involved throughout the development cycle, providing
feedback on each increment and influencing the direction of future increments.
 Risk Management: The incremental model helps manage risks by addressing high-
priority requirements and potential issues early in the development process. By delivering
increments of the product, potential risks can be identified and mitigated before they
become major problems.
 Flexibility and Adaptability: The incremental model allows for flexibility and
adaptability to changing requirements. As the project progresses, new requirements or
changes in existing requirements can be accommodated in subsequent increments.
 Continuous Integration and Testing: Each increment is integrated into the existing system
and thoroughly tested to ensure compatibility and functionality. This helps identify any
issues or conflicts early on and ensures that the final product is stable and reliable.
 Collaboration and Communication: The incremental model emphasizes collaboration
and communication between the development team, users, and stakeholders. Regular
meetings, feedback sessions, and discussions help ensure that everyone is aligned and
working towards the same goals.

By following these principles, the incremental model enables efficient and effective
development, reduces risks, and ensures that the final product meets user expectations.

- Architecture: Each increment builds upon the previous one, adding new functionality.

The architecture of the incremental model can vary depending on the specific project and
requirements. However, there are some common elements that are typically present in an
incremental model architecture:
7
 Core Architecture: The core architecture forms the foundation of the system and includes
the essential components and functionalities. This architecture is developed and finalized
in the early increments and serves as a basis for subsequent increments.
 Incremental Components: Each increment adds new components or enhances existing
ones to the core architecture. These components are designed and implemented based on
the specific functionalities or features to be delivered in that increment.
 Integration Layer: The integration layer is responsible for integrating the newly
developed components with the existing system. It ensures that all the components work
together seamlessly and that there are no conflicts or compatibility issues.
 Testing Framework: A testing framework is an integral part of the incremental model
architecture. It includes test cases and procedures to verify the functionality,
performance, and reliability of each increment. Testing is done at both the component
level and the integrated system level.
 Feedback Mechanism: The architecture should include mechanisms to gather user
feedback and incorporate it into future increments. This can be done through user testing,
surveys, or feedback sessions. The feedback received helps guide the development
process and ensures that the final product meets user expectations.
 Documentation and Communication: Documentation plays a crucial role in an
incremental model architecture. It includes design documents, user manuals, release
notes, and other relevant documentation. Effective communication channels should also
be established to ensure smooth collaboration between team members, users, and
stakeholders.

Overall, the architecture of the incremental model should be designed to support the iterative and
incremental nature of the development process. It should allow for flexibility, adaptability, and
continuous improvement while ensuring that the final product is stable, reliable, and meets user
requirements.

- Strengths: Early delivery of core features, allows for feedback and adjustments during
development

 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 it’d iteration.

Weaknesses/Drawbacks: Requires careful planning and coordination of increments, potential


for integration issues.

8
 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

4. Spiral Model:

- Framework Type: Combinational (combines elements of both linear and incremental)

- Basic Principles: Iterative and risk-driven approach, with emphasis on risk analysis and
mitigation.

 The spiral model is a risk-driven software development model that combines elements of
both the waterfall model and iterative development. The basic principles of the spiral
model include:
 Iterative Approach: The spiral model follows an iterative approach, where the
development process is divided into multiple iterations or spirals. Each spiral represents a
complete cycle of the software development process, including planning, risk analysis,
engineering, and evaluation.
 Risk Management: The spiral model places a strong emphasis on risk management. Each
spiral begins with a risk analysis phase, where potential risks and uncertainties are
identified and assessed. Risk mitigation strategies are then developed and implemented to
address these risks throughout the development process.
 Incremental Development: The spiral model supports incremental development, where
the software is built in increments or iterations. Each iteration focuses on specific
functionality or features, allowing for early feedback and continuous improvement.
 Customer Involvement: The spiral model encourages active customer involvement
throughout the development process. Customers are involved in the requirements
gathering, evaluation, and feedback phases of each spiral, ensuring that their needs and
expectations are met.
 Prototyping: Prototyping is often used in the spiral model to gather early feedback and
validate design decisions. A prototype is developed during each spiral, allowing
stakeholders to visualize and interact with the software before it is fully implemented.
 Flexibility: The spiral model offers greater flexibility compared to the waterfall model. It
allows for changes to be incorporated at each iteration based on feedback and evolving
requirements. This flexibility makes it well-suited for projects with evolving or uncertain
requirements.
 Documentation: Documentation is an integral part of the spiral model. Detailed
documentation is created at each phase of the spiral, including risk analysis reports,
9
design documents, and test plans. This documentation helps with traceability,
maintenance, and future enhancements.
 Verification and Validation: The spiral model emphasizes verification and validation at
each iteration. Each iteration undergoes rigorous testing and evaluation to ensure that the
software meets the specified requirements and quality standards.
Continuous Improvement: The spiral model promotes continuous improvement
throughout the development process. Feedback and lessons learned from each iteration
are used to refine and enhance subsequent iterations, resulting in an improved final
product.
 Suitable for Complex Projects: The spiral model is particularly suitable for complex
projects with high-risk factors. It allows for early identification and mitigation of risks,
and provides a systematic approach to managing uncertainties and complexities.

Overall, the spiral model offers a flexible and iterative approach to software development,
focusing on risk management and customer involvement. It is well-suited for projects with
evolving requirements and a need for continuous improvement.

- Architecture: Cycles of planning, risk analysis, development, and evaluation.

The architecture of the spiral model is based on a series of iterative cycles or spirals. Each spiral
consists of four main phases:

 Planning: In this phase, the project objectives, requirements, and constraints are defined.
The project scope is determined, and the overall strategy for development is outlined.
Risk analysis is also performed to identify potential risks and uncertainties.
 Risk Analysis: This phase focuses on identifying, analyzing, and prioritizing risks
associated with the project. Risks can include technical, schedule, budget, or resource-
related challenges. Risk mitigation strategies are developed to address these risks and
minimize their impact on the project.
 Engineering: In this phase, the software is designed, developed, and tested. The
requirements gathered in the planning phase are translated into a detailed design, and the
software is implemented based on this design. Prototyping may be used to gather early
feedback and validate design decisions.
 Evaluation: The software is evaluated in this phase to ensure that it meets the specified
requirements and quality standards. Testing is performed to identify any defects or issues,
and the software is reviewed by stakeholders for feedback and validation. Lessons
learned from the evaluation phase are used to refine and enhance subsequent iterations.
 The architecture of the spiral model allows for multiple iterations or spirals to be
performed, with each iteration building upon the previous one. The model provides a
systematic approach to risk management, allowing for early identification and mitigation

10
of risks. It also emphasizes customer involvement and continuous improvement
throughout the development process.

Overall, the architecture of the spiral model supports a flexible and iterative approach to software
development, enabling projects to adapt to changing requirements and uncertainties.

- Strengths:
 Risk-focused approach, allows for early identification and mitigation of potential issues.
 Flexibility - Changes made to the requirements after development has started can be
easily adopted and incorporated.
 Risk handling - The spiral model involves risk analysis and handling in every phase,
improving security and the chances of avoiding attacks and breakages. The iterative
development process also facilitates risk management.
 Customer satisfaction - The spiral model facilitates customer feedback. If the software is
being designed for a customer, then the customer will be able to see and evaluate their
product in every phase. This allows them to voice dissatisfactions or make changes
before the product is fully built, saving the development team time and money.

- Weaknesses/Drawbacks: Complexity of risk analysis can be time-consuming, may require


experienced team members.

 Not suitable for smaller or low budget projects as cost is high for identifying risks.
 Time spent on risks, planning, and prototyping may not be as efficient
 It is complex
 Spiral may continue indefinitely.
 Hard to define clear milestones, which allow the SDLC to move to the next phase.
 Developers must have other work during non development phases.
5. Prototyping Model:

Framework Type: Combinational (combines elements of both linear and incremental)

- Basic Principles: Iterative approach, with focus on creating prototypes to gather user feedback
and refine requirements.

The basic principles of the prototyping model include:

 Iterative Approach: The development process is divided into iterative cycles, with each
cycle focused on creating a prototype.
 User Involvement: The prototype is shared with users and stakeholders to gather
feedback and refine requirements.
 Collaboration: The development team and users collaborate closely throughout the
process to ensure the prototype meets user needs.

11
 Flexibility: The model allows for flexibility and adaptability, as changes can be made
based on user feedback and evolving requirements.
 Validation of Requirements: The prototype serves as a tool for validating and refining
requirements, ensuring that the final product meets user expectations.
 Rapid Development: The focus is on quickly creating and iterating prototypes, enabling
faster development and delivery of the final product.
 Collaboration and Communication: The model promotes collaboration and
communication between the development team, users, and stakeholders, fostering a
shared understanding of the project goals and requirements.

- Architecture: Rapid creation of prototypes, followed by feedback and refinement cycles.

The architecture of the prototyping model is based on an iterative and incremental approach. It
consists of the following components:

 Requirements Gathering: In this phase, the development team works closely with users
and stakeholders to gather and understand their requirements. This involves identifying
the main functionalities and features that the prototype should include.
 Initial Design: Once the requirements are gathered, the development team creates an
initial design of the prototype. This design may include basic user interfaces, workflows,
and interactions. The focus is on creating a functional representation of the system that
can be used for testing and feedback.
 Prototype Development: The development team then starts building the prototype based
on the initial design. This involves implementing the core functionalities and features
identified during the requirements gathering phase. The prototype is developed in a rapid
and iterative manner, with each iteration building upon the previous one.
 User Testing and Feedback: Once a prototype iteration is developed, it is shared with
users and stakeholders for testing and feedback. Users interact with the prototype and
provide feedback on its usability, functionality, and overall satisfaction. This feedback is
crucial for refining the requirements and making necessary changes to the prototype.
 Refinement and Iteration: Based on the feedback received, the development team refines
the prototype by incorporating the suggested changes and improvements. This may
involve modifying the design, adding or removing features, or making adjustments to the
functionality. The refined prototype then goes through another round of user testing and
feedback.
 Finalization: The refinement and iteration process continues until the prototype meets the
desired requirements and user expectations. Once the prototype is considered satisfactory,
it serves as a blueprint for developing the final product. The final product is then built
using the knowledge gained from the prototyping process.

12
Throughout the entire process, collaboration and communication between the development team,
users, and stakeholders are essential. Regular meetings, feedback sessions, and discussions help
ensure that everyone is aligned and working towards the same goals. This collaborative approach
fosters a shared understanding of the project requirements and facilitates the development of a
successful final product.

- Strengths: Allows for early user involvement and validation of requirements, promotes
collaboration and flexibility.

 Active involvement
This is one of the most prominent advantages of prototype model. With this approach,
consumers are actively participating in the development process, making it simpler to
tailor the model to their preferences. Due to the users’ active participation, problems are
found early on, simplifying the procedure.
 Easy detection of missing functionality: The prototype model’s lacking functionality is
clearly discernible. The chances of failure are decreased as a result. Additionally,
confusing or challenging functions might be found.
 Quick feedback: Feedback from customers is provided much more quickly since they
may engage directly with the prototype model. Since they are taken into account while
developing the final system, these comments are crucial. Customers may rapidly offer
their opinions and indicate adjustments that are necessary for the project, and the
developers can subsequently adjust the project as required.
 Customer satisfaction: The prototype model offers much higher levels of client
satisfaction. Early on, the consumer has the opportunity to touch and feel the product,
which helps them better comprehend its requirements. Additionally, they love the
pleasure of helping to create the operational version of their idea. Additionally,
deployment channels are chosen very early on, and integration needs are extremely well-
known.
 Flexibility: The prototype model’s design is adaptable. It is easily transferable to the
interests and requirements of the client or the developer. Additionally, the prototype can
be recycled by the developer for use in later, more challenging projects.
 Saves money: A prototype model might make it easier to see mistakes during the
project’s early phases. As a result, the project’s total cost and duration are decreased. The
use of prototype models enables the developer to anticipate areas of expense that weren’t
previously considered. It discusses the adjustments that must be made to the project
before they become costly.

- Weaknesses/Drawbacks: Potential for scope creep if not managed properly, may require
additional time and resources for prototyping.

13
 Time-consuming: Timing is one of the most noticeable disadvantages of prototype
model. The creation of the prototype model takes a lot of time. Multiple prototypes are
tested before the final product is developed, which takes a lot of time.
 Misconception regarding the arrival of the final product: Early on, the consumer has the
opportunity to interact directly with the prototype. Because of this, the buyer could
believe that the real goods would likewise come earlier than expected, which could result
in confusion. This might not always be the case.
 Poor decision-making: The creator is constantly concerned with the quality of their
creation. However, they could make bad choices about the prototype’s quality while
rushing to create it, which could have an impact on the final product.
 Misunderstanding regarding the final version: Customers may become annoyed and upset
with the prototype model and lose interest in the final product. Customers may believe
that the final version will have the same flaws even though it is enhanced and polished.
Another significant issue is that the client may appreciate a feature that was included in
the prototype model’s early stages. It is possible, nevertheless, that the specific
component will be eliminated later. In both situations, the client misunderstands the end
product.
 High upfront cost: Using a prototype model throughout the last phases of development
can help you save money. However, there are up-front expenditures associated with
creating a prototype model. Additionally, since there’s a potential that the entire prototype
would be discarded, the money spent on producing it can be utterly wasted.
 Insufficient analysis: There is a potential that the developer may focus on a particular
prototype and neglect to do a thorough evaluation of the entire project. As a consequence,
the developer may miss better options, forget about important details, and the project as a
whole could be poorly designed, necessitating difficult maintenance.
6. Rapid Application Development (RAD):

- Framework Type: Combinational (combines elements of both linear and incremental)

- Basic Principles: Iterative and collaborative approach, with emphasis on rapid

 User Involvement: RAD emphasizes the active involvement of end-users throughout the
development process. This ensures that the application meets their needs and
expectations.
 Iterative Development: RAD follows an iterative approach, where the development
process is divided into multiple cycles or iterations. Each iteration focuses on delivering a
specific set of functionality, allowing for quick feedback and adjustments.
 Time boxing : RAD sets strict time limits for each iteration or cycle. This helps in
maintaining a fast-paced development process and ensures that the project stays on
schedule.

14
 Prototyping: RAD encourages the use of prototypes to quickly gather user feedback and
validate design decisions. Prototypes are rapidly developed and tested to refine the
requirements and improve the overall design.
 Reusability: RAD promotes the reuse of existing components, modules, or frameworks to
speed up development. This reduces the time and effort required for coding from scratch
and improves overall efficiency.
 Collaborative Environment: RAD fosters a collaborative environment where developers,
designers, and end-users work closely together. This promotes effective communication,
knowledge sharing, and faster decision-making.
 Continuous Testing: RAD emphasizes continuous testing throughout the development
process. This includes unit testing, integration testing, and user acceptance testing to
ensure the quality and reliability of the application.
 Incremental Delivery: RAD focuses on delivering working software in small increments
or releases. This allows for early deployment and feedback from end-users, enabling
quick adjustments and improvements.
 Flexibility and Adaptability: RAD recognizes that requirements can change during the
development process. It prioritizes flexibility and adaptability to accommodate changing
needs and ensure that the application remains aligned with user expectations.
 Rapid Deployment: RAD aims to deliver functional software quickly. It emphasizes the
importance of rapid deployment to provide value to users as early as possible.

These principles collectively support the goal of rapid development, quick feedback, and
continuous improvement in a RAD model.

- Architecture: Rapid development cycles, with emphasis on reusability and modular design.

The architecture of a rapid application development (RAD) model typically follows a modular or
component-based approach. This allows for quick and flexible development by breaking down
the application into smaller, independent components that can be developed and tested
separately.

The key components of the architecture include:

 User Interface (UI): The UI is the front-end component that interacts with the end-users.
It includes the design, layout, and functionality of the application's user interface. RAD
emphasizes the importance of involving end-users in the UI design process to ensure
usability and satisfaction.
 Business Logic: The business logic component handles the core functionality and rules
of the application. It encapsulates the algorithms, calculations, and workflows that drive
the application's behavior. RAD focuses on rapidly developing and iterating on this
component to deliver value to users quickly.

15
 Data Access Layer: The data access layer is responsible for interacting with the
application's data sources, such as databases or external APIs. It handles tasks like
retrieving, updating, and deleting data. RAD emphasizes the importance of designing and
implementing this layer efficiently to ensure fast and reliable data access.
 Integration Layer: The integration layer enables communication and interaction between
different components or systems within the application. It handles tasks like data
synchronization, message passing, and service integration. RAD emphasizes the need for
seamless integration to ensure smooth and efficient operation of the application.
 Security and Authentication: The security and authentication component ensures that the
application is secure and only accessible to authorized users. It handles tasks like user
authentication, access control, and data encryption. RAD emphasizes the importance of
implementing robust security measures to protect sensitive data and prevent unauthorized
access.
 Testing and Quality Assurance: The testing and quality assurance component is crucial in
ensuring the reliability and stability of the application. RAD emphasizes the need for
continuous testing throughout the development process to catch bugs and issues early on.
This includes unit testing, integration testing, and user acceptance testing.

Overall, the architecture of a RAD model focuses on modular design, rapid development, and
iterative improvement. It aims to deliver functional and valuable software quickly while
maintaining flexibility and adaptability to changing requirements.

- Strengths: Quick development and delivery of working software, high level of user
involvement, promotes reusability.

Strengths of rapid application development (RAD):

 Quick development: RAD allows for faster development cycles, enabling the delivery of
functional software in a shorter time frame.
 User satisfaction: By involving end-users throughout the development process, RAD
ensures that the application meets their needs and expectations, leading to higher user
satisfaction.
 Flexibility: RAD is adaptable to changing requirements, allowing for adjustments and
improvements as needed.
 Collaboration: RAD promotes collaboration between developers, designers, and end-
users, fostering effective communication and faster decision-making.
 Continuous improvement: With iterative development and continuous testing, RAD
enables continuous improvement and refinement of the application.

Weaknesses of rapid application development (RAD):

16
 Limited scalability: RAD may not be suitable for large-scale projects or applications that
require extensive scalability due to its focus on quick development and prototyping.
 Dependency on user availability: RAD relies heavily on user involvement, and if users
are not available or engaged throughout the process, it can hinder progress.
 Risk of scope creep: The flexibility of RAD can lead to scope creep, where the project
expands beyond its initial requirements, potentially affecting timelines and budgets.
 Reliance on prototypes: While prototypes are useful for gathering feedback, they may not
always accurately represent the final product, leading to potential misunderstandings or
misalignment with user expectations.
 Lack of documentation: Due to the fast-paced nature of RAD, there may be a lack of
comprehensive documentation, which can pose challenges for future maintenance or
updates.

7. Joint Application Development (JAD):

- Framework Type: Combinational (combines elements of both linear and incremental)

- Basic Principles: Collaborative approach, with active involvement of stakeholders throughout


the development process.

Joint Application Development (JAD) is a methodology that involves users, stakeholders, and
developers working together to define and develop software applications. The basic principles of
JAD include:

 User involvement: JAD emphasizes the active participation of end-users throughout the
development process. Users provide input, feedback, and validation, ensuring that the
application meets their needs and requirements.
 Collaborative workshops: JAD workshops bring together users, stakeholders, and
developers to discuss and define the application's functionality, features, and business
processes. These workshops promote collaboration, communication, and consensus-
building.
 Iterative development: JAD follows an iterative approach, with multiple cycles of
development, feedback, and refinement. This allows for continuous improvement and
ensures that the application aligns with evolving user needs and expectations.
 Rapid prototyping: JAD utilizes rapid prototyping techniques to create visual
representations of the application's user interface and functionality. Prototypes are used to
gather user feedback and validate design decisions before proceeding with full-scale
development.
 Facilitated sessions: JAD sessions are facilitated by trained professionals who guide the
discussions, manage conflicts, and ensure that all participants have a voice. Facilitators
help maintain focus, keep discussions on track, and facilitate decision-making.

17
 Documentation: JAD emphasizes the importance of documenting decisions,
requirements, and design choices. Comprehensive documentation ensures that there is a
clear understanding of the application's functionality and serves as a reference for future
maintenance or updates.
 Time-boxed sessions: JAD sessions are time-boxed to ensure that discussions remain
focused and productive. Time constraints help prevent scope creep and encourage
participants to prioritize and make efficient use of their time.
 Continuous communication: JAD promotes open and continuous communication
between users, stakeholders, and developers. Regular meetings, feedback loops, and
status updates ensure that everyone is informed and involved throughout the development
process.

- Architecture: Workshops and meetings with stakeholders to gather requirements, design, and
validate solutions.

The architecture of Joint Application Development (JAD) typically involves the following
components:

 User Interface: The user interface is the front-end component of the application that
allows users to interact with the system. It includes elements such as screens, forms,
menus, and buttons. The JAD process involves creating rapid prototypes of the user
interface to gather user feedback and validate design decisions.
 Business Logic: The business logic component handles the processing and manipulation
of data within the application. It includes rules, calculations, and workflows that define
how the application functions. During JAD workshops, stakeholders and developers
collaborate to define and refine the business logic requirements.
 Data Storage: The data storage component is responsible for storing and retrieving data
used by the application. It can include databases, file systems, or other data repositories.
During JAD sessions, discussions may focus on data requirements, data structures, and
data access methods.
 Integration: The integration component involves connecting the application with other
systems or services. This can include integrating with external APIs, databases, or other
applications. During JAD workshops, stakeholders and developers discuss integration
requirements and design interfaces for seamless data exchange.
 Security: The security component ensures that the application is protected against
unauthorized access and data breaches. It includes authentication, authorization,
encryption, and other security measures. JAD sessions may include discussions on
security requirements, access control policies, and encryption methods.
 Scalability and Performance: The scalability and performance component addresses the
ability of the application to handle increasing workloads and maintain acceptable

18
response times. During JAD workshops, stakeholders and developers may discuss
performance requirements, scalability options, and optimization strategies.
 Deployment: The deployment component involves packaging and installing the
application on the target environment. It includes considerations such as hardware
requirements, software dependencies, and deployment processes. JAD sessions may
cover deployment requirements and constraints.
 Maintenance and Support: The maintenance and support component addresses the
ongoing management and support of the application after it is deployed. It includes
activities such as bug fixing, updates, and user support. JAD discussions may touch on
maintenance and support requirements, including documentation and training needs.

Overall, the architecture of JAD focuses on ensuring that all components of the application are
designed and developed collaboratively, with input from users, stakeholders, and developers.
This approach helps to align the application with user needs, improve communication and
consensus-building, and deliver a high-quality software solution.

- Strengths: Promotes collaboration and communication, ensures alignment with stakeholder


needs, reduces misunderstandings.

Strengths of Joint Application Development (JAD):

 Collaboration: JAD promotes collaboration and active involvement of stakeholders,


including users, throughout the development process. This helps ensure that the
application meets their needs and expectations.
 Rapid Development: JAD allows for rapid development by involving all relevant parties
in the decision-making process. This reduces the time spent on rework and increases
efficiency.
 Improved Communication: JAD sessions facilitate open communication between
stakeholders and developers. This helps in clarifying requirements, resolving conflicts,
and building consensus.
 User-Centric Design: JAD focuses on gathering user feedback and incorporating it into
the design process. This ensures that the application is user-friendly and meets user
requirements.
 Reduced Risk of Misinterpretation: By involving stakeholders directly in the
development process, JAD reduces the risk of misinterpretation of requirements. This
leads to a higher-quality end product.

Weaknesses of Joint Application Development (JAD):

 Time-Consuming: JAD requires significant time and effort from all participants,
including users, stakeholders, and developers. This can slow down the development
process and increase costs.
19
 Lack of Technical Expertise: Some stakeholders may not have the necessary technical
expertise to actively participate in the development process. This can lead to
misunderstandings and delays.
 Limited Scope: JAD may not be suitable for complex or large-scale projects that require
extensive technical analysis and design. It is more effective for smaller, well-defined
projects.
 Resistance to Change: Stakeholders who are resistant to change or have conflicting
interests may hinder the progress of JAD sessions and delay decision-making.
 Dependency on Participant Availability: JAD requires active participation from all
stakeholders, which can be challenging if they have conflicting schedules or other
commitments.
 Overall, while JAD offers numerous benefits such as collaboration, improved
communication, and user-centric design, it also has limitations that need to be considered
before implementing it in a software development project.

20

You might also like