CSC/ECE 517 Fall 2009/wiki3 11 HJ3
OTHER AGILE METHODS
Introduction
Agile software development [1] is a software development methodologies based on iterative development throughout the life-cycle of the project. The term was coined in the year 2001 when the Agile Manifesto [2] was formulated. Agile methods generally promote a disciplined project management process that promotes 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.
Extreme Programming (XP)
Overview
Extreme Programming (XP) [3] is a 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. XP is the most common used Agile method. Extreme Programming is successful because it stresses customer satisfaction. Extreme Programming empowers your developers to confidently respond to changing customer requirements, even late in the life cycle. Extreme Programming emphasizes teamwork: managers, customers, and developers are all equal partners in a collaborative team. Extreme Programming implements a simple, yet effective environment enabling teams to become highly productive: the team self-organizes around the problem to solve it as efficiently and as fast as possible.
Adaptive Software Development (ASD)
Overview
Adaptive Software Development [4] 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 is based on 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.
Strength
- Reduced cycle time and improved productivity
- Customer involved throughout the complete cycle minimizes risk of not achieving customer satisfaction and business needs
Weakness
- Risk of never achieving closure
- Requires a system that can be modularized
- Developers and customers must be committed to rapid-fire activities in an abbreviated time frame
- Accelerated development process must give quick responses to the user
Differences from XP
In ASD, human relationship must have the ability to adapt whereas in XP, the human relationship is based on the work satisfaction. In ASD, humans utilize technology as will whereas in XP, they utilize technology within predefined framework. In ASD, the purpose of the development is the survival and thriving of organization whereas in XP, it is the product delivery while we are doing satisfying work.
Scrum
Overview
Scrum [5] is process of implementing Agile, where features are delivered in 30 day sprints. Scrum concentrates particularly on how to manage tasks within a team-based development environment.
Strength
- Iterative-incremental process
- Based on modeling the problem domain and the system
- Requirements are allowed to evolve over time.
- Traceability to requirements through the Product Backlog
- Architecture of the system drafted before the development engine is started
- Iterative development engine governed by careful planning and reviewing
- Active user involvement
- Simple and straightforward process
- Early and frequent releases, demonstrating functionality at the end of each iteration (sprint) of the development cycle
Weakness
- Integration is done after all increments are built
- Lack of scalability
- Based on the assumption that human communication is sufficient for running projects of any size and keeping them focused
- Not necessarily seamless (details of tasks are not prescribed)
- No clear-cut design effort
- Model-phobic
- Models are not prescribed, leaving it to the developer to decide what model can be useful
- Lack of formalism
Differences from XP
XP and Scrum are so different they are not really comparable. Scrum is an agile management methodology. Whereas XP is an agile engineering methodology. Scrum is the more likely starting point when the adoption of agile is driven by managementwhereas XP is the more likely starting point when the adoption of agile is driven by developers.
Dynamic Systems Development Method (DSDM)
Overview
Dynamic System Development Method (DSDM) [6]is another approach to system development, which, as the name suggests, develops the system dynamically. This methodology is independent of tools, in that it can be used with both structured analysis and design approach or object-oriented approach.
Strength
- most complete agile methodology
- promotes team empowerment
- more comprehensive job in showing its evolving character
Weakness
- harder to implement
- many other organizations may already use DSDM, but are not yet ready to publicly commit to DSDM
Differences from XP
While XP has been the first well known methodology to handle agile software process, it is perfectly suitable to integrate into a DSDM implementation, since many concepts of DSDM can improve XP with a robust requirements and project management mechanism. But DSDM does distinguish itself from XP by the fact that it provides a tool and technique independent framework which allows users to fill in the specific steps of the process with their own techniques and software aids of choice. DSDM which focuses strongly on communication between all the stakeholders in the system strongly believes in commitment to the project to ensure a successful outcome.
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
- for projects with small teams
- focuses on the people
- easiest way to adopt a methodology that already fits
- supports fixed price contracts
Weakness
- processes is secondary
Differences from XP
Crystal focuses on the people whereas XP focuses on the process which is secondary for Crystal. Crystal is the best for small teams whereas XP allows you to work on a larger team.
Feature Drive Development (FDD)
Overview
Feature Driven Development (FDD) [7] is an iterative and incremental software development process and is part of the Agile Alliance[8]. FDD 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.
Strength
- focuses on regular delivery of client-valued features
- Success with above average developers
- Class ownership
Weakness
- Client are not on the team
- No collective ownership
Differences from XP
FDD is more structure than XP. Clients are on the team in XP. FDD is identified as a process, whereas XP is more a set of principles. XP formalizes the requirement you write the test first, whereas FDD has little to say on the subject of testing and certainly does not mandate writing the tests first.
Lean Software Development (LSD)
Overview
Lean software development is a translation of lean manufacturing principles and practices to the software development domain which is adapted from the Toyota Production System, where 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.
Strength
- obtain better results
- improve the process
- eliminate waste
- decide as late as possible
- deliver as fast as possible
Weakness
- assumption that customer requirements are static and can be defined by a predetermined system
Differences from XP
XP is just the beginning. AUP goes at the cross team, enterprise level.
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
- difficult to apply where there are large teams
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) [9], 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)[10], Agile Modeling [11], agile change management, and database refactoring [12] 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 [13] 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