Agile Software Development
Agile Software Development is an approach and conceptual framework for designing, implementing, testing and maintaining software projects, shared between the development team and other project stake holders.
Agile methods are emerged as a consequence of the evolutions in development tools and technologies. The decreasing ratio of implementation time and costs compared to detailed analysis and design, is revolutionizing the nature of "Projects" in software development.
All traditional "Engineering methods" are based on the simple fact that "An abstract definition of a system on paper, is cheaper to create and change than the real thing". This certainly was the case with software development when programming with machine or Assembly language and some technologies after that. Going forward however, with maturity of modern, visual and highly abstract tools and languages, along with techniques such as test automation, software development is getting far from what made it a good candidate for "Waterfall" processes.
On the other hand, with the ever growing maturity of digital infrastructures and opportunities for automation, "Software" is becoming a living part of the organisations, that need to change and grow with the business and market demands. Therefore the previous "Project" nature of software development is transitioning into a regular operational activity for organisations.
Agile methods, principles and techniques, aim to create software in a lighter and more people-centric way, delivering working software faster and more frequently. The main principles behind the Agile Manifesto are:
- Customer satisfaction through rapid, continuous delivery of working software
- Working software is delivered frequently (weeks rather than months)
- Working software is the principal measure of progress
- Changes in requirements are welcomed, even late ones
- Close, daily cooperation between business people and developers
- Face-to-face conversation is the most effective form of communication (Co-location)
- Projects are built around motivated individuals, who should be trusted
- Continuous attention to technical excellence and good design
- Simplicity
- Self-organizing teams
- Regular adaptation to changing circumstances
Links: