Agile Software Development
syllabus
• UNIT–I: Introduction: The Agile manifesto, Agile methods, XP: Extreme
Programming, DSDM, SCRUM, feature- Driven Development, modelling
misconceptions, agile modelling, tools of misconceptions, updating agile
models.
• UNIT–II: Extreme Programming: Introduction, core XP values, the twelve XP
practices, about extreme programming, planning XP projects, test first coding,
making pair programming work
• UNIT–III: Agile Modelling and XP: Introduction, the fit, common practices,
modelling specific practices, XP objections to agile modelling, agile modelling
and planning XP projects, XP implementation phase.
• UNIT–IV: Feature-Driven Development: Introduction, incremental software
development, Regaining Control, The motivation behind FDD, planning an
iterative project, architecture centric, FDD and XP
• UNIT–V: Agile Methods with RUP and PRINCE2 and Tools and Obstacles:
Agile modelling and RUP, FDD and RUP, agile methods and prince2, tools to
help with agile development, Eclipse, An agile IDE, obstacles to agile software
development, management intransigence, the failed project syndrome,
contractual difficulties, familiarity with agility
Introduction: The Agile manifesto, Agile methods, XP: Extreme Programming, DSDM, SCRUM,
feature- Driven Development, modelling misconceptions, agile modelling, tools of misconceptions,
updating agile models.
THE WATERFALL MODEL:
• First sequential linear model
– sometimes called the classic life cycle, suggests a systematic
sequential approach.
– Simple and easy to understand.
Agile methodology
• Agile means ‘the ability to move quickly and easily’ and respond to change
rapidly.
• Agile is an iterative and incremental process.
• Agile advantages:
customer no need to wait for long time
we develop ,test and release piece of software to the customer with few
number of features.
We can accept/accommodate requirement changes.
Agile Manifesto:
The Agile Manifesto is a statement of principles that outlines a new approach to software
development, emphasizing flexibility, collaboration, and customer satisfaction.
It serves as a guide for teams adopting the Agile mindset.
Agile’s four main values are:
1. Individuals and interactions over processes and tools
2. Working software over comprehensive documentation
3. Customer collaboration over contract negotiation
4. Responding to change over following a plan
Based on these value statements, a set of 12 principles have been identified.
The aim of these principles is twofold.
First, they are intended to help people gain a better understanding of what agile software development is all about.
Second, they can be used to help to determine whether you as a developer are following an agile methodology or
not.
TWELVE Agile Manifesto Principles
1. Highest priority is to satisfy the customer.
2. Welcome change.
3. Deliver working software frequently.
4. Business people and developers must work together daily.
5. Build projects around motivated individuals.
6. Face-to-face communication is best.
7. Working software is the primary measure of progress.
8. Promote sustainable development.
9. Continuous attention to technical excellence and good design enhances
agility.
10. Simplicity – the art of maximizing the amount of work not done – is
essential.
11. The best architectures, requirements and design emerge form self-
organising teams.
12. Introspection – teams should regularly review itself and its processes to
try and improve.
Agile methods
Agile methods are a group of frameworks and practices based on the principles outlined
in the Agile Manifesto.
These methods emphasize collaboration, flexibility, iterative progress, and delivering value
to customers quickly.
The five core Agile methods mentioned are:
eXtreme Programming (or XP),
DSDM – Dynamic system development method
SCRUM
FDD - Feature-Driven Development
Agile Modelling
Scrum is a framework which is based on agile principles, a framework that handle simple, complicated and complex
software development.
Scrum is based on continuous improvement in product and process.
Scrum deliver software frequently (value) .
In scrum project move forward with series of iteration called Sprints. Each sprint size is typically one to four weeks
long.
The following are the roles in Scrum:
1.Product Owner
2.Scrum Master
3.Team
Product Owner
•Product Owner (PO) is client's representative.
•Define features of product.
•Decide release date and content.
•Priorities features according to market value.
•Be responsible for the profitability of product.
•Accept or reject work items.
Scrum Master
•Coach for scrum team.
•Ensure team's productivity.
•Build winning team.
•Apply agile principles and make system effective.
Team
•5-9 Members team (Developer , Tester).Self-organizing, High performance team.
•Build winning product.Work collaboratively and share responsibilities.
Scrum has simple roles, activities and artifacts
Scrum Activities
1.Sprint Planning
2.Daily Scrum
3.Sprint Review
4.Sprint Retrospective
5.Product Backlog Refinement
DSDM is an iterative Agile product development framework.
It aims to work efficiently, delineate stages of the development life cycle and provide tangible benefits to all parties
involved with a project . This method works throughout the entire project life cycle.
DSDM is an Agile method that focuses on the full project lifecycle, DSDM (formally known as Dynamic Systems
Development Method) was created in 1994, after project managers using RAD (Rapid Application Development) sough
more governance and discipline to this new iterative way of working.
dynamic systems development method is an iterative approach to software development but adds additional
discipline and structure to the process.
It's also vendor-independent, meaning any technical environment or business can use it without access to any specific
techniques and tools.
DSDM’s success is due to the philosophy “that any project must be aligned to clearly defined strategic goals and
focus upon early delivery of real benefits to the business."
DSDM Life cycle
1. Feasibility Study:
It establishes the essential business necessities and constraints related to the
application to be designed then assesses whether or not the application could be
a viable candidate for the DSDM method.
2. Business Study:
It establishes the use and knowledge necessities that may permit the
application to supply business value; additionally, it is the essential application
design and identifies the maintainability necessities for the application .
The Business Study phase of the project should have three outputs
1. Business Area Definition. Identifies the high-level requirements and
provides a process description of the end product.
2. System Architecture Definition. Sketches out the architecture of end
system.
3. Outline Prototyping Plan. This states the prototyping strategy to be
adopted for the development of the end product
3. Functional Model Iteration:
• Analysis of the features to be designed and implemented
• It produces a collection of progressive prototypes that demonstrate
practicality for the client.
The intent throughout this unvarying cycle is to collect further necessities by
eliciting feedback from users as they exercise the paradigm.
4. Design and Build Iteration:
• Designing and Building the features to be implemented
during this phase. This involves reviewing the designs
produced so far, the functional prototypes, as well as the
creation of code to implement the required functionality.
• The primary output of this state is the tested system
5. Implementation:
It places the newest code increment into the operational
surroundings. It ought to be noted that:
(a) the increment might not 100% complete or,
(b) changes are also requested because the increment
is placed into place.
In either case, DSDM development work continues by
returning to the useful model iteration activity.
Supporting this philosophy with the eight principles allows teams to maintain focus and achieve
project goals.
The Eight Principles of DSDM:
1.Focus on the business need
2.Deliver on time
3.Collaborate
4.Never compromise quality
5.Build incrementally from firm foundations
6.Develop iteratively
7.Communicate continuously and clearly
8.Demonstrate control
1.Focus on the business need: DSDM teams must establish a valid business case and ensure
organizational support throughout the project
2.Deliver on time: Work should be time-boxed and predictable, to build confidence in the development
team.
3.Collaborate: DSDM teams must involve stakeholders throughout the project and empower all members
of the team to make decisions.
4.Quality: To ensure high quality, the level of quality should be agreed with the business at the start of the
project. This is enforced through continuous testing, review, and documentation.
5.Build incrementally from firm foundations: Teams must do enough design work up front to ensure
they know exactly what to build, but not too much to slow development.
6.Develop Iteratively: Take feedback from the business and use this to continually improve with each
development iteration. Teams must also recognize that details emerge as the project or product develops
and they must respond to this.
7.Communicate continuously and clearly: Holding daily stand-up sessions, encouraging informal
communication, running workshops and building prototypes are all key DSDM tools. Communicating
through documents is discouraged - instead, documentation must be lean and timely.
8.Demonstrate control: The project manager and team leader should make their plans and progress
visible to all and focus on successful delivery.
In any project, there is a fixed completion date, which provides an overall timebox
for the work to be carried out.
DSDM refines the concept of timeboxing by nesting shorter timeboxes of 2–6
weeks within the overall time frame.
Each timebox will typically pass through three phases.
Investigation–a quickpass to see whether the team is taking the right direction.
Refinement–to build on the comments resulting from the review at the end of
investigation.
Consolidation– the final part of the timebox to tie up any loose ends.
A clear prioritization is developed ensuring that the essential work is completed within
the given timeframe
MoSCoW stands for: Must haves: fundamental to the projects success “on time”
Should haves: important but the projects success does not rely on these
Could haves: can easily be left out without impacting on the project “on budget”
Won’t have this time round: can be left out this time and done at a later date.
Advantages of dynamic systems development method
Delivering a project on time but with flexibility.
Progress can be easily understood across the organization
Business cases are at the core of the DSDM model, ensuring delivered projects
have real business value.
Disadvantages of the dynamic systems development method
•Large management overhead and costly implementation ,as it requires users and
developers both to be trained to employ it effectively.
•It may not be suitable for small organizations
DSDM vs. scrum
Both DSDM and Scrum are methodologies created to bring the principles of the agile philosophy to life. At a glance they can look
similar:
•Both take an iterative and incremental approach to completing difficult projects or developing complex products.
•Both break up larger tasks with defined deadlines into a list of subtasks to complete within the given timeframe.
•Both clearly assign distinct responsibilities based on separate roles
But the two methodologies implement the agile principles very differently. Here's how:
•The DSDM methodology focuses on projects with a clear scope and an obvious start and finish date.
• Scrum focuses instead on products with a growing list of desired features and are constantly in development.
•Products never need to be thought of as finished, dealing instead with product releases.
So how do you choose DSDM vs. Scrum?
If you’re working on a product that will keep being developed, have a smaller team with fewer stakeholders, and are willing to add
features throughout the development lifecycle then try Scrum.
Otherwise, if your project has a defined end date, has many stakeholders who hold distinct roles, and has a clear idea of success
at the end of the project, then the DSDM methodology might be the better solution.
Feature Driven Development :
It is an agile iterative and incremental model that focuses on progressing the features of the developing software.
The main motive of feature-driven development is to provide timely updated and working software to the client.
In FDD, reporting and progress tracking is necessary at all levels.
+Work starts with building a domain object model and identifying all the features and feature sets (groups of features).
After prioritizing the features, work proceeds iteratively and incrementally.
It works well for large teams and long, complex projects.
Feature Driven Development bridges the gap between traditional controlled waterfall approaches and the emergent processes
found in agile approaches like extreme programming, and scrum.
Feature Driven Development (FDD) is an Agile framework that focuses on features. It's a framework which
•Is short and iterative
•Emphasizes on Quality
•In addition to the above, it is Design compatible with large projects
•Delivers frequent features in all the iterations
•Moreover, it provides accurate progress information
•Is famous among client, developers, and managers
•The Values of a framework are the values that make that framework different from others. There are a few values that
are important and affect all the aspects.
•Firstly, it focuses on the process and not the results.
•Secondly, it adopts a Systematic approach to maintain the system.
•Thirdly, it keeps the process simple.
•In addition to the above, process steps should be valuable to each team member
•Moreover, the right processes move to the background.
features should have the following attributes:
Features should be small and “useful in the eyes of system stakeholders.”
Features can be grouped into business-related groupings (called variously feature sets or work packages).
Features focus developers on producing elements within the system that are of tangible benefits to system
stakeholders.
Features are prioritised.
Features are schedulable.
Features have an associated (estimated) cost.
Can be grouped together into short iterations (possibly as short as two weeks).
Feature-driven development defines five steps in two phases: planning and
construction.
fig:Overall structure of an FDD project
Agile modeling as “…a practice-based methodology for effective modeling and documentation of software-based
systems.
Simply put, Agile Modeling (AM) is a collection of values, principles, and practices for modeling software that can be
applied on a software development project in an effective and lightweight manner.”
The modeling adds to existing Agile methodologies such as the Rational Unified Process (RUP) or extreme programming
(XP).
Agile modeling helps developers create a customized software development process that fulfills their development needs
yet is flexible enough to adjust to future situations.
it has three main goals:
1)The definition and promotion of a set of values, principles and practices that help to produce the appropriate models.
2. Guidance on how to apply modelling to an agile software development.
3. Guidance on how to apply agile modelling to other software processes (such as RUP).
• So, Agile Modelling “aims to model just enough and no more” but what does this mean? What is “just
enough” and how do you know when you have done just enough!
• Agile models should:
1. Agile models fulfill their purpose.
2. Agile models are understandable
3. Agile models are sufficiently accurate.
4. Agile models are sufficiently consistent.
5. Agile models are sufficiently detailed.
6. Agile models provide positive value.
7. Agile models are as simple as possible.
Modelling Misconceptions
• Models equal documentation.
• Modelling implies a heavyweight software process.
• You must “freeze” the requirements.
• Your design is carved in stone.
• You must use a CASE tool.
• You can think of everything from the start.
• All developers know how to model.
• Modelling is a waste of time.
• The world revolves around the data model.
Tool Misconceptions: considering some misconceptions and myths relating to the use of tools, modelling and
UML.
UML requires CASE tools.
Agile modellers don’t use CASE tools.
UML is all you need!
The CASE tool is master.
Updating Agile Models:
The general rule for updating models in Agile is to update them “when it hurts not to”(update them only when
it necessary)
some models may never be required again and can be thrown away.
For example, the hand-drawn models used to allow myself and a colleague to understand how two areas of the
system will interact do not necessarily need to be saved for posterity.
Extreme Programming (XP)
Extreme Programming (XP) is an Agile software development methodology that focuses on delivering high-
quality software through frequent and continuous feedback, collaboration, and adaptation.
XP emphasizes a close working relationship between the development team, the customer, and stakeholders,
with an emphasis on rapid, iterative development and deployment.