SPM Unit-5
SPM Unit-5
Agile Methodology
Agile Software Development is a software development methodology that values flexibility,
collaboration, and customer satisfaction. It is based on the Agile Manifesto, a set of principles
for software development that prioritize individuals and interactions, working software,
customer collaboration, and responding to change.
Agile Software Development is an iterative and incremental approach to software
development that emphasizes the importance of delivering a working product quickly and
frequently. It involves close collaboration between the development team and the customer
to ensure that the product meets their needs and expectations.
The Agile Software Development process typically consists of the following steps:
1. Requirements Gathering: The customer’s requirements for the software are
gathered and prioritized.
2. Planning: The development team creates a plan for delivering the software,
including the features that will be delivered in each iteration.
3. Development: The development team works to build the software, using frequent
and rapid iterations.
4. Testing: The software is thoroughly tested to ensure that it meets the customer’s
requirements and is of high quality.
5. Deployment: The software is deployed and put into use.
6. Maintenance: The software is maintained to ensure that it continues to meet the
customer’s needs and expectations.
Principles:
1. Highest priority is to satisfy the customer through early and continuous delivery
of valuable software.
2. It welcomes changing requirements, even late in development.
3. Deliver working software frequently, from a couple of weeks to a couple of
months, with a preference to the shortest timescale.
4. Build projects around motivated individuals. Give them the environment and the
support they need, and trust them to get the job done.
5. Working software is the primary measure of progress.
6. Simplicity the art of maximizing the amount of work not done is essential.
7. The most efficient and effective method of conveying information to and within
a development team is face-to-face conversation.
Example: Let’s go through an example to understand clearly how agile actually works. A
Software company named ABC wants to make a new web browser for the latest release of
its operating system. The deadline for the task is 10 months. The company’s head assigned
two teams named Team A and Team B for this task. In order to motivate the teams, the
company head says that the first team to develop the browser would be given a salary hike
and a one-week full-sponsored travel plan. With the dreams of their wild travel fantasies, the
two teams set out on the journey of the web browser. Team A decided to play by the book
and decided to choose the Waterfall model for the development. Team B after a heavy
discussion decided to take a leap of faith and choose Agile as their development model. The
Development plan of the Team A is as follows:
Requirement analysis and Gathering – 1.5 Months
Design of System – 2 Months
Coding phase – 4 Months
System Integration and Testing – 2 Months
User Acceptance Testing – 5 Weeks
The Development plan for the Team B is as follows:
Since this was an Agile, the project was broken up into several iterations.
The iterations are all of the same time duration.
At the end of each iteration, a working product with a new feature has to be
delivered.
Instead of Spending 1.5 months on requirements gathering, They will decide the
core features that are required in the product and decide which of these features
can be developed in the first iteration.
Any remaining features that cannot be delivered in the first iteration will be
delivered in the next subsequent iteration, based on the priority
At the end of the first iterations, the team will deliver working software with the
core basic features.
Both the team have put their best efforts to get the product to a complete stage. But then out
of blue due to the rapidly changing environment, the company’s head come up with an
entirely new set of features and want to be implemented as quickly as possible and wanted
to push out a working model in 2 days. Team A was now in a fix, they were still in their
design phase and did not yet start coding and they had no working model to display. And
moreover, it was practically impossible for them to implement new features since waterfall
model there is not reverting back to the old phase once you proceed to the next stage, which
means they would have to start from the square one again. That would incur their heavy cost
Advantages:
Deployment of software is quicker and thus helps in increasing the trust of the
customer.
Can better adapt to rapidly changing requirements and respond faster.
Helps in getting immediate feedback which can be used to improve the software
in the next increment.
People – Not Process. People and interactions are given a higher priority rather
than process and tools.
Continuous attention to technical excellence and good design.
Increased collaboration and communication: Agile methodologies emphasize
collaboration and communication among team members, stakeholders, and
customers. This leads to improved understanding, better alignment, and increased
buy-in from everyone involved.
Flexibility and adaptability: Agile methodologies are designed to be flexible and
adaptable, making it easier to respond to changes in requirements, priorities, or
market conditions. This allows teams to quickly adjust their approach and stay
focused on delivering value.
Improved quality and reliability: Agile methodologies place a strong emphasis on
testing, quality assurance, and continuous improvement. This helps to ensure that
software is delivered with high quality and reliability, reducing the risk of defects
or issues that can impact the user experience.
Enhanced customer satisfaction: Agile methodologies prioritize customer
satisfaction and focus on delivering value to the customer. By involving customers
throughout the development process, teams can ensure that the software meets
their needs and expectations.
Increased team morale and motivation: Agile methodologies promote a
collaborative, supportive, and positive work environment. This can lead to
increased team morale, motivation, and engagement, which can in turn lead to
better productivity, higher quality work, and improved outcomes.
Disadvantages:
In case of large software projects, it is difficult to assess the effort required at the
initial stages of the software development life cycle.
The Agile Development is more code focused and produces less documentation.
Agile development is heavily depended on the inputs of the customer. If the
customer has ambiguity in his vision of the final outcome, it is highly likely for
the project to get off track.
Face to Face communication is harder in large-scale organizations.
Only senior programmers are capable of taking the kind of decisions required
during the development process. Hence it’s a difficult situation for new
programmers to adapt to the environment.
Lack of predictability: Agile Development relies heavily on customer feedback
and continuous iteration, which can make it difficult to predict project outcomes,
timelines, and budgets.
Agile is a framework that defines how software development needs to be carried on. Agile is
not a single method, it represents the various collection of methods and practices that follow
the value statements provided in the manifesto. Agile methods and practices do not promise
to solve every problem present in the software industry (No Software model ever can). But
they sure help to establish a culture and environment where solutions emerge.
Agile software development is an iterative and incremental approach to software
development. It emphasizes collaboration between the development team and the customer,
flexibility and adaptability in the face of changing requirements, and the delivery of working
software in short iterations.
ADAPTing TO SCRUM
SCRUM
Scrum is a framework for product management commonly used in software development,
although it has been used in other fields including research, sales, marketing and advanced
technologies. It is designed for teams of ten or fewer members who break their work
into goals that can be completed within time-boxed iterations, called sprints. Each sprint is no
longer than one month and most commonly lasts two weeks. The scrum team assesses progress
in time-boxed daily meetings of up to 15 minutes, called daily scrums (a stand-up meeting). At
the end of the sprint, the team holds two further meetings: one sprint review intended to
demonstrate the work done for stakeholders and solicit feedback, and one sprint
retrospective intended to enable the team to reflect and improve.
When we talk about adopting any new framework or methodology, we think about how we can
incorporate these changes into our organization. We simply cannot impose any change in our
organization and get started with it, there has to be some process or ways to incorporate that.
Also, there are some ways to incorporate Scrum changes within our organization. There include
five activities in adopting the Scrum successfully:
1. Awareness
2. Desire
3. Ability
4. Promotion
5. Transfer
ADAPT- Awareness
Awareness that the current process is not delivering acceptable results.Change begins
with an awareness that the status quo is no longer desirable. However, becoming aware that
what worked in the past is no longer working can be extremely difficult. Lack of exposure to
the big picture is one of the common reasons behind developing awareness for the need to
change. Instead of list a lot of common problem a project faces every day, focus on the two,
or three major problem that reflect the need of change.
Awareness Tools:
1. Communicate that there’s a problem
2. Use metrics
3. Provide exposure to new people and experiences
4. Run a pilot project
5. Focus attention on the most important reasons to change.
ADAPT- Desire
Desire to adopt Scrum as a way to address current problems. Beyond being aware of the
need to change, one must also have the desire to change. Moving from an awareness that the
current development process isn’t working to the desire to use a different one can be very
hard for many people.
Example “I am aware that I should eat more vegetables; I don’t yet desire to make that
change in my diet”
Desire Tools
Communicate that there’s a better way
Create a sense of urgency
Build momentum
Get the team to take Scrum for a test drive
Align incentives(or at least remove disincentives)
Focus on addressing fear
Help people let go
Don’t discredit the past
Engage employees in the effort
ADAPT- Ability
Ability to succeed with Scrum. All of the awareness and desire in the world won’t get a
team anywhere if it does not also acquire the ability to be Agile. Succeeding with Scrum
requires team members not only to learn new skills but also to unlearn old ones. Some of the
larger challenges Scrum teams will face include the following:
Gaining new technical skills.
Learning to think and work as a team.
Practicing how to create working software within short time-boxes.
Ability Tools
Provide coaching and training.
Hold individuals accountable.
Share information.
Set reasonable targets.
Just do it.
ADAPT- Transfer
Transfer of the implications of using Scrum through out the company.It is impossible for a
development team to remain Agile on its own permanently. If the implications of using
Scrum are not transferred to other departments, organizational gravity from those
departments will eventually stall and kill the transition effort. Rest of the organization must
become at least compatible with Scrum.
The following is a list of groups to whom you must transfer the implications of using Scrum.
These groups are fundamental participants in Scrum rather than groups to which the effects of
Scrum are transferred.
Human resources
Facilities
Marketing
Finance
There are groups beyond above mentioned one where scrum implications must be transferred.
For example, project management office, sales, information technology, operations, hardware
development, and other groups with organizational gravity. Transferring the implications of
Scrum to them will be important for long-term success
Internal Coaching
The Third pattern of Spreading Scrum is Internal Coaching. In the organizations, there
include types of teams. Some teams excel with the new agile approach, while others
If the team doesn’t try new technical practices early, it might never try them. Too
many Scrum teams adopt the bare minimum of Scrum and stop there, deciding that
the improvements already achieved through their new iterative and incremental work
style are sufficient. By not considering or trying new or improved technical practices,
these teams forgo much of the improvement they could have made.
It may address the project’s most pressing issues. Introducing a team to the agile
technical practices can solve an array of typical project problems including poor
quality, over-engineered solutions, long delivery cycles, and so on. There are other
problems, though, that are not addressed by introducing these practices. For example,
a project with a disengaged product owner will experience slow or incorrect decision
Reasons to Delay
Just as there are strong reasons for encouraging a team to adopt new engineering
practices early, there are also reasons why it may be better to wait:
There may be strong resistance to some practices. Introducing certain technical
practices can be one of the most difficult challenges you face when transitioning.
Many individuals are extremely reluctant to try new things, such as simple design,
pair programming, and test-driven development. Although you may have good
reasons to push the team to try new Reasons to Delay
Just as there are strong reasons for encouraging a team to adopt new engineering
practices early, there are also reasons why it may be better to wait:
There may be strong resistance to some practices. Introducing certain technical
practices can be one of the most difficult challenges you face when transitioning.
Many individuals are extremely reluctant to try new things, such as simple design,
pair programming, and test-driven development. Although you may have good
reasons to push the team to try new technical practices.
ETC Sprints
Because the ETC uses Scrum, it makes progress in sprints, exactly like a Scrum development
team would. Each ETC sprint begins with a planning meeting and ends with a review and
retrospective. These meetings are completely analogous to those held by Scrum
development teams and often have the same problems.
Additional Responsibilities
Beyond encouraging people to engage in the transition, the ETC has the following additional
responsibilities:
Anticipate and address people issues. The ETC should try to anticipate which groups
or individuals are going to struggle the most with the changes brought about by
Scrum and proactively work with them. The cross-functional makeup of the ETC
helps in this regard as it allows the group to see problems from multiple perspectives.
Anticipate and remove impediments. Members of the ETC are responsible for
removing any organizational impediments to adopting Scrum or doing it well.
Beyond merely removing impediments it is informed of, the ETC should try to
anticipate obstacles and remove them before they cause problems.
Encourage a simultaneous focus on practices and principles. Adopting Scrum
involves incorporating new practices and valuing new principles. An organization
cannot adopt the practices without the underlying principles, nor can it adopt the
principles without the practices. An effective ETC looks for imbalances in how each
is being adopted. If one is being accepted faster than the other, the ETC can bring
them back in line by directing conversation, attention, and resources toward the
laggard.
DEVOPS ARCHITECTURE
1. Build : Without DevOps, the cost of the consumption of the resources was evaluated
based on the pre-defined individual usage with fixed hardware allocation. And with
DevOps, the usage of cloud, sharing of resources comes into the picture, and the build
is dependent upon the user's need, which is a mechanism to control the usage of
resources or capacity.
2. Code : Many good practices such as Git enables the code to be used, which ensures
writing the code for business, helps to track changes, getting notified about the reason
behind the difference in the actual and the expected output, and if necessary reverting
to the original code developed. The code can be appropriately arranged in files, folders,
etc. And they can be reused.
3. Test :The application will be ready for production after testing. In the case of manual
testing, it consumes more time in testing and moving the code to the output. The testing
can be automated, which decreases the time for testing so that the time to deploy the
code to production can be reduced as automating the running of the scripts will remove
many manual steps.
4. Plan :DevOps use Agile methodology to plan the development. With the operations
and development team in sync, it helps in organizing the work to plan accordingly to
increase productivity.
5. Monitor :Continuous monitoring is used to identify any risk of failure. Also, it helps
in tracking the system accurately so that the health of the application can be checked.
Automation : Automation helps to reduce time during the testing and deployment
phase. With automation, productivity increases, and releases are made faster. This
helps in catching bugs quickly so that they can be fixed easily. For continuous
delivery, each code drop is defined through automated tests, cloud-based services,
and builds. The builds are deployed in production using automation, to reduce
human errors caused due to manual deployment.
Collaboration : DevOps is a collaboration of the Development and Operations
team. It improves the working model of the teams and they become more productive
with their productivity, which strengthens accountability and ownership. The teams
work in close collaboration sharing responsibilities, which in turn makes the
deployment to production faster.
Integration :Software Applications need to be integrated with other components in
the environment. The integration phase is where the existing code is
DEVOPS DEPLOYMENT:
Deployment strategies define how you want to deliver your software. Organizations follow
different deployment strategies based on their business model. Some choose to deliver software
that is fully tested, and others might want their users to provide feedback and let their users
evaluate under development features (such as Beta releases). The following section discusses
various deployment strategies.
a) In-place deployments
b) Blue/green deployment
c) Canary deployment
d) Linear deployment
e) All-at-once deployment
a) In-place deployments
In this strategy, the previous version of the application on each compute resource is
stopped, the latest application is installed, and the new version of the application is
started and validated. This allows application deployments to proceed with minimal
disturbance to underlying infrastructure. With an in-place deployment, you can deploy
your application without creating new infrastructure; however, the availability of your
application can be affected during these deployments. This approach also minimizes
infrastructure costs and management overhead associated with creating new resources.
You can use a load balancer so that each instance is deregistered during its deployment
and then restored to service after the deployment is complete. In-place deployments can
be all-at-once, assuming a service outage, or done as a rolling update.
b) Blue/green deployment
Blue/green deployment, sometimes referred to as red/black deployment, is a technique
for releasing applications by shift traffic between two identical environments running
differing versions of the application. Blue/green deployment helps you minimize
downtime during application updates, mitigating risks surrounding downtime and
rollback functionality.
Blue/green deployments enable you to launch a new version (green) of your application
alongside the old version (blue), and monitor and test the new version before you
reroute traffic to it, rolling back on issue detection.
d) Linear deployment
Linear deployment means traffic is shifted in equal increments with an equal number
of minutes between each increment. You can choose from predefined linear options
that specify the percentage of traffic shifted in each increment and the number of
minutes between each increment.
e) All-at-once deployment
All-at-once deployment means all traffic is shifted from the original environment to the
replacement environment all at once.
ORCHRESTATION
DEVOPS PIPELINE
A DevOps pipeline is a set of automated processes and tools that allows developers and
operations professionals to collaborate on building and deploying code to a production
environment.
To simplify the difference between continuous delivery and continuous deployment, think of
delivery as the FedEx person handing you a box, and deployment as you opening that box
and using what’s inside. If a change to the product is required between the time you receive
the box and when you open it, the manufacturer is in trouble!
2. Continuous feedback
The single biggest pain point of the old waterfall method of software development — and
consequently why agile methodologies were designed — was the lack of timely feedback.
When new features took months or years to go from idea to implementation, it was almost
guaranteed that the end result would be something other than what the customer expected
or wanted. Agile succeeded in ensuring that developers received faster feedback from
stakeholders. Now with DevOps, developers receive continuous feedback not not only
from stakeholders, but from systematic testing and monitoring of their code in the
pipeline.
Continuous testing is a critical component of every DevOps pipeline and one of the
primary enablers of continuous feedback. In a DevOps process, changes move
continuously from development to testing to deployment, which leads not only to
faster releases, but a higher quality product. This means having automated tests
throughout your pipeline, including unit tests that run on every build change, smoke
tests, functional tests, and end-to-end tests.
Continuous monitoring is another important component of continuous feedback. A
DevOps approach entails using continuous monitoring in the staging, testing, and
even development environments. It is sometimes useful to monitor pre-production
environments for anomalous behavior, but in general this is an approach used to
continuously assess the health and performance of applications in production.
Numerous tools and services exist to provide this functionality, and this may involve
anything from monitoring your on-premise or cloud infrastructure such as server resources,
networking, etc. or the performance of your application or its API interfaces.
3. Continuous operations
Continuous operations is a relatively new and less common term, and definitions
vary. One way to interpret it is as “continuous uptime”. For example in the case of a
blue/green deployment strategy in which you have two separate production
environments, one that is “blue” (publicly accessible) and one that is “green” (not
publicly accessible). In this situation, new code would be deployed to the green
environment, and when it was confirmed to be functional then a switch would be
flipped (usually on a load-balancer) and traffic would switch from the “blue” system
to the “green” system. The result is no downtime for the end-users.
Another way to think of Continuous operations is as continuous alerting. This is the notion
that engineering staff is on-call and notified if any performance anomalies in the application
or infrastructure occur. In most cases, continuous alerting goes hand in hand with continuous
monitoring.
1. Continuous Integration (CI) and Continuous Delivery (CD) Tools: These tools
automate the build, test, and deployment processes, helping to ensure that changes to
the code are quickly and reliably integrated into the main codebase and deployed to
production.
2. Version Control Tools: These tools, such as Git, help teams manage changes to code,
collaborate more effectively, and track the history of code changes.
4. Monitoring and Analytics Tools: These tools enable teams to monitor the health of
their systems and applications, detect and diagnose issues quickly, and gain insights
into how their software is being used.
5. Collaboration Tools: These tools, such as Slack or Microsoft Teams, enable teams to
communicate and collaborate effectively, improving productivity and team morale.
7. Culture and People: DevOps is not just about tools and technologies; it is also about
people and culture. Building a culture of collaboration, continuous improvement, and
trust is critical to the success of any DevOps initiative.
8. Security and Compliance: DevOps teams must also consider security and compliance
as they build and deploy software. Tools and processes that enable secure development
and deployment are critical to ensuring the safety and privacy of users and customers.
9. Training and Education: Continuous learning and improvement are essential to the
success of any DevOps initiative. Providing training and education to team members
helps ensure that they have the knowledge and skills needed to succeed in a fast-paced,
rapidly-evolving environment.
Technology challenges
Lack of automation in the software development lifecycle and hence loss of quality
due to error prone repeatability of steps (ex. Tests)
Defects generated due to inconsistent environments for testing and deployment
Delays in testing due to infrastructure unavailability
Brittle point-to-point integration between modules
AGILING CAPABILITIES
Both, Agile and DevOps methodologies complement each other and thus can work in
tandem.
Agile rapidly adapts to changing requirements while collaborating better between the
smaller teams
DevOps enables continuous automated integration and deployment to enable frequent
releases while collaborating better between the smaller teams.
When applied in tandem, Agile DevOps enables significantly faster development and
deployment while keeping the customer’s needs at the forefront. Continuous feedback
and integration become quicker and easier.
Tool stack and its implementation Now that the capabilities are understood, let us look
at how to use tools to actionize the capabilities in the team he aim of choosing the tool
stack is to build an automated pipeline using tools for performing the various software
development, testing, deployment and release activities. This helps in creating rapid,
reliable and repeated releases of working software with low risk and minimal manual overhead.
Here are the principles to be considered while choosing tools.
Principles to be considered
Repeatability : The automated pipeline needs to be executed frequently and multiple
times with consistency
Reliability : The automated pipeline should ensure reliable software
End to end automation : The activities from coding to release should be automated
100% source control : All the artifacts involved in the pipeline need to be
version controlled (ex. Source code, automated test cases, reports, binaries etc.)
Auto build quality : Pipeline should have quality auto-built by way of gating
conditions
Done is released : Pipeline should ensure that “done-ness” as per the definition of done
is only released to production
Continuous feedback : Tools provide continuous feedback by way of reports
Customer appetite for tooling : The availability of budget from customer, existing
tools and alliances, technology used in the project, feasibility of automation
The tools stacks are evolving and there are many vendors in this area. Practical tips
Tooling is a consulting exercise. The DevOps and Lean coach suggests using the Java
and open source stack for the system development at "Project" for the reasons
mentioned below.
Reasons
The tools involved in this stack are primarily open source, free and powerful
The project is an application development project using Java stack
Quick availability of these tools and no overhead of maintenance of licenses
The team is advised to get the OSS (Open Source Software) compliance for the open source
tools prior to the installation. OSS compliance refers to the compliance in terms of
using approved and supported source code.
There should be a policy and process to check the usage, purchase (as all open source software
is not free), management and compliance(some can be used for training but payment is required
if used commercially).Tools like Black Duck help in checking OSS compliance.
PEOPLE ASPECT
DevOps has direct positive effects to our experience as humans working with technology.
3 specific areas in which DevOps has direct, positive effects on our experiences as human
operators of software systems:
Reduced stress and anxiety
Offloading mind-numbing, repetitive work
Increasing collaboration and trust
1. Reduced Stress & Anxiety
One of the universal, shared experiences of folks in IT Development & Operations is
the pain of pushing out software to production. The stress around software
deployments, the pressure to make the right decisions on the fly, to fix issues in the
midst of outages that are costing your company thousands of dollars per hour in lost
revenue, is massive.
This stress is often exacerbated by lack of sleep over deploys that can last days. Once
the deploy is complete and the seemingly inevitable issues are exposed, the feelings of
frustration and dread as blame is assigned and decisions are cross-examined is truly
horrible. Such repeated experiences are a major contributor to engineer burnout.
DevOps addresses this IT pain point. DevOps makes software delivery a routine,
practiced, controlled event, with robust tests and automation to minimize human
involvement – in contrast to the traditional “big bang” deploys where the expectation
of “all hands on deck!” is the norm.
Of course, DevOps does not eliminate this stress instantly or completely – but it does
provide a path forward that if embraced, can provide substantial relief in this area. The
phrase “if it hurts, do it more often” is a DevOps mantra capturing this idea.
Drawbacks or Hardships
People (DevOps engineers and their managers) are having a hard time keeping up with
the avalanche of new tools and technologies to learn.
Organizations are having a hard time finding and retaining qualified personnel.
PROCESSES
The key purpose of DevOps is to reach agility in software development. It means that all
processes and stages of the creation and deployment are easily adaptable to changes thanks
to thorough communication and collaboration between the development and operations
departments.
DevOps process contains many useful DevOps practices that were developed through years
of implementing DevOps concepts in the software production business. All these developer
operations are aimed to ensure automation, heighten productivity, and provide quick ways of
resolving issues and fixing bugs in the software build processes.
Continuous Integration
According to this DevOps practice, the developer makes numerous daily modifications
to the shared repository's source code. When even little modifications are made to a
bigger codebase, they get to be tested and reported. Continuous integration (CI) aims
to provide quick feedback so that any flaws can be found and fixed right away.
Continuous Testing
To get quick input on the business risk connected to software release, continuous testing
is required as one of the DevOps practices. It is a difficult and crucial component of the
software. Testing is a necessity for software rating. Automated testing tools are
utilized because it is simpler to test continually rather than testing a whole piece of
software. The developer uses the test function to balance quality and speed.
Continuous Delivery
Continuous delivery (CD) is the capability to make adjustments, such as adding new
characteristics and features, managing configurations, fixing bugs, and putting
experiments into production. A continual daily upgrade is our driving force behind
continuous supply. If there is a mistake in the production code at that point, we can easily
repair it. So, here we are quickly, consistently, and with the least amount of overhead
creating and releasing our application.
Continuous Deployment
As soon as the code successfully completes all test cases, it is promptly deployed to the
manufacturing environment for production. Alternate versions of the code are always
Agile Waterfall
It separates the project development lifecycle Software development process is divided into distinct
into sprints. phases.
It follows an incremental approach Waterfall methodology is a sequential design process.
Agile methodology is known for its Waterfall is a structured software development
flexibility. methodology so most times it can be quite rigid.
Agile can be considered as a collection of Software development will be completed as one
many different projects. single project.
Agile is quite a flexible method which allows There is no scope of changing the requirements once
changes to be made in the project the project development starts.
development requirements even if the initial
planning has been completed.
Agile methodology, follow an iterative All the project development phases like designing,
development approach because of this development, testing, etc. are completed once in the
planning, development, prototyping and other Waterfall model.
software development phases may appear
more than once.
Test plan is reviewed after each sprint The test plan is rarely discussed during the test phase.