Chapter 3 - Agile Development-1
Chapter 3 - Agile Development-1
S 3 MCA
MACFAST
• In 2001, Kent Beck and 16 other noted
software developers, writers, and consultants
(referred to as the “Agile Alliance”) signed the
“Manifesto for Agile Software Development.”
It stated:
• What is it? Agile software engineering
combines a philosophy and a set of
development guidelines. The philosophy
encourages customer satisfaction and early
incremental delivery of software; small, highly
motivated project teams; informal methods;
minimal software engineering work products;
and overall development simplicity.
• Who does it? Software engineers and other project
stakeholders (managers, customers, end users)
work together on an agile team—a team that is
self-organizing and in control of its own destiny.
• Why is it important? The modern business
environment that spawns computer-based systems
and software products is fast-paced and
everchanging. Agile software engineering
represents a reasonable alternative
• What are the steps? Agile development might
best be termed “software engineering lite.”
The basic framework activities—
communication, planning, modeling,
construction, and deployment— remain. But
they morph into a minimal task set that
pushes the project team toward construction
and delivery
• What is the work product? Both the customer and
the software engineer have the same view—the
only really important work product is an operational
“software increment” that is delivered to the
customer on the appropriate commitment date.
• How do I ensure that I’ve done it right? If the agile
team agrees that the process works, and the team
produces deliverable software increments that
satisfy the customer, you’ve done it right.
Overview
• Readiness acceptance
– Does an appropriate development environment exists to support IXP?
– Will the team be populated by stakeholders?
– Does the organization have a distinct quality program that support continuous process
improvement?
– Will the organizational culture support new values of the agile team?
– Will the broader project community be populated appropriately?
• Project community (finding the right people for the project team; the concept of the
“team” should morph into that of a community.)
• Project chartering (determining whether or not an appropriate business justification
exists to justify the project)
• Test-driven management (used to establish measurable destinations and criteria for
determining when each is reached)
• Retrospectives (specialized technical review focusing on issues, events, and lessons-
learned across a software increment or entire software release)
• Continuous learning (vital part of continuous process improvement)
IXP
• Apart from the above,
• Story-driven development (SDD) insists that
stories for acceptance tests be written before a
single line of code is generated.
• Domain-driven design (DDD) is an improvement
on the “system metaphor” concept used in XP.
• Pairing,
• Iterative usability are also used as part of I X P
XP Issues
• XP practices are worthwhile, but others have
been overhyped, and a few are problematic.
• the codependent nature of XP practices are
both its strength and its weakness.
• Because many organizations adopt only a
subset of XP practices, they weaken the
efficacy of the entire process.
XP Issues..
• Scrum principles
– Small working team used to maximize communication, minimize
overhead, and maximize sharing of informal knowledge
– Process must be adaptable to both technical and business
challenges to ensure best product produced
– Process yields frequent increments that can be inspected, adjusted,
tested, documented and built on
– Development work and people performing it are partitioned into
clean, low coupling partitions
– Testing and documentation is performed as the product is built
– Provides the ability to declare the product done whenever required
Scrum..
• Guiding principles
– Active user involvement
– Teams empowered to make decisions
– Fitness foe business purpose is criterion for deliverable
acceptance
– Iterative and incremental develop needed to converge on
accurate business solution
– All changes made during development are reversible
– Requirements are baselined at a high level
– Testing integrates throughout life-cycle
– Collaborative and cooperative approach between stakeholders
Dynamic Systems Development Method
• Framework activities
– Develop overall model (contains set of classes depicting business
model of application to be built)
– Build features list (features extracted from domain model, features are
categorized and prioritized, work is broken up into two week chunks)
– Plan by feature (features assessed based on priority, effort, technical
issues, schedule dependencies)
– Design by feature (classes relevant to feature are chosen, class and
method prologs are written, preliminary design detail developed,
owner assigned to each class, owner responsible for maintaining design
document for his or her own work packages)
– Build by feature (class owner translates design into source code and
performs unit testing, integration performed by chief programmer)
FDD..
• FDD provides greater emphasis on project
management guidelines and techniques than
many other agile methods.
• To accomplish deadlines, FDD defines six
milestones during the design and
implementation of a feature: “design
walkthrough, design, design inspection, code,
code inspection, promote to build”
Lean Software Development Principles