Agile software development
Published:
Agile programming is a paradigm of programming which is composed by a set of solutions and techniques with a common driven principles focused in collaboration, self-organization and adaptability. In the opposite of waterfall paradigm, agile development consider the software projects are more flexible then industrial or building projects. In order to get adaptatible planning, evolutionary development and early response to change, the organization structure of the software development team has to acomplish:
- Small and heterogenous team. Enough small to keep good communication and self-organization between all of them, and enough big to have different profiles and backgrounds to tackle all the types of problem that the project requires from specilized points of view.
- Flat, non-hierharchic structure. No big bosses. Enhancing self-organization.
- Strong communication. Regular periodic meetings in order to coordinate work without a boss or hierharchy, only roles based on software needs. Communications has to flow thrhough all the team easily.
The main and most well known tools and techniques used which are strongly related with the agile phylosophy are:
- Kanban: an strick tracking of the time deliveries and the times of the project and visual control of the state of the process by visualazing the state of each task, proposed and in development process. It makes easy to visualize the workflow and engage people to work better.
- Scrum: iterative and incremental agile development framework based on make work the team as a unit to reach a common goal. Scrum is based in regular meeting and backlogs (where it is compiled the information of the week goals) and short but intense srpints. The key features are communications, self-organization and easy visualization of status of the project and goals.
- Test-driven development: development driven by testing. First it is coded the test for each piece of code you want to develope and later you write a piece of code which passes the test.
- Pair programming: programming in pairs. There is a driven and an observer.
- Dynamic systems development method: iterative and incremental approach in which is fixed the cost, quality and time at the outset and it uses the MoSCoW prioritisation o of scope into musts, shoulds, coulds and won’t haves to adjust the project deliverable to meet the stated time constraint.
Agile tries to create frameworks of software development in order to be easy adapted to changes in the needs of the project or changing circumstances. The main goal is matching the needings of the customers.
See also
Pair programming, Agile software development
Material
- Beck, Kent; et al. (2001). “Manifesto for Agile Software Development”. Agile Alliance. Retrieved 14 June 2010
- http://www.martinfowler.com/articles/designDead.html
- http://www.martinfowler.com/agile.html
Papers
- Abrahamsson, P., Salo, O., Ronkainen, J., & Warsta, J. (2002). Agile Software Development Methods: Review and Analysis. VTT Publications 478.
- Cohen, D., Lindvall, M., & Costa, P. (2004). An introduction to agile methods. In Advances in Computers. New York: Elsevier Science.
Books
- Shore, J., & Warden S. (2008). The Art of Agile Development. O’Reilly Media, Inc.
- Martin, Robert C. (2008). Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall PTR
- Crispin, Lisa; Gregory, Janet; Cohn, Mike; Marick, Brian. (2009) Agile Testing: A Practical Guide for Testers and Agile Teams. Addison-Wesley Professional
- Appelo, Jurgen. (2010). Management 3.0: Leading Agile Developers, Developing Agile Leaders. Addison-Wesley Professional
- Cohn, Mike. (2005). Agile Estimating and Planning. Prentice Hall PTR
- Adkins, Lyssa. (2010). Coaching Agile Teams: A Companion for ScrumMasters, Agile Coaches, and Project Managers in Transition. Addison-Wesley Professional
- Cockburn, Alistair. (2001). Agile Software Development. Addison-Wesley Professional
- Derby, Esther; Larsen, Diana; Schwaber, Ken . (2006). Agile Retrospectives: Making Good Teams Great . Pragmatic Bookshelf