2. Understand modern techniques of Software development
Learn the best practices implementing those techniques
Know how to manage software projects to deliver on time with best
quality.
4. Planning
Analysis
Requirements
Definition
Design
Development
Integration &
Test
Operation &
Maintenance
5. Whole project planned up-front
Doesn’t handle change very well
Requirements specifications are an abstraction and can be interpreted
differently
Business engagement is high at the start of the project but then tapers
off
Insufficient testing during development
Late integration
QA is trailer-hitched, so quality isn’t baked in and testing gets crunched
at the end
Progress measured by task % complete
Often don’t know until it’s too late
6. An alternative way of managing software projects
With different values and principles to traditional development
Incremental, iterative and collaborative, rather than distinct stages
7. Agile software development refers to a group of software development
methodologies that are based on similar principles. Agile methodologies
generally promote:
A project management process that encourages frequent inspection and
adaptation.
A leadership philosophy that encourages team work, self-organization
and accountability.
A set of engineering best practices that allow for rapid delivery of high
quality software.
A business approach that aligns development with customer needs and
company goals.
8. We are uncovering better ways of developing software by doing it and helping
others do it. Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the
left more.
9. Working software is delivered frequently (weeks rather than months)
Customer satisfaction by rapid, continuous delivery of useful software
Working software is the principal measure of progress
Simplicity
Self-organizing / Cross-functional small teams
Regular adaptation to changing circumstances
Co-location (Face-to-face conversation is the best form of
communication)
Close, daily cooperation between business people and developers
Projects are built around motivated individuals, who should be trusted
Continuous attention to technical excellence and good design
10.
11. Vary Scope to deliver on time and on Budget.
Never Compromise on Quality
12. Whole project planned up-front
Doesn’t handle change very well
Requirements specifications are an abstraction and can be interpreted
differently
Business engagement is high at the start of the project but then tapers
off
Insufficient testing during development
Late integration
QA is trailer-hitched, so quality isn’t baked in and testing gets crunched
at the end
Progress measured by task % complete
Often don’t know until it’s too late
13. Incremental approach breaks complex projects down into simpler mini-
projects
Accommodates change easily
Improves ROI through frequent and regular delivery of value to the
business
Increased business involvement and satisfaction
Increased visibility (progress, obstacles, risks, etc)
Lower development risk, higher quality, less defects
Shorter cycles produce working software and incremental product
quickly
Progress measured by running tested software
Early and regular process improvement driven by frequent inspection
14. Extreme Programming (XP)
Crystal Clear
Adaptive Software Development (ASD)
Scrum
Feature Driven Development (FDD)
Dynamic Systems Dev Method (DSDM)
Test-driven Development
Lean
Custom
15.
16.
17. “DONE” or “NOT DONE”
Avoids de 90% Syndrome
Code produced, commented, checked in and run against current version
in source control and meeting development standards
Peer reviewed (or produced with pair programming)
Builds without errors
Unit tests written and passing (TDD)
Deployed to system test environment and passed system tests
Passed UAT (User Acceptance Testing)
Any build/deployment/configuration changes
implemented/documented/communicated
Relevant documentation/diagrams produced and/or updated
Paranoid Compliant
18. Revenue
Speed to market
Quality
Flexibility / agility
Right product
Visibility
Cost control
Customer satisfaction
Less risk
More motivating!
19. Top 5 reasons why projects fail:
Lack of end-user involvement / Poor Communication
Incomplete requirements and specifications
Lack of change management / Scope Issues
Inadequate testing
Integration
20. The Customer is the King
Requirements Are Written As Acceptance Tests Before Any Code Is
Written...
Nothing Is Carved In Stone, Except For The Delivery Date...
Tests Are Written Before Code Is Written And Testing Is Automated...
Early and frequent releases…
21. Advices:
Collaborate Daily
Iterative Development
Daily Builds
Daily Stand-Ups
Frequent Releases
Tips:
Make quick small decisions
Working code beats everything
Make it run, make it right, make it fast.
23. Agile Software Development with Scrum by Ken Schwaber and Mike Beedle
Agile Project Management with Scrum by Ken Schwaber
Lean software development by Mary Poppendieck
Agile and Iterative Development: A Manager’s Guide by Craig Larman
Agile Estimating and Planning by Mike Cohn
Agile Retrospectives by Esther Derby and Diana Larsen
Scrum and The Enterprise by Ken Schwaber
Practices of an Agile Developer by Venkat Subramaniam and Andy Hunt
Test Driven Development by Example by Kent Back
Introduction to Agile and Scrum (presentation) by Simon Baker