SEPM_UNIT III NOTES
SEPM_UNIT III NOTES
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.
Agile Software Development is widely used by software development teams and is considered
to be a flexible and adaptable approach to software development that is well-suited to changing
requirements and the fast pace of software development.
Agile Manifesto :
The Agile Manifesto was founded in February 2001 at a ski resort in Snowbird, Utah. 17
representatives from various programming and development backgrounds gathered to discuss
Agile methodologies and find a solution to the older processes with which they had become
frustrated. It is believed that by signing the manifesto, the authors “launched the ship” for Agile
software development.
The Agile Manifesto is a document that outlines the central values and principles of Agile
software development. Officially referred to as the Manifesto for Agile Software Development,
the guide aims to provide an effective model for teams to successfully adopt the philosophy of
Agile project management and use it to improve their work process.
The lightweight framework of the Agile Manifesto was designed to improve upon existing
software development processes, which were more complex and contained a lot of
The Agile Manifesto was founded on four key values, which are as follows:
-The first value gets straight to the core of Agile methodology: the focus is on the people. You
can use the best processes and tools available to support your projects, but they will only work if
your people are doing their best work. Your team is your most valuable resource.
-Communication plays a key role here — when people interact with each other regularly and
share their ideas, they build better products.
-Before Agile practices were fully implemented, teams would spend hours creating exhaustive
documents with technical specifications, requirements, and more. These lists would be prepared
before developers started to write the code, meaning the whole process was delayed as the
documentation took so long to compile.
-The third value of the Agile Manifesto highlights the importance of customer collaboration.
This is viewed as superior to contract negotiation, which involves outlining product requirements
with the customer before commencing the project and then renegotiating these deliverables at a
later stage. The issue here is that the customer is not engaged throughout the development cycle,
so teams lose out on user feedback that could enhance the product.
-When you bring your customers into the development process, you can ask for their opinions
regularly and take their suggestions on board
-The Agile mentality turns this rigid method on its head, arguing that change can benefit the
software development process. When you embrace change, you open yourself up to new
possibilities and ways to improve. Agile teams work in short, iterative cycles, meaning they can
react quickly and implement changes on a continuous basis. This ultimately leads to better
products.
These four values form the basis of Agile software development, highlighting key priority areas
for teams to focus their energies on. The core values are supported by the 12 Agile Manifesto
principles.
The 12 Agile Manifesto principles :
1. Our highest priority is to satisfy the customer through early and continuous delivery of
valuable software.
What is the number one rule in software development? Keep your customer happy. Aim to
deliver software to your users at regular intervals throughout the project life cycle, rather than
keep them waiting for one final deliverable.
Software developers should be capable of handling last-minute changes to a project. They should
be flexible enough to turn these changes into improvements quickly, minimizing delays and
ensuring an uninterrupted flow of work.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with
a preference to the shorter timescale.
4. Business people and developers must work together daily throughout the project.
As mentioned, collaboration is key to Agile project management. When the project stakeholders
communicate on a daily basis, it minimizes the risk of confusion and ensures that everyone’s
goals remain aligned.
5. Build projects around motivated individuals. Give them the environment and support
they need, and trust them to get the job done.
When you have the right people for the task, the project is more likely to be successful. Spend
time choosing the perfect team, equip them with the resources they need, and trust them to
deliver exceptional results.
6. The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
Barriers are broken easily when teams can converse in person. Co-locate teams where possible to
promote good communication and boost the flow of information. In a remote working situation,
Zoom is a great alternative to phone or email, enabling people to interact more effectively via
camera.
To keep your customers satisfied, you must deliver high-quality software. That is your ultimate
priority and your metric for success — everything else is a secondary consideration.
8. Agile processes promote sustainable development. The sponsors, developers, and users
should be able to maintain a constant pace indefinitely.
Agile teams must be consistent throughout their project life cycle, maintaining their speed
throughout. This means they can sustain a constantly evolving environment without succumbing
to delays.
The Agile approach is to not overcomplicate things: meet your requirements and do just enough
to complete the task. Don’t waste time with additional steps that don’t add any real value to your
product.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
Why micromanage teams when they are skilled enough to work on their own? By allowing them
to work within their own structures, you create more room for ideas to flourish, ultimately
delivering better results.
12. At regular intervals, the team reflects on how to become more effective, then tunes and
adjusts its behavior accordingly.
When you review team performance regularly, you can spot issues before they escalate, as well
as potential areas for improvement. A healthy Agile team is one that self-reflects in order to
eliminate unhelpful practices and advance skills.
What is “Agility-
The change requires a modification to the architectural design of the software, the design and
construction of three new components, modifications to another five components, the design of
new tests, and so on. Costs escalate quickly, and the time and cost required to ensure that the
change is made without unintended side effects is nontrivial.
Agility argue that a well-designed agile process “flattens” the cost of change curve (Figure,
shaded, solid curve), allowing a software team to accommodate changes late in a software
project without dramatic cost and time impact.
Agile is certainly not new. Agile methods have been around for a long time. The frameworks that
are now known collectively as agile mainly evolved in the late 1980s and 1990s, which means
agile is mature and an approach that is inherently familiar to many people.
I some organisations is that they try to implement an agile operating model or a single agile
framework “by the book” and without understanding the transformational complexity. Therefore,
they either fail to implement agile, or they do achieve some success but at significantly higher
cost and pain than they would have done if they had managed the transformation more
effectively.
While a transformation to agile can deliver huge benefits, the reality is that the majority of
transformations go through a learning curve. While people and organisations are learning, the
delivery capability can actually go downwards before it makes the step-change upwards and
begins to achieve the improved delivery capability.
It is important to understand that the manifesto does not say that documentation is not required, it
says the focus is on producing working software instead of spending exhaustive amounts of time
creating detailed documentation up front.
Myth 5 – Agile means “hacking” code together with little thought of architecture or design
“Hacking” in agile means cobbling together an IT system with little or no design or architectural
thinking.
Agile is not the answer to all IT problems. There is no single answer to all IT problems, rather
it’s about integrating different frameworks each of which provides part of the answer.
Understanding agile is not something that can be achieved by simply reading a book. It is a very
good idea to select some of the agile books from the leading agile exponents and read those, but
just reading a book cannot replace the practical experience that is essential to enabling an agile
mindset and successfully transforming an organisation or team to become agile.
It is true that the Agile Manifesto describes agile in the context of software delivery, but agile
can be applied successfully in business environments that are not exclusively software-related
Myth 9 – Agile should replace everything all at once in a big bang transformation
Transforming capability is a long-term process of learning and change. Businesses evolve and so
does the best way to do business. It is therefore a mistake to implement a big bang agile
transformation and then just assume further improvement is no longer necessary.
The vast majority of agile frameworks involve frequent, regular and evolutionary planning. If a
team is largely doing maintenance work or defect fixing, or there is no need for the customer to
look any further than a couple of weeks when creating a product, they will probably only be
planning in single iterations/sprints. Agile isn’t “just do it” – there is significant planning and re-
planning involved when required.
XP’s origin dates back to the 90s when Kent Beck – who would later become one of the
authors of the Agile Manifesto – created it when hired to lead Chrysler’s Comprehensive
Compensation System team.
What sets XP apart from the other agile methodologies is that XP emphasizes the technical
aspects of software development. Extreme programming is precise about how engineers work
since following engineering practices allows teams to deliver high-quality code at a sustainable
pace.
XP Process :
Industrial XP :
The industrial XP (IXP) can be defined as the organic evolution of XP. It is customer
centric. It has expanded role for customers and advanced technical practices. Various new
practices that are appended to XP to create IXP are as follows –
iii. The organization should support quality programs and continuous improvement.
2. Project Community : Skilled and efficient people must be chosen as the agile team members
for the success of the project. The team is referred as the community when extreme programming
approach is considered. The project community consists of technologies, customers, and other
stakeholders who play the vital role for the success of the project. The role of the community
members must be explicitly defined.
3. Project Chartering : Project chartering means assessing the justification for the project as a
business application. That means, the IXP team assess whether the project satisfies the goals and
objectives of the organization.
4. Test Driven management : For assessing the state of the project and its progress the industrial
XP needs some measurable criteria. In test driven management the project is tested with the help
of these measurable criteria.
5. Retrospectives : After delivering the software increment, the specialized review is conducted
which is called as retrospective. The intention of retrospectives is to improve the industrial XP
process.
6.Continuous learning : The team members are inspired and encouraged to learn new methods
and techniques that can improve the quality of the product.
SCRUM :
Scrum is an agile project management framework that helps teams structure and manage their
work through a set of values, principles, and practices. Much like a rugby team (where it gets its
name) training for the big game, scrum encourages teams to learn through experiences, self-
organize while working on a problem, and reflect on their wins and losses to continuously
improve.
While the scrum I’m talking about is most frequently used by software development teams, its
principles and lessons can be applied to all kinds of teamwork. This is one of the reasons scrum
5. At the end of the Sprint, the development team delivers the Product Backlog Items
selected during Sprint Planning. The development team holds a Sprint Review to show
the customer the increment and get feedback. The development team and product owner
also reflect on how the Sprint has proceeded so far and adapted their processes
accordingly during a retrospective.
6. The Team repeats steps 2–5 until the desired outcome of the product has been met.
Scrum Terminologies :
1) The Product Owner- The product owner is a role team responsible for managing the product
backlog in order to achieve the desired outcome that the team seeks to accomplish.
2) The Scrum Master- The scrum master is the team role responsible for ensuring the team lives
agile values and principles and follows the processes and practices that the team agreed they
would use.
3) The Development Team- The development team consists of the people who deliver the
product increment inside a Sprint.
Sprint-
The heartbeat of scrum. Each Sprint must bring the product closer to the product goal and lasts
one month or less.
-A team starts out a Sprint with a discussion to determine which items from the product backlog
they will work on during the Sprint. The end result of Sprint Planning is the Sprint Backlog.
The Daily Scrum is a short (usually limited to 15 minutes) discussion where the team coordinates
their activities for the following day.
Sprint Review-
At the end of the Sprint, the entire team (including the product owner) reviews the results of the
sprint with stakeholders of the product. The purpose of this discussion is to discuss, demonstrate,
and potentially give the stakeholders a chance to use, the increment in order to get feedback.
Sprint Retrospective-
At the end of the Sprint following the sprint review, the team (including the product owner)
should reflect upon how things went during the previous sprint and identify adjustments they
could make going forward.
Software Engineering & Project Management | Ms.Snehal Shinde 111
Product Backlog-
A pop-up, ordered list of what is needed to improve the product and includes the goal of the
product.
Sprint Backlog-
The Sprint Backlog is the collection of product backlog items selected for delivery in the Sprint,
and if the team identifies tasks, the tasks necessary to deliver those product backlog items and
achieve the Sprint Goal.
Burn-down Chart :
A burn down chart is a graphical representation of work left to do versus time. It is often used
in agile software development methodologies such as Scrum. However, burn down charts can be
applied to any project containing measurable progress over time.
Typically, in a burn down chart, the outstanding work is often on the vertical axis, with time
along the horizontal. It is useful for predicting when all of the work will be completed. In
the Daily Scrum the Development Team updates the Sprint Burn Down and plots the remaining
Agile Practices :
Test Driven Development (TDD) is software development approach in which test cases are
developed to specify and validate what the code will do. In simple terms, test cases for each
functionality are created and tested first and if the test fails then the new code is written in order
to pass the test and making code simple and bug-free.
The simple concept of TDD is to write and correct the failed tests before writing new code
(before development). This helps to avoid duplication of code as we write a small amount of
1. Write a test
2. Make it run.
3. Change the code to make it right i.e. Refactor.
4. Repeat process.
2.Refactoring :
Why should we refactor our code when it works fine? The goal of refactoring is not to add new
functionality or remove an existing one. The main goal of refactoring is to make code easier to
maintain in future and to fight technical debt.
3.Pair Programming :
Sometimes pair programming is also known as pairing. Pairing Variations : There are three
pairing variations –
Newbie-newbie pairing can sometimes give a great result. Because it is better than one solo
newbie. But generally, this pair is rarely practiced.
Expert–newbie pairing gives significant results. In this pairing, a newbie can learn many things
from expert, and expert gets a chance to share his knowledge with newbie.
Expert–expert pairing is a good choice for higher productivity as both of them would be expert,
so they can work very efficiently.
2) Detection of coding mistakes becomes easier – Navigator is observing each and every line of
code written by driver, so mistakes or error can be detected easily.
3) Mutual learning – Both of them can share their knowledge with each other and can learn many
new things together.
4) Team develops better communication skills – Both of them share knowledge and work
together for many hours a day and constantly share information with each other so this can help
in developing better communication skills, especially when one of members is a newbie and
other is an expert.
1) Team Fit – High-intensity communication of pair programming is not a good fit for every
developer. Sometimes, drivers are supposed to speak loud as they write code. Some people may
not agree on idea of sitting, literally shoulder-to-shoulder, with a colleague for eight hours a day.
Some experienced developers are more productive in solo rather than in pair programming.
2) Newbie-newbie pairing problem – Newbie–newbie pairing can produce results better than two
newbie working independently, although this practice is generally avoided because it is harder
for newbie to develop good habits without a proper role model.
4.Continuous Integration :
Continuous integration is the developer practice of constantly integrating code into your code
base. The idea is to make small changes and commit these code changes into a shared repository
frequently — at least once daily but usually multiple times a day. Each integration is verified by
an automated build, which includes testing to detect any integration errors.
process. This significantly reduces integration issues and makes fixing a broken build easier. It
also helps reduce the backlog of non-critical defects because these problems are remediated
before the pressure for new features builds. Frequent check-ins also promote collaboration across
teams and allow developers to get better quality software out the door to customers faster.
Automation is a large part of successfully integrating and validating these continuous code
changes. CI relies heavily on automation tools such as source code management systems and
continuous integration servers to make it possible to build, package, and test software.
1) Scripted testing:
In Scripted testing to test specific functionality a tester follows a detailed step-by-step systematic
approach. For this testing in advance, the tester has to define the test cases of the functionality
along with its instructions to perform it and finally the expected outcome of the test. Testers
follow the testing instructions and steps but in case they may deviate from the script which is
very minimal in the case of scripted testing. It ensures that every functionality must be tested and
passed. In this scripted testing skilled resources, well-scripted instructions test cases and
verification are required.
2) Exploratory testing:
4 This approach emphasizes prediction and This approach emphasizes adaptability and
decision-making. learning.
5 At the end of the test cycle bugs are This approach focuses more on test design.
detected.
6 Testers need to follow the sequence and Testers can alter tests on the fly.
steps of test cases which are designed in
advance.
7 Feedback is slower. Enables rapid feedback.
8 In this testing, all test scripts and test cases As with scripted testing, in this test cases
are designed and reviewed in advance. cannot be reviewed in advance.
9 At the end of the testing cycle, testers can As there are no clear and documented test
confirm if all the requirements have been cases, there is no way to check and confirm
met or not. that all the requirements have been met.
10 Managing test coverage is easier. Managing test coverage is challenging.