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?
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?
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.
Arie van Bennekum
|Robert C. Martin|
© 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 Constructivism, Complex 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?
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.
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.