CSC/ECE 517 Fall 2009/wiki3 11 HJ3
OTHER AGILE METHODS
Introduction
Agile software development is a software development methodologies based on iterative development throughout the life-cycle of the project. Simply put, Agile allows your team to identify the most critical features of the software that can be completed within a short time frame (normally 1 to 2 months), and it delivers a complete build with this set of limited features as the first iteration. Once that is done, you can move those features to production or continue on to the next iteration. By breaking the releases into shorter stints, it allows you to gain quicker releases and to capture return on investment more quickly by putting the working (but limited) features into production sooner. This is in stark contrast to the more traditional "Waterfall" approach, where you design all features upfront, code each one, test each one, then move into production. Agile projects are iteratively released to production months where Waterfall projects normally span a year or more before they are released to production. Agile software development refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. The term was coined in the year 2001 when the Agile Manifesto was formulated.
Agile methods generally promote a disciplined project management process that encourages frequent inspection and adaptation, a leadership philosophy that encourages teamwork, self-organization and accountability, a set of engineering best practices that allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs and company goals. Conceptual foundations of this framework are found in modern approaches to operations management and analysis, such as lean manufacturing, soft systems methodology, speech act theory (network of conversations approach), and Six Sigma.
Extreme Programming (XP)
Overview
XP (eXtreme Programming) is a more radical agile methodology, focusing on the software development process and addressing the analysis, development and test phases with novel approaches aimed at making a substantial difference to the quality of the end product.
Adaptive Software Development (ASD)
Overview
Adaptive Software Development is a software development process that grew out of rapid application development work which embodies the principle that continuous adaptation of the process to the work at hand is the normal state of affairs.
ASD replaces the traditional waterfall cycle with a repeating series of speculate, collaborate, and learn cycles. This dynamic cycle provides for continuous learning and adaptation to the emergent state of the project. The characteristics of an ASD life cycle are that it is mission focused, feature based, iterative, timeboxed, risk driven, and change tolerant.
The word “speculate” refers to the paradox of planning – it is more likely to assume that all stakeholders are comparably wrong for certain aspects of the project’s mission, while trying to define it. Collaboration refers to the efforts for balancing the work based on predictable parts of the environment (planning and guiding them) and adapting to the uncertain surrounding mix of changes caused by various factors – technology, requirements, stakeholders, software vendors, etc. The learning cycles, challenging all stakeholders, are based on the short iterations with design, build and testing. During these iterations the knowledge is gathered by making small mistakes based on false assumptions and correcting those mistakes, thus leading to greater experience and eventually mastery in the problem domain. [1]
Strength
Weakness
Differences from XP
Scrum
Overview
SCRUM is also an agile development method, which concentrates particularly on how to manage tasks within a team-based development environment.
Strength
Weakness
Differences from XP
Dynamic Systems Development Method (DSDM)
Overview
DSDM is probably the most complete agile methodology, whereas SCRUM and XP are easier to implement and complementary because they tackle different aspects of development projects and are both founded on the same principles of agile development. DSDM is probably the original agile development method. DSDM was around before the term 'Agile' was even invented, but is absolutely based on all the principles we’ve come to know as agile development.
Strength
Weakness
Differences from XP
Crystal
Overview
Crystal Clear is an agile methodology for projects with small teams, less than about 10 people in size. His focus is on the people, interaction, community, skills, talents, and communications with the belief that these are what have the first-order effect on performance. Process, he says, is important, but secondary.
Strength
Weakness
Differences from XP
Feature Drive Development (FDD)
Overview
Feature Driven Development (FDD) is an iterative and incremental software development process. It is one of a number of Agile methods for developing software and forms part of the Agile Alliance. FDD blends a number of industry-recognized best practices into a cohesive whole. These practices are all driven from a client-valued functionality (feature) perspective. Its main purpose is to deliver tangible, working software repeatedly in a timely manner. FDD is a model-driven short-iteration process that consists of five basic activities. For accurate state reporting and keeping track of the software development project, milestones that mark the progress made on each feature are defined. This section gives a high level overview of the activities. Feature-Driven Development (FDD) is a client-centric, architecture-centric, and pragmatic software process. The term “client” in FDD is used to represent what Agile Modeling (AM) refers to as project stakeholders or eXtreme Programming (XP) calls customers. FDD was first introduced to the world in 1999 via the book Java Modeling In Color with UML, a combination of the software process followed by Jeff DeLuca’s company and Peter Coad’s concept of features. FDD was first applied on a 15 month, 50-person project for a large Singapore bank in 1997, which was immediately followed by a second, 18-month long 250-person project. A more substantial description is published in the book A Practical Guide to Feature-Driven Development as well as the Feature Driven Development web site.
As the name implies, features are an important aspect of FDD. A feature is a small, client-valued function expressed in the form <action><result><object>. For example, “Calculate the total of a sale”, “Validate the password of a user”, and “Authorize the sales transaction of a customer”. Features are to FDD as use cases are to the Rational Unified Process (RUP) and user stories are to XP – they’re a primary source of requirements and the primary input into your planning efforts.
Strength
Weakness
Differences from XP
Lean Software Development (LSD)
Overview
Lean software development is a translation of lean manufacturing principles and practices to the software development domain. Adapted from the Toyota Production System, a pro-lean subculture is emerging from within the Agile community. Basically the lean manufacturing principles can also be applied to the software development process to resolve the issues and to improve the process and obtain better results.
Strength
Weakness
Differences from XP
Agile Modeling (AM)
Overview
Agile Modeling (AM) is a collection of values, principles, and practices for effective modeling of software-based syastems that can be applied on a software development project in an effective and light-weight manner.
Strength
- can be applied on a software development project in a more flexible manner than traditional modeling methods
- provides advice for how to be effective as a modeler
- focus is on effective modeling and documentation
Weakness
- does not define detailed procedures for how to create a given type of model
- is not a complete software process
- doesn’t include programming and testing activities
Differences from XP
Because AM’s focus in on a portion of the overall software process you need to use it with another, full-fledged process such as XP.
For XP projects, AM explicitly describes how to improve productivity through addition of modeling activities.
Agile Unified Process (AUP)
Overview
Agile Unified Process (AUP), who is a simplified version of the IBM Rational Unified Process (RUP) [1], describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. The AUP applies agile techniques including test driven development (TDD)[2], Agile Modeling [3], agile change management, and database refactoring [4] to improve productivity.
Strength
- ultra-lightweight variant of the Unified Process
- can apply to a very wide range of projects
- is adapted to the requirements of each individual projects
- applies agile techniques to improve productivity
- large number of artifacts
Weakness
- perceived as complicated
- more heavy than XP
Differences from XP
AUP framework [5] is often perceived as the anti-thesis of agility as practiced within XP. AUP uses agile variants of the same basic practices and project phases as RUP, with the work disciplines and work products simplified and reduced in number. XProgrammers will likely find the AUP fairly heavy, and "traditional RUP" users may find that it's too streamlined. XP is used when Programmers need something lighter. AUP is used when Progrmmers want a detailed, well-defined software process.
References
XP
[1] http://www.extremeprogramming.org/
[2] http://en.wikipedia.org/wiki/Extreme_Programming
[4] http://xprogramming.com/index.php
ASD
[5] http://en.wikipedia.org/wiki/Adaptive_Software_Development
[6] http://norvig.com/adapaper-pcai.html
[7] http://dirkriehle.com/computer-science/research/2000/xp-2000.pdf
[8] http://www.softwareplanner.com/SE_SP_adaptive_software_mkt.asp
Scrum
[9] http://en.wikipedia.org/wiki/Scrum_%28development%29
[10] http://softwareplanner.com/Newsletters/newsletter_2008_02_SP.htm
[11] http://scrummethodology.com/
[12] http://www.agile-software-development.com/2008/04/extreme-programming-versus-scrum.html
DSDM
[13] http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method
[14] http://www.ifi.uzh.ch/req/courses/seminar_ws03/14_Voigt_DSMD_Ausarbeitung.pdf
[15] http://www.freetutes.com/systemanalysis/sa2-dynamic-system-development-method.html
Crystal
[16] http://en.wikipedia.org/wiki/Crystal_Clear_%28software_development%29
[17] http://www.agilekiwi.com/crystal_clear.htm
FDD
[18] http://www.agilemodeling.com/essays/fdd.htm
[19] http://en.wikipedia.org/wiki/Feature_Driven_Development
[20] http://www.featuredrivendevelopment.com/node/519
LSD
[21] http://en.wikipedia.org/wiki/Lean_software_development
[22] http://www.poppendieck.com/
[23] http://www.projectperfect.com.au/downloads/Info/info_lean_development.pdf
[24] http://www.leansoftwareinstitute.com/art_ilsd.php
AM
[25] http://www.agilemodeling.com/essays/introductionToAM.htm
[26] http://en.wikipedia.org/wiki/Agile_Modeling
[27] http://www.ambysoft.com/books/agileModeling.html
[28] http://www.agilealliance.org/system/article/file/921/file.pdf
AUP
[29] http://www.ambysoft.com/unifiedprocess/agileUP.html
[30] http://en.wikipedia.org/wiki/Agile_Unified_Process
[31] http://en.allexperts.com/e/a/ag/agile_unified_process.htm