Agile Software Development
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. (Manifesto for Agile Software Development)
Learning Objectives
- List the tenants of the “Manifesto for Agile Software Development”
- Illustrate the cost of change for prescriptive process models and agile software development
- Compare agile software development to prescriptive process models
- Recognize the principles of agile software development
How to Complete this Lesson
Complete the following learning activities: (3–3.5 hours total)
- Read the “Manifesto for Agile Software Development” and Principles behind the Agile Manifesto (5 minutes)
- Read the following in Software Engineering and
(optionally) complete the reading guide:
- Chapter 3: Agile software development (90–120 minutes)
- Attend the class meeting (60 minutes)
- Work on the process models homework (30 minutes)
Resources
Agile is not an excuse to ignore formal software project management. The following tests can be used to determine if an organization is embracing agile principles or merely buzzwords:
- Joe Little, “The Nokia Test,” Agile & Business (blog), 2 December 2007
- Karlskrona test
- Kelly Waters, “How Agile Are You? (Take This 42 Point Test),” All About Agile (blog), 21 January 2008
- Defense Innovation Board, “Detecting Agile BS,” 3 October 2018
Videos
- What is Agile? (12 minutes)
- What is Agile Development? (5 minutes)
- An Agile Case Study (6 minutes)
Notes
Agile is not a single methodology, yet it is not uncommon for people to refer to it as such. This distinction is pedantic in the context of this course. Nevertheless, you should always ask for more information if a project uses “agile” because mixing and matching practices from different methods is often unsuccessful. It is best to follow an established agile method (Scrum, Extreme Programming (XP), Kanban, etc.) instead.