agile simplified
DESCRIPTION
An introduction to Agile Software Development.TRANSCRIPT
Software Development
By: Walaa Mohamed Atef
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.
Flexible / Agile….
Operation & Maintenance
Planning
Analysis
Requirements Definition
Design
Development
Integration & Test
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
An alternative way of managing software projects
With different values and principles to traditional development
Incremental, iterative and collaborative, rather than distinct stages
Agile software development refers to a group of software developmentmethodologies 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.
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.
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
Vary Scope to deliver on time and on Budget.Never Compromise on Quality
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
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
Extreme Programming (XP) Crystal Clear Adaptive Software Development (ASD) Scrum Feature Driven Development (FDD) Dynamic Systems Dev Method (DSDM) Test-driven Development Lean Custom
“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
Revenue Speed to market Quality Flexibility / agility Right product Visibility Cost control Customer satisfaction Less risk More motivating!
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
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…
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.
?
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
E-mail: [email protected]
Blog: http://walaapoints.blogspot.com
Online profile: http://www.linkedin.com/in/walaa