Agile Models

Steven J Zeil:

Last modified: Dec 27, 2023
Contents:

Abstract

Agile methods are a modern approach to incremental development.

They emphasize:

This lesson is a discussion of the origins of Agile Development and a quick overview of the basic principles.

1 We Can’t Go On Like This

To understand the rise of agile models, we need to review the all-too-common problems faced by projects through the 1980’s and 1990’s.

1.1 Failures & Tension

1.2 Common Problems


In Death March: Managing “Mission Impossible” Projects, 1997, Edward Yourdan writes that programmers on small scale projects are comparatively fortunate because…

A tight-knit group of less than ten people is more likely to stick together through thick amd thin, as long as the commitment isn’t for more than six months or so; and a group of highly motivated people is more likely to be willing and able to sacrifice their personal lives (not to mention their health!) for three to six months, as long as they know the regimen of long nights, wasted weekends, and postponed vacations will come to an end on a matter of months.

The fact that this practice was regarded as normal tells you a lot about the those days.

For that matter, the fact that a book with that title could be one of the more popular books on software engineering can tell you a lot about the state of the practice.

2 The Agile Manifesto

In 2001, a group of prominent software developers released the Agile Manifesto and its related “12 Principles”

2.1 The Manifesto

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.

2.1.1 The Twelve Principles of Agile Software

1) Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

2) Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

3) Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

4) Business people and developers must work together daily throughout the project.

5) Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

6) The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

7) Working software is the primary measure of progress.

8) Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

9) Continuous attention to technical excellence and good design enhances agility.

10) Simplicity – the art of maximizing the amount of work not done – is essential.

11) The best architectures, requirements, and designs emerge from self-organizing teams.

12) At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

2.2 The Message to Management:

What do the manifesto and, especially, the twelve principles, say to management?

Keep your @!#$% paws off our work!

You’re paying us big $$ for our professional expertise. So trust us to use that expertise

5) Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

7) Working software is the primary measure of progress.

8) Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

11) The best architectures, requirements, and designs emerge from self-organizing teams.

2.3 The Message to Developers:

But the manifesto is not just a power-grab by programmers.

Developers have to accept some responsibility.

6) The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

9) Continuous attention to technical excellence and good design enhances agility.

10) Simplicity – the art of maximizing the amount aof work not done – is essential.

12) At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

2.4 The Message to Customers

Customers should expect to be more involved, and will get a better project earlier.

1) Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

2) Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

3) Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

4) Business people and developers must work together daily throughout the project.

It is probably telling that the first 4 principles are all customer-oriented.

3 The Common Characteristics of Agile Process Models

3.1 Keeping it small and fast

3.2 Self-Organizing

(Of course, not every company that claims to do agile development buys into this. What do you do if you are a company with a bunch of middle managers on the payroll who used to try to manage software projects? Why, you call them all “Scrum Masters” and put them in charge of the daily meeting, which then gets longer and less productive as everyone tries to explain technical issues to a non-technical manager, who in turn expects instant solutions to any problems that are identified.)

3.3 Technical Competency

Developers are expected to be up-to-date in the best practices of their profession.

We’ll learn about most of these in the coming weeks.

A team must have all the skills required for the project.

Teams share responsibility for the quality of the code that they produce.

4 Agile and CS 350

The team project is a crucial component of this course.

We will be following a largely agile approach, with some adjustments:


Nonetheless, the emphasis is on the process.