Title: Agile%20Software%20Development
1Agile Software Development
Umar K. Munroe MSCS Candidate Union
College 1/9/2004
2Topics of Discussion
- Why an alternate approach
- Overview of Agile Software Development
- Agile Processes
- Limitations of Existing Agile Processes
- Adoption Future in Industry
3Why an alternate software development approach?
- Traditional Approaches ? Slow Rigid
- Highly structured
- Detailed process scripts
- Required Artifacts (i.e. documents)
4Why an alternate software development approach?
- Internet mobile technology increase demand for
software development to - to be faster
- more responsive to change
- Traditional methods arent exactly working well
- 13,522 IT projects (Standish Group, 2002)
- 34 on-time, on-budget, sufficient functionality
- 51 late, over-budget, less functionality
- 15 fail
5Agile Software Development
- Quick development
- Responsive to changing requirements
- Simple, straightforward process
- Frequent customer involvement and feedback
- Guide development
- Iterative, incremental development
- Provides flexibility, responsiveness
6Agile Alliance
- In 2001, software industry experts formed the
Agile Alliance - Goals
- Outline values and principles of agile software
development - Promote agile software development in industry
- http//www.agilealliance.org
7Agile Manifesto
8Value 1 Individuals and interactions over
process and tools
- A good process will not save the project from
failure if the team doesnt have strong players,
but a bad process can make even the strongest of
players ineffective. Robert C. Martin - people and their relationships most important to
a successful project
9Value 1 Individuals and interactions over
process and tools
- Team
- motivated
- good programmers (not necessarily most talented)
- excellent communication skills
- Tools and environment built around team, not vice
versa
10Value 2 Working software over
comprehensive documentation
- Documentation produced only when necessary
- Short one or two dozen pages at most
- Less time
- Salient describing the overall design rationale
and only high level structures in the system - Details likely to change
- Primary goal is working software
- Demonstrated to customer frequently
- Measure of progress
11Value 3 Customer collaboration over
contract negotiation
- "A contract that specifies the requirements,
schedule, and cost of a project is fundamentally
flawed." Robert C. Martin - Contracts govern the working relationship between
developers and customer - Customer is intimately involved
- Guide development
12Value 4 Responding to change over following
the plan
- Change is expected
- Planning Strategy (iterative)
- a detailed plan over the next 2 weeks
- a very rough plan for the next 3 months
- an extremely crude plan beyond 3 months
- Minimize time wasted planning too far into the
future
13Agile Development 12 Principles
- Our highest priority is to satisfy the customer
through early and continuous delivery of valuable
software - Welcome changing requirements, even late in
development. Agile processes harness change for
the customers competitive advantage - Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference of a shorter time scale - Business people and developers must work together
daily throughout the project
14Agile Development 12 Principles
- Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done. - The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation. - Working software is the primary measure of
progress - Agile process promote sustainable development.
The sponsors, developers, and user should be able
to maintain a constant pace indefinitely.
15Agile Development 12 Principles
- Continuous attention to technical excellence and
good design enhances agility. - Simplicity the art of maximizing the amount of
work not done is essential - The best architectures, requirements, and designs
emerge from self organizing teams - At regular intervals, the team reflects on how to
become more effective, then tunes and adjusts its
behavior accordingly
16Agile Processes
- Typically,
- Less structured
- Practices and rules
- Selected Agile Processes
- eXtreme Programming (XP)
- Scrum
- Dynamic Systems Development Method (DSDM)
17eXtreme Programming (XP)
- Most famous and documented agile process
- Rules practices
- Developed by Kent Beck mid 1990s
- More info
- http//www.extremeprogramming.org
18XP Concepts/Practices
- Customer Team Member
- Highly accessible (on-site)
- User Stories over detailed requirements
- Describe functionality
- Reduces unnecessary upfront restrictions
- Simple Design
- Quick, easy, sufficient
19XP Concepts/Practices
- Test Driven Development
- Tests written first, code written to make tests
pass - Automated
- Acceptance Tests
- Verify user stories
- Written before implementation
- Short Cycles
- 2-3 month releases
- 2 week Iterations
20XP Concepts/Practices
- Pair Programming (2 people, 1 computer)
- Generate production code
- Transfer Knowledge
- Better Quality ? Faster development
- Collective Ownership
- Team knowledgeable in all aspects of project
- Open Workspace
- Easy access for conversation
- Limits team size (lt10 people)
21XP Concepts/Practices
- Continuous Integration
- Refactoring
- tiny transformations to improve the structure of
the code without changing its behavior - continuous
- Metaphor
- Provides big picture of the system
22XP Concepts/Practices
- Sustainable Pace
- 40 hr week
- Planning Game
- Plan made at the start of each iteration and
release - Customer decides which user stories to implement
next
23XP Project Lifecycle
24Scrum
- Management approach using existing processes and
practices - empirical approach based in control systems
theory - Developed (mid 90s) maintained by Advanced
Development Methods (ADM, Inc) http//www.controlc
haos.com - Training and certification available
25Scrum Key Concepts/Practices
- Product Backlog
- Defines everything needed in the final product
- Goals, Resources
- Constantly updated
- Sprint (Cycles)
- 30 days
- Production of an executable product increment
- Requirements relatively frozen during Sprint
26Scrum Key Concepts/Practices
- Sprint Planning Meeting
- Goals and functionality of sprint
- Decide an implementation approach
- Sprint Backlog
- Items specific to the Sprint from the Product
Backlog - Small teams (5 to 9 people)
27Scrum Key Concepts/Practices
- Daily Scrum Meeting
- 15 minutes
- 3 questions addressed by each team member
- What did you do since the last meeting?
- Any obstacles or issues?
- What will you do before the next meeting?
- Sprint Review Meeting
- Demonstrate implemented functionality
- Make decisions as to the next sprint
28Scrum Sprint Lifecycle
29Feature Driven Development (FDD)
- Focuses on the design and implementation
- Well defined process
- Detailed Process Scripts
- http//www.nebulon.com/articles/fdd/download/fddpr
ocessesA4.pdf - Utilizes best practices found to be effective in
industry - Developed by Peter Coad, Jeff De Luca, And
Stephen Palmer in the late 1990s, early 2000s
30FDD Key Concepts/Practices
- Features
- functionality having direct value to customer
- Implementable in 2 weeks or less
- Domain Object Modeling
- Exploration and analysis of project domain
- Results in a framework where features are added
- Object Oriented Design
- Individual Code Ownership
- Unit Tests and Inspections
31FDD Key Concepts/Practices
- Iterations by feature(s)
- 2 weeks
- Regular Builds
- Configuration Management
- Progress Reporting
32FDD Process
- Five Phase Process
- 1 Develop the Overall Model
- Mini-teams of 3 or less develop models for the
entire project - Teams reassemble and decide a best model
- Participation of Customer paramount
- 2 Build a Features List
- Break down project into 2 week implementable
features - 3 Plan By Feature
- Plan features to be implemented based on
dependencies, required resources, and complexity
33FDD Process
- 4 Design By Feature
- Teams identified for one or more features
- Teams produce design for assigned features
- Sequence Diagrams
- Skeleton Classes with method signatures
- 5 Build By Feature
- Implement by class package for feature
- Start with supporting classes
- Code is written, unit tested, inspected
- Promoted to build of system
34Dynamic Systems Development Method (DSDM)
- framework developed in the early 1990's for rapid
application development (RAD) - Driving Principle
- Time and Resources are fixed
- Functionality is flexible
- Very popular in Europe
- Maintained by the DSDM Consortium
- http//www.dsdm.org
35DSDM Key Concepts/Practices
- MoSCoW Prioritization
- Must Haves ? critical to success
- o
- Should Haves ? important but not critical
- Could Haves ? nice to have
- o
- Won't Have ? will not be implemented
36DSDM Key Concepts/Practices
- TimeBoxing
- Project end date is fixed
- Schedule broken into fixed 2-6 week blocks of
time (time box) - Assigned requirements of varying priorities
- Complete highest priority within the time box
37DSDM Key Concepts/Practices
- Prototyping
- Demonstrate business process
- Evaluate user interaction
- Determine Performance/Capability
- Demonstrate proof of concept
38DSDM Lifecycle
- Feasibility Study
- Is DSDM appropriate?
- Outline Plan
- Business Study
- Analyze requirements
- Recommended technical approach
- Plan potential prototypes
39DSDM Lifecycle
- Functional Model Iteration
- Build on requirements
- Prototype functionality
- Design and Build Iteration
- Prototype design
- Refine prototypes into production
- Implementation
- Transition from development to operation
- Provide Training
40DSDM Lifecycle
41Other Agile Processes
- Feature Driven Development (FDD)
- Framework with features
- Crystal Methodologies
- Processes based on size and criticality
- Adaptive Systems Development (ASD)
- Large, complex systems
42Limitations of Existing Agile Processes
- Limited support for large distributed
development teams - Communication breakdowns
- Limited support for code reusability
- Project specific
- Limited support for large, complex software
- May require significant up front design and
planning - Incremental delivery may not be valuable
- Unproven
43Agile Adoption
- Adoption is slow but appears increasing
- In March 2002, the Giga Group estimated
- 10 of corporate IT groups are using agile
processes - 2/3 are exploring use for future projects
44Future of Agile Software Development
- Processes still evolving
- i.e.) XP with Scrum
- Wont eliminate traditional approaches
- Traditional approaches still valuable
- Here to stay? The new standard?
- Only time will tell
45Summary Agile Software Development
- Quick and Responsive development
- Iterative, incremental
- Ample Customer Involvement
- Different Processes available
- Alternative to Traditional Methods
46Questions / Comments ?