Agile software development principles patterns and practices


What are the Agile software development principles, patterns and practices? This article will start you off and give some links to study further.

Why are Agile software development principles, patterns and practices used?

The waterfall model

Computers were developed from the 1940s onward. In the 1960s, development projects became more extensive and more complex. Different System Development Life Cycle  (SDLC) processes emerged. The most famous is the Waterfall Process. The name comes from a diagram by Royce in a famous paper written in 1970. In reality, the paper questioned that model for lacking feedback loops.

The idea of early software development models was first to document all software requirements, then create the design, write the code, test and fix bugs and deliver the system. This did not always work well, so iterative development was introduced in the following decades. Iterative development is like the original frameworks, but instead of one development cycle, it added iterations. This limited the scope for each round.

The problem with these models was that they still led to overruns, defects and many failed projects. An underlying problem was the belief that it is possible to specify software requirements in advance. This may be true when you develop software for sending humans to the moon or create medical software. But in reality, it is a less helpful paradigm. Often the software is developed with extensive user interfaces or to support evolving or unconfirmed requirements. How did agile software development principles, patterns and practices come about?

How did agile software development principles, patterns and practices come about?

The agile manifesto, which is the root of
Agile software development principles, patterns and practices

Agile software development principles, patterns and practices did not come out of anywhere. The demand for more flexible frameworks and processes grew with software development. Methodologies such as Scrum,  XP (Extreme Programming) and others developed from 1990 onwards. The ideas of Scrum came from a paper written in Harvard Business Review in 1986.  To be considered ‘agile’, methodologies must be lightweight, unlike traditional development methodologies.

What are agile software development principles?

In 2001, proponents of lightweight methodologies came together at a ski resort in the US and developed the Agile Manifesto. The Agile Manifesto distinguished the agile methodologies from traditional by stressing essential components. At the same time, the manifesto celebrates sound principles from the past. The full manifesto is quoted below:

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 by following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler
James Grenning
Jim Highsmith
Andrew Hunt
Ron Jeffries
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas

© 2001, the above authors this declaration may be freely copied in any form,  but only in its entirety through this notice.

At the site, there are also 12 principles of agile development!

What is the theory behind agile software development?

Arguably, agile is a post-modern approach to software development. While agile software development principles, patterns and practices share many practices with traditional software development, certain things still stand out. One is the view that requirements are ambiguous, emerging and changing. Agile solves this by having frequent deliveries and testing software against reality as early as possible and as often as possible. This feedback loop allows users/customers, and developers to learn continuously. There are suggestions on where the inspiration came from. Social ConstructivismComplex Adaptive Systems, Complexity theory and Double Loop learning are included. But at the heart of agile methodologies are a pragmatic approach to use what works and adjust when it does not.

What are agile software development patterns?

Diagram showing the Scrum process

Agile software development principles, patterns, and practices have emerged. Some patterns are:

  • Short iterations,
  • Rigid planning
  • Daily follow up
  • Openness to change
  • Minimum documentation

To the right is a diagram showing the Scrum process. Scrum may be the most used agile management methodology. While it has strong roots in software development, it is used in different industries. Agile is not ad hoc. Being lightweight does not mean being careless. Relatively agile teams are often, at least if not more disciplined than traditional teams. Other typical patterns are software engineering practices such as continuous building and testing of software.

References

The agile manifesto: https://agilemanifesto.org/

Scrum Alliance: https://www.scrumalliance.org/

Extreme Programming: http://www.extremeprogramming.org/

Best blogs on agile: https://apiumhub.com/tech-blog-barcelona/top-agile-blogs/

We recommend following Kent Beck, Martin Fowler, Jurgen Appelo, Ken Swaber, Alistair Cockburn and Arlo Belshee.

Was this article helpful?
YesNo

Leave a Reply