Agile software development refers to approaches in the software development process that increase transparency and change speed and lead to faster use of the developed system to minimize risks and aberrations in the development process. Agile software development is a collective term for a set of methods and practices based on the values and principles of the Agile Software Development manifesto.
Agile Guiding Principles
Four guiding principles were formulated in February 2001 as the Agile manifesto for Agile Software Development (Agile Manifesto):
- Individuals and interactions more than processes and tools
- Functioning software more than comprehensive documentation
- Cooperation with the customer more than contract negotiation
- Responding to change more than following a plan
Agile principles serve as guiding principles for agile work. Sometimes agile principles are also called a method. In heavy-weight processes, principles are superimposed on extensive method descriptions and allow principles to fade into the background; moreover, processes were previously defined mainly by methods, not principles. The naming of the principles should give them more weight over formal methods. Twelve principles are listed in the Agile Manifesto.
- Satisfying the customer through early and continuous delivery of valuable software
- Agile processes use change (even late in development) to give the customer a competitive advantage.
- Delivery of working software in regular, preferably short periods of time (few weeks or months)
- Almost daily collaboration between experts and developers during the project (e.g.: Collective Code Ownership)
- Provide the environment and support needed by motivated individuals to perform tasks
- Transfer of information, if possible, face-to-face
- The most important measure of progress is the functionality of the software
- Maintain a consistent pace of work between clients, developers and users for sustainable development
- Constant attention to technical excellence and good design
- Simplicity is essential (KISS principle)
- The best architectures, requirements, and designs are created in self-organized teams
- Team self-reflection on their own behavior to adapt to increase effectiveness
The transition between principles and methods is fluid.
Agile methods are designed to keep the effort curve as flat as possible; that is, changes or new requirements should be able to be taken into account with little effort. Examples of agile methods are:
- Continuous integration
- constant refactors
- Continuous Delivery
- Continuous Deployment
- Pair programming
- Test-driven development
- Behavior Driven Development
- Story Cards
- fast code reviews
- Agile testing
- Rapid Application Development
- Strictly speaking, agile method is an agility-oriented method for software development.
Well-known agile processes include:
- Extreme Programming (XP)
- Dynamic Systems Development Method (DSDM)
- Feature Driven Development (FDD)
- Adaptive Software Development (ASD)