artiface/artiface/ AgileDevelopmentMethods
Agile Development Methods During the 1990s, a number of lightweight software development methodologies evolved, such as Rapid Application Development, Unified Process, Dynamic Systems Development Method, Scrum, Crystal Clear, Extreme Programming (often abbreviated as XP), and feature driven development. The Agile Manifesto was written by a number of pioneers of agile development in 2001.
The Agile Manifesto Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
The 12 principles of agile development Customer satisfaction by early and continuous delivery of valuable software. Welcome changing requirements, even in late development. Deliver working software frequently (weeks rather than months). Close, daily cooperation between business people and developers. Projects are built around motivated individuals, who should be trusted. Face-to-face conversation is the best form of conversation (co-location). Working software is the primary measure of progress. Sustainable development, able to maintain a constant pace. Continuous attention to technical excellence and good design. Simplicity — the art of maximising the amount of work not done — is essential. Best architectures, requirements, and designs emerge from self-organising teams. Regularly, the team reflects on how to become more effective, and adjusts accordingly. An Overview of Agile Development Most agile development methods break things down into small chunks of work that can each be completed in a short, predictable time frame, generally a small number of weeks. These are often called sprints. The aim is to have something working by the end of each sprint. “Working software is the primary measure of progress.”
Face to face communication, rather than phone, chat or email, is considered the most efficient means of communication. Having everybody together around a whiteboard reduces the time it takes for discussions to go back and forth between involved developers.
Each team has a customer representative, agreed by stakeholders to act on their behalf, and who is committed to being available to developers to answer questions.
The main feature of agile, as compared to e.g. waterfall, is the short feedback loop and adaptation cycle. Developers feed back reports on progress and issues to each other on a daily basis, along with what they intend to accomplish each day.
Tools such as continuous integration, automated unit testing, and techniques such as pair programming, test-driven development, design patterns, and others, are often used to improve quality and enhance agility.
Extreme Programming We shall conclude by summarising one form of agile development known as Extreme Programming. Extreme programming was developed by Kent Beck during his work for Chrysler during the 1990s. This was a period when object-oriented programming supplanted the procedural programming paradigm, and the need arose to prioritise time-to-market and to react to rapidly changing requirements.
Rules Coding The customer is always available Code the unit test first Only one pair integrates code at a time Leave optimization until last No overtime Testing All code must have unit tests All code must pass all unit tests before it can be released. When a bug is found, tests are created before the bug is addressed (a bug is not an error in logic; it is a test that was not written) Acceptance tests are run often and the results are published 12 Practices Fine-scale feedback
Pair programming Planning game Test-driven development Whole team Continuous process
Continuous integration Refactoring or design improvement Small releases Shared understanding
Coding standards Collective code ownership Simple design System metaphor Programmer welfare
Sustainable pace