<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bschanda</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bschanda"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Bschanda"/>
	<updated>2026-05-20T12:32:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29429</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29429"/>
		<updated>2009-11-19T02:54:41Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Adaptive Software Development (ASD) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://en.wikipedia.org/wiki/Sprint_(software_development) sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle [http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy :http://norvig.com&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy http://www.codeproject.com/KB/architecture&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
&lt;br /&gt;
[[Image:Crystal.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.htm Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleFDD.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy: http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lean_software_development 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. &lt;br /&gt;
&lt;br /&gt;
[[Image:Lean_Software_Development.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : IBM&lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
[[Image:BestPractices.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy: http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleAgileUP.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy: http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
#http://agilemethodology.org/ &lt;br /&gt;
#http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
#http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
#http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
#http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
#http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
#http://www.agilemodeling.com/&lt;br /&gt;
#http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
#http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
#http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
#http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29426</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29426"/>
		<updated>2009-11-19T02:53:30Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Dynamic Systems Development Method (DSDM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://en.wikipedia.org/wiki/Sprint_(software_development) sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle [http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy http://www.codeproject.com/KB/architecture&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
&lt;br /&gt;
[[Image:Crystal.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.htm Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleFDD.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy: http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lean_software_development 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. &lt;br /&gt;
&lt;br /&gt;
[[Image:Lean_Software_Development.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : IBM&lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
[[Image:BestPractices.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy: http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleAgileUP.gif]]&lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
#http://agilemethodology.org/ &lt;br /&gt;
#http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
#http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
#http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
#http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
#http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
#http://www.agilemodeling.com/&lt;br /&gt;
#http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
#http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
#http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
#http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29423</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29423"/>
		<updated>2009-11-19T02:52:40Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Dynamic Systems Development Method (DSDM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://en.wikipedia.org/wiki/Sprint_(software_development) sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle [http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
&lt;br /&gt;
[[Image:Crystal.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.htm Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleFDD.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy: http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lean_software_development 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. &lt;br /&gt;
&lt;br /&gt;
[[Image:Lean_Software_Development.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : IBM&lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
[[Image:BestPractices.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleAgileUP.gif]]&lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
#http://agilemethodology.org/ &lt;br /&gt;
#http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
#http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
#http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
#http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
#http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
#http://www.agilemodeling.com/&lt;br /&gt;
#http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
#http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
#http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
#http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29421</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29421"/>
		<updated>2009-11-19T02:52:08Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Dynamic Systems Development Method (DSDM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://en.wikipedia.org/wiki/Sprint_(software_development) sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle [http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Image Courtesy http://www.codeproject.com/KB/architecture/DSDM/dsdm1.jpg&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
&lt;br /&gt;
[[Image:Crystal.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.htm Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleFDD.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy: http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lean_software_development 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. &lt;br /&gt;
&lt;br /&gt;
[[Image:Lean_Software_Development.jpg]]&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM&lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
[[Image:BestPractices.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleAgileUP.gif]]&lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
#http://agilemethodology.org/ &lt;br /&gt;
#http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
#http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
#http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
#http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
#http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
#http://www.agilemodeling.com/&lt;br /&gt;
#http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
#http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
#http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
#http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29418</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29418"/>
		<updated>2009-11-19T02:50:45Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Dynamic Systems Development Method (DSDM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://en.wikipedia.org/wiki/Sprint_(software_development) sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle [http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy http://www.codeproject.com/KB/architecture/DSDM/dsdm1.jpg&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
&lt;br /&gt;
[[Image:Crystal.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleFDD.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy: http://www.agilemodeling.com/essays/fdd.ht&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lean_software_development 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. &lt;br /&gt;
&lt;br /&gt;
[[Image:Lean_Software_Development.jpg]]&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM&lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
[[Image:BestPractices.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleAgileUP.gif]]&lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
#http://agilemethodology.org/ &lt;br /&gt;
#http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
#http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
#http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
#http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
#http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
#http://www.agilemodeling.com/&lt;br /&gt;
#http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
#http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
#http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
#http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29416</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29416"/>
		<updated>2009-11-19T02:50:18Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Dynamic Systems Development Method (DSDM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://en.wikipedia.org/wiki/Sprint_(software_development) sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle [http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.Image Courtesy http://www.codeproject.com/KB/architecture/DSDM/dsdm1.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
&lt;br /&gt;
[[Image:Crystal.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleFDD.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy: http://www.agilemodeling.com/essays/fdd.ht&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lean_software_development 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. &lt;br /&gt;
&lt;br /&gt;
[[Image:Lean_Software_Development.jpg]]&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM&lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
[[Image:BestPractices.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleAgileUP.gif]]&lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
#http://agilemethodology.org/ &lt;br /&gt;
#http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
#http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
#http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
#http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
#http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
#http://www.agilemodeling.com/&lt;br /&gt;
#http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
#http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
#http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
#http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29414</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29414"/>
		<updated>2009-11-19T02:49:45Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Dynamic Systems Development Method (DSDM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://en.wikipedia.org/wiki/Sprint_(software_development) sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle [http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
Image Courtesy http://www.codeproject.com/KB/architecture/DSDM/dsdm1.jpg&lt;br /&gt;
&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
&lt;br /&gt;
[[Image:Crystal.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleFDD.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy: http://www.agilemodeling.com/essays/fdd.ht&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lean_software_development 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. &lt;br /&gt;
&lt;br /&gt;
[[Image:Lean_Software_Development.jpg]]&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM&lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
[[Image:BestPractices.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleAgileUP.gif]]&lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
#http://agilemethodology.org/ &lt;br /&gt;
#http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
#http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
#http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
#http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
#http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
#http://www.agilemodeling.com/&lt;br /&gt;
#http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
#http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
#http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
#http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29412</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29412"/>
		<updated>2009-11-19T02:49:17Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Dynamic Systems Development Method (DSDM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://en.wikipedia.org/wiki/Sprint_(software_development) sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle [http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
Image Courtesy : http://www.codeproject.com/KB/architecture/DSDM/dsdm1.jpg&lt;br /&gt;
&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
&lt;br /&gt;
[[Image:Crystal.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleFDD.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lean_software_development 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. &lt;br /&gt;
&lt;br /&gt;
[[Image:Lean_Software_Development.jpg]]&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM&lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
[[Image:BestPractices.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleAgileUP.gif]]&lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
#http://agilemethodology.org/ &lt;br /&gt;
#http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
#http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
#http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
#http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
#http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
#http://www.agilemodeling.com/&lt;br /&gt;
#http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
#http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
#http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
#http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29408</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29408"/>
		<updated>2009-11-19T02:46:24Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Lean Software Development (LSD) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://en.wikipedia.org/wiki/Sprint_(software_development) sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle [http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
&lt;br /&gt;
[[Image:Crystal.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleFDD.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lean_software_development 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. &lt;br /&gt;
&lt;br /&gt;
[[Image:Lean_Software_Development.jpg]]&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM&lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
[[Image:BestPractices.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleAgileUP.gif]]&lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
#http://agilemethodology.org/ &lt;br /&gt;
#http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
#http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
#http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
#http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
#http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
#http://www.agilemodeling.com/&lt;br /&gt;
#http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
#http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
#http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
#http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29406</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29406"/>
		<updated>2009-11-19T02:44:14Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Why Agile? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://en.wikipedia.org/wiki/Sprint_(software_development) sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle [http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
&lt;br /&gt;
[[Image:Crystal.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleFDD.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
[[Image:Lean_Software_Development.jpg]]&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
[[Image:BestPractices.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleAgileUP.gif]]&lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
#http://agilemethodology.org/ &lt;br /&gt;
#http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
#http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
#http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
#http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
#http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
#http://www.agilemodeling.com/&lt;br /&gt;
#http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
#http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
#http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
#http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29404</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29404"/>
		<updated>2009-11-19T02:43:49Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* What is Agile ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://en.wikipedia.org/wiki/Sprint_(software_development) sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
&lt;br /&gt;
[[Image:Crystal.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleFDD.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
[[Image:Lean_Software_Development.jpg]]&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
[[Image:BestPractices.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleAgileUP.gif]]&lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
#http://agilemethodology.org/ &lt;br /&gt;
#http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
#http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
#http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
#http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
#http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
#http://www.agilemodeling.com/&lt;br /&gt;
#http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
#http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
#http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
#http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29402</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29402"/>
		<updated>2009-11-19T02:42:49Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* What is Agile ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://en.wikipedia.org/wiki/Sprint_(software_development) sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
&lt;br /&gt;
[[Image:Crystal.jpg]]&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleFDD.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
[[Image:Lean_Software_Development.jpg]]&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
[[Image:BestPractices.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
[[Image:LifecycleAgileUP.gif]]&lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References and Links ==&lt;br /&gt;
&lt;br /&gt;
#http://agilemethodology.org/&lt;br /&gt;
#http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
#http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
#http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
#http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
#http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
#http://www.agilemodeling.com/&lt;br /&gt;
#http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
#http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
#http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
#http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29363</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29363"/>
		<updated>2009-11-19T02:30:32Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Why Agile? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle [http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color.  [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
==6) Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29360</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29360"/>
		<updated>2009-11-19T02:30:04Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* What is Agile ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Agile_software_development Agile methodology] is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color.  [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
==6) Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29351</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29351"/>
		<updated>2009-11-19T02:28:08Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Crystal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color.  [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strengths and Weaknesses == &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Strengths'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Weaknesses'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Strong technical practices.  Customer ownership of feature priority, developer ownership of estimates.  Frequent feedback opportunities.  Most widely known and adopted approach, at least in the U.S. ||Requires onsite customer.  Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.  Difficult for new adopters to determine how to accommodate architectural and design concerns. &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Complements existing practices.  Self organizing teams and feedback.  Customer participation and steering.  Priorities based on business value.  Only approach here that has a certification process. ||Only provides project management support, other disciplines are out of scope.  Does not specify technical practices.  Can take some time to get the business to provide unique priorities for each requirement. &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Complements existing practices.  Focuses on project ROI.  Eliminates all project waste.  Cross-functional teams. ||Does not specify technical practices.  Requires constant gathering of metrics which may be difficult for some environments to accommodate.  Theory of Constraints can be a complex and difficult aspect to adopt. &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Supports multiple teams working in parallel.  All aspects of a project tracked by feature.  Design by feature and build by feature aspects are easy to understand and adopt.  Scales to large teams or projects well. ||Promotes individual code ownership as opposed to shared/team ownership.  Iterations are not as well defined by the process as other Agile methodologies.  The model-centric aspects can have huge impacts when working on existing systems that have no models. &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Robust methodology with many artifacts and disciplines to choose from.  Scales up very well.  Documentation helps communicate in distributed environments.  Priorities set based on highest risk. Risk can be a business or technical risk. ||Higher levels of ceremony may be a hindrance in smaller projects.  Minimal attention to team dynamics.  Documentation is much more formal than most approaches mentioned here. &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Family of methodologies designed to scale by project size and criticality.  Only methodology that specifically accounts for life critical projects.  As project size grows, cross-functional teams are utilized to ensure consistency.  The \&amp;quot;human\&amp;quot; component has been considered for every aspect of the project support structure.  An emphasis on testing is so strong that at least one tester is expected to be on each project team. ||Expects all team members to be co-located. May not work well for distributed teams.  Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.  Moving from one flavor of Crystal to another in mid project doesn\'t work, as Crystal was not designed to be upward or downward compatible. &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||An emphasis on testing is so strong that at least one tester is expected to be on each project team.  Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.  Has specific approach to determining how important each requirement is to an iteration.  Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable. ||Probably the most heavyweight project compared in this survey.  Expects continuous user involvement.  Defines several artifacts and work products for each phase of the project; heavier documentation.  Access to material is controlled by a Consortium, and fees may be charged just to access the reference material. &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Condition'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''XP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Scrum'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Lean'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''FDD'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''AUP'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Crystal'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''DSDM'''&lt;br /&gt;
|-&lt;br /&gt;
| Small Team ||√ ||√ ||√ ||X ||X ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| Highly Volatile Requirements ||√ ||√ ||√ ||√ ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| Distributed Teams ||X ||√ ||√ ||√ ||√ ||X ||X &lt;br /&gt;
|-&lt;br /&gt;
| High Ceremony Culture ||X ||X ||- ||- ||√ ||- ||√ &lt;br /&gt;
|-&lt;br /&gt;
| High Criticality Systems ||X ||- ||- ||- ||- ||√ ||X &lt;br /&gt;
|-&lt;br /&gt;
| Multiple Customers / Stakeholders ||X ||√ ||√ ||- ||- ||- ||X &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
==6) Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Methodology'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Summarizing Phrase'''&lt;br /&gt;
|-&lt;br /&gt;
| XP ||Simplicity &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||Prioritized Business Value &lt;br /&gt;
|-&lt;br /&gt;
| Lean ||Return on Investment (ROI) &lt;br /&gt;
|-&lt;br /&gt;
| FDD ||Business Model &lt;br /&gt;
|-&lt;br /&gt;
| AUP ||Manage Risk &lt;br /&gt;
|-&lt;br /&gt;
| Crystal ||Size and Criticality &lt;br /&gt;
|-&lt;br /&gt;
| DSDM ||Current Business Value &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29322</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29322"/>
		<updated>2009-11-19T02:19:29Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Dynamic Systems Development Method (DSDM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
==6) Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29321</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29321"/>
		<updated>2009-11-19T02:19:07Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Dynamic Systems Development Method (DSDM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
[[Image:Dsdm.jpg]]&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
==6) Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Dsdm.jpg&amp;diff=29318</id>
		<title>File:Dsdm.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Dsdm.jpg&amp;diff=29318"/>
		<updated>2009-11-19T02:18:26Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29310</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29310"/>
		<updated>2009-11-19T02:15:34Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Adaptive Software Development (ASD) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
# Adaptive Software Development (ASD)&lt;br /&gt;
# Scrum&lt;br /&gt;
# Dynamic Systems Development Method (DSDM)&lt;br /&gt;
# Crystal&lt;br /&gt;
# Feature Drive Development (FDD)&lt;br /&gt;
# Lean Software Development (LSD)&lt;br /&gt;
# Agile Modeling (AM)&lt;br /&gt;
# Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
[[Image:Ada.gif]]&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrum.gif]]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Method'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Description'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''When to Use It'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Primary Modeling Artifacts'''&lt;br /&gt;
|-&lt;br /&gt;
| Agile Data (AD) ||A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development. ||Tailor the AD philosophies and techniques into other evolutionary processes. ||Agile data models &lt;br /&gt;
|-&lt;br /&gt;
| Agile Model Driven Development (AMDD) ||A partial, practices-based method which describes techniques for effective modeling and documentation of systems. ||Tailor the AM principles and practices into other agile or near-agile processes. ||Apply the right artifact for the situation at hand. &lt;br /&gt;
|-&lt;br /&gt;
| Agile MSF (Microsoft Solutions Framework) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Agile Unified Process (AUP) ||An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. ||When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you\'re accustomed to, or simply something that\'s free.  ||Use-case model   UML sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Code and Fix ||A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called \&amp;quot;hacking\&amp;quot; or \&amp;quot;immature development\&amp;quot;. ||For throw-away prototypes. ||Source code &lt;br /&gt;
|-&lt;br /&gt;
| Data-Driven Approach ||This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.  For a humorous look, read The Glacial Methodology ||Development of a data warehouse, although a usage-centered approach is still preferable.  Development of a simple “CRUD” (Create Read Update Delete) business application. ||Conceptual data model   Logical data model  Deployment architecture   Physical data model &lt;br /&gt;
|-&lt;br /&gt;
| Dynamic System Development Method (DSDM)  ||This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s.  ||Development of a user interface intensive system.  Complex business application. ||Functional prototype  Design prototype &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Unified Process (EUP) ||A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities.  ||Need to manage a portfolio of projects, including but not limited teams following the RUP.  You have been successful at several RUP projects and wish to now take the full system lifecycle into account. ||Enterprise business model   Enterprise domain architecture model  Enterprise technical architecture model  Project-level artifacts &lt;br /&gt;
|-&lt;br /&gt;
| Extreme Programming (XP)  ||An agile development method that focuses on the critical activities required to build software. ||Small, co-located project teams (4-10 people).  Requirements are uncertain.  Good relationship (potentially) exists with project stakeholders. ||User stories   Architectural metaphor/strategy  Class responsibility collaborator (CRC) cards  &lt;br /&gt;
|-&lt;br /&gt;
| Feature-Driven Development (FDD) ||An agile development method based on short iterations which includes explicit modeling activities. ||Small project team (4-20 people).  Requirements are uncertain.  Team willing to follow a modeling driven approach. ||Domain class/object model  Features  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| Glacial Methodology ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| ICONIX ||A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right. ||Small to medium sized project teams (4 to 20 people).  Business application development. ||Use-case model   Robustness diagrams  UML Sequence diagrams  UML class model &lt;br /&gt;
|-&lt;br /&gt;
| ISO/IEC 12207  ||A multi-phase software process that includes development, operation, and retirement of software-based systems.  ||Medium to large project teams (20+ people).  Mandated (e.g. by government) to follow this approach. ||Shall statements  Logical data model   Logical process model   Physical data model   Physical process model  &lt;br /&gt;
|-&lt;br /&gt;
| MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Object Oriented Software Process (OOSP) ||A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies. ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Personal Software Process (PSP) ||A prescriptive software process for individual developers. ||1 (see the TSP for the group version) ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Rational Unified Process (RUP)  ||A rigorous, four-phase software development process which is iterative and incremental.  ||Medium to large project teams (10+ people). ||Use-case model   System architecture model   UML Sequence diagrams  UML class model  Physical data model  &lt;br /&gt;
|-&lt;br /&gt;
| Scrum ||An agile method whose focus is on project management and requirements management.  Often combined with XP. ||Any size project ||Varies, depending on the development process (XP, ...) which you use Scrum with. &lt;br /&gt;
|-&lt;br /&gt;
| Team Software Process (TSP) ||TBD ||TBD ||TBD &lt;br /&gt;
|-&lt;br /&gt;
| Test Driven Development (TDD) ||An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development ||Any size project ||Tests &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
==6) Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Ada.gif&amp;diff=29303</id>
		<title>File:Ada.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Ada.gif&amp;diff=29303"/>
		<updated>2009-11-19T02:11:32Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29253</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29253"/>
		<updated>2009-11-19T02:00:15Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
==Table 1.Comparing software development methods.==&lt;br /&gt;
&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
==6) Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29252</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29252"/>
		<updated>2009-11-19T01:59:43Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Table 1.Comparing software development methods. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is Agile ? ==&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
== Why Agile? ==&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Brief look at other Agile methodologies ==&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Software Development (ASD)===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
=== Scrum ===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Systems Development Method (DSDM)===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
=== Crystal ===&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
=== Feature Drive Development (FDD)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
=== Lean Software Development (LSD)===&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
=== Agile Modeling (AM)===&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
=== Agile Unified Process (AUP)===&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
== Comparing Development Methods ==&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
==Table 1.Comparing software development methods.==&lt;br /&gt;
&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
==6) Conclusion ==&lt;br /&gt;
As visible from the table of comparisons above each software development methodology is suited in a particular team and project setting .The project team and stakeholders need to decide on the methodology based on the size of team ,time required to develop and market the product  and other parameters .The decision should help make the quality of product better and meet the deadline in time to market or sell the product .Below is table which summarizes each of the software development methodology in one phrase&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29183</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29183"/>
		<updated>2009-11-19T01:44:21Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* 3.2)Scrum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.Scrum is a &amp;quot;process skeleton,&amp;quot; which contains sets of practices and predefined roles. The main roles in Scrum are:&lt;br /&gt;
the &amp;quot;ScrumMaster&amp;quot;, who maintains the processes (typically in lieu of a project manager);&lt;br /&gt;
the &amp;quot;Product Owner&amp;quot;, who represents the stakeholders;&lt;br /&gt;
the &amp;quot;Team&amp;quot;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
==4. Comparing Development Methods==&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
==Table 1.Comparing software development methods.==&lt;br /&gt;
&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29176</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29176"/>
		<updated>2009-11-19T01:39:54Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Table 1.Comparing software development methods. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
==4. Comparing Development Methods==&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
==Table 1.Comparing software development methods.==&lt;br /&gt;
&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29111</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29111"/>
		<updated>2009-11-19T01:17:47Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* 4. Comparing Development Methods */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
==4. Comparing Development Methods==&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
==Table 1.Comparing software development methods.==&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29107</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29107"/>
		<updated>2009-11-19T01:16:56Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* 4. Comparing Development Methods */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
==4. Comparing Development Methods==&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
Table 1. Comparing software development methods.&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29105</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29105"/>
		<updated>2009-11-19T01:16:40Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* =4. Comparing Development Methods */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
===4. Comparing Development Methods===&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
Table 1. Comparing software development methods.&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29103</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29103"/>
		<updated>2009-11-19T01:16:27Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* 3.8) Agile Unified Process (AUP) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
===4. Comparing Development Methods==&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
Table 1. Comparing software development methods.&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29082</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29082"/>
		<updated>2009-11-19T01:07:34Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* CONTENTS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
  &amp;lt;p&amp;gt; Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&amp;lt;/p&amp;gt;&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
4. Comparing Development Methods&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.&lt;br /&gt;
 It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
Table 1. Comparing software development methods.&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29081</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29081"/>
		<updated>2009-11-19T01:07:07Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* 3.1) Adaptive Software Development (ASD) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
         Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
4. Comparing Development Methods&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.&lt;br /&gt;
 It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
Table 1. Comparing software development methods.&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29080</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29080"/>
		<updated>2009-11-19T01:06:49Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* 3.4) Crystal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
         Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no &amp;quot;one-size-fits all&amp;quot; development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
4. Comparing Development Methods&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.&lt;br /&gt;
 It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
Table 1. Comparing software development methods.&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29078</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29078"/>
		<updated>2009-11-19T01:06:08Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* 3.4) Crystal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
         Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no “one-size-fits all” development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.&lt;br /&gt;
   The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
4. Comparing Development Methods&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.&lt;br /&gt;
 It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
Table 1. Comparing software development methods.&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29077</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29077"/>
		<updated>2009-11-19T01:05:27Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* 3.5 Feature Drive Development (FDD) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
         Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no “one-size-fits all” development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.&lt;br /&gt;
&lt;br /&gt;
The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication&lt;br /&gt;
as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
4. Comparing Development Methods&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.&lt;br /&gt;
 It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
Table 1. Comparing software development methods.&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29076</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29076"/>
		<updated>2009-11-19T01:05:02Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* CONTENTS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
         Development costs and time to market are greatly reduced to inspect and adapt way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as analysis paralysis can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no “one-size-fits all” development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.&lt;br /&gt;
&lt;br /&gt;
The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication&lt;br /&gt;
as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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. &lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
4. Comparing Development Methods&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.&lt;br /&gt;
 It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
Table 1. Comparing software development methods.&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29073</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29073"/>
		<updated>2009-11-19T01:04:16Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* CONTENTS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
         Development costs and time to market are greatly reduced to &amp;quot;inspect and adapt&amp;quot; way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as “analysis paralysis” can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no “one-size-fits all” development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.&lt;br /&gt;
&lt;br /&gt;
The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication&lt;br /&gt;
as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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. &lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
4. Comparing Development Methods&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.&lt;br /&gt;
 It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
Table 1. Comparing software development methods.&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29065</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29065"/>
		<updated>2009-11-19T01:02:00Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* 3.2)Scrum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
&lt;br /&gt;
         Development costs and time to market are greatly reduced to &amp;quot;inspect and adapt&amp;quot; way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as “analysis paralysis” can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no “one-size-fits all” development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.&lt;br /&gt;
&lt;br /&gt;
The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication&lt;br /&gt;
as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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. &lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
4. Comparing Development Methods&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.&lt;br /&gt;
 It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
Table 1. Comparing software development methods.&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29063</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29063"/>
		<updated>2009-11-19T01:01:41Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* 3.2)Scrum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
&lt;br /&gt;
         Development costs and time to market are greatly reduced to &amp;quot;inspect and adapt&amp;quot; way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as “analysis paralysis” can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3.3) Dynamic Systems Development Method (DSDM)==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance.&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no “one-size-fits all” development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.&lt;br /&gt;
&lt;br /&gt;
The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication&lt;br /&gt;
as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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. &lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
4. Comparing Development Methods&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.&lt;br /&gt;
 It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
Table 1. Comparing software development methods.&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29051</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29051"/>
		<updated>2009-11-19T00:55:42Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
&lt;br /&gt;
         Development costs and time to market are greatly reduced to &amp;quot;inspect and adapt&amp;quot; way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as “analysis paralysis” can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance. &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3.4) Crystal==&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no “one-size-fits all” development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.&lt;br /&gt;
&lt;br /&gt;
The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication&lt;br /&gt;
as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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. &lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
==3.8) Agile Unified Process (AUP)==&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
4. Comparing Development Methods&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.&lt;br /&gt;
 It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
Table 1. Comparing software development methods.&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29047</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 11 ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_11_ab&amp;diff=29047"/>
		<updated>2009-11-19T00:53:42Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A COMPARATIVE ANALYSIS OF OTHER AGILE METHODOLOGIES AND ASSESSING THEIR STRENGTHS AND WEAKNESSES===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although, the most popular Agile methodology is Extreme Programming (XP) there are other other methodologies which are also used in the industry such as Adaptive Software Development (ASD), Scrum, Dynamic Systems Development Method (DSDM), Crystal etc.  that we shall be covering in this Wikipedia. Moreover, we will perform a comparative analysis between these process models and conclude with the criteria for selecting a particular agile methodology.&lt;br /&gt;
&lt;br /&gt;
==CONTENTS==&lt;br /&gt;
&lt;br /&gt;
1) What is Agile ?&lt;br /&gt;
&lt;br /&gt;
Agile methodology is a type of project management used for software development.This method uses incremental,iterative work cadences known as [http://agilemethodology.org/ sprints] to help teams deal with unpredictability in building software&lt;br /&gt;
&lt;br /&gt;
2) Why Agile?&lt;br /&gt;
&lt;br /&gt;
In a development life cycle Agile methodology provides many opportunities to access the direction of a project.This approach is achieved by sprints which are regular cadences of work,at the end of which teams must present a shippable increment of work.Agile methodology is hence &amp;quot;iterative&amp;quot; or incremental since it focuses on repetition of  abbreviated  work cycles as well as the functional product they yield.In contrast in waterfall methodology teams only have have one chance to get each aspect of a project right.Whereas in agile methodology throughout the life cycle of a project every aspect of a development - requirements ,design ,etc - is continually revisited.There is always time to steer the project in another direction when a team stops and re-evaluates the project every two weeks.&lt;br /&gt;
&lt;br /&gt;
         Development costs and time to market are greatly reduced to &amp;quot;inspect and adapt&amp;quot; way of development .Because teams can gather requirements at the same time they’re gathering requirements, the phenomenon known as “analysis paralysis” can’t really impede a team from making progress.The stakeholders get recurring opportunities to calibrate releases for success in real world as the team's work cycle is limited to two weeks .The probability of building the right product by the companies is hence high with agile methodology.Instead of committing to market a piece of software that hasn’t even been written yet, agile empowers teams to optimize their release as it’s developed, to be as competitive as possible in the marketplace.In conclusion agile methodology is a very viable option for stakeholders and developers as it ensures to preserve product's critical market relevance and ensure's team's work does not wind up in a shelf .&lt;br /&gt;
3) A Brief look at other Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
1) Adaptive Software Development (ASD)&lt;br /&gt;
2) Scrum&lt;br /&gt;
3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
4) Crystal&lt;br /&gt;
5) Feature Drive Development (FDD)&lt;br /&gt;
6) Lean Software Development (LSD)&lt;br /&gt;
7) Agile Modeling (AM)&lt;br /&gt;
8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3.1) Adaptive Software Development (ASD)==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Adaptive_Software_Development Adaptive Software Development]  evolved out of the work by Jin Highsmith and Sam Bayer on the rapid application development. It follows the principle that continuous change to a process is a normal behaviour expected out of it. It differs from the traditional waterfall model in the sense that is has concurrent processes of speculate,collaborate, and learn cycles. Because of it, the project undergoes continuous changes at any stage of its development and is therefore, dynamic in operation. Some of the characteristics of an adaptive software development life cycle are that it is iterative, time-boxed, driven by risk, flexible to changes and it is overall focused on its mission.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==3.2)Scrum==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] is an incremental framework that is iterative and used for managing complex work (such as new product development) and is categorized under agile software development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Image Courtesy : http://www.methodsandtools.com/archive/archive.php?id=18&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.3) Dynamic Systems Development Method (DSDM)&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method Dynamic Systems Development Method] (DSDM) is an agile software development methodology that is actually based upon the Rapid Application Development methodology. Of one of the principles in DSDM, user involvement is one of the main keys in running an efficient and effective project where both users and developers work together at t common workplace so that the decisions are accurate. Moreover, it is expected that all changes made during the development are reversible. Testing exists throughout the life-cycle of project. DSDM is an iterative and incremental approach that emphasises continuous user involvement.Its goal is to deliver software systems on time and on budget while adjusting for changing requirements along the development process. DSDM is one of a number of Agile methods for developing software, and it forms a part of the Agile Alliance. &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.4) Crystal&lt;br /&gt;
&lt;br /&gt;
The development of Crystal Methods took place to encounter the variability of the environment and the characteristics that are unique to a project.The primary difference between RUP and Crystal is that while RUP generally starts with a plan-driven base methodology and tailors down for smaller, less critical projects, on the other hand, the Crystal according to the author Alistair Cockburn the base methodology should be “barely sufficient.” According to him , “You need one less notch control than you expect, and less is better when it comes to delivering quickly.”&lt;br /&gt;
&lt;br /&gt;
According to another belief by Cockburn, Crystal is a family of methods because that there is no “one-size-fits all” development process. As such, the different methods are assigned colors arranged in ascending opacity; the most agile version is Crystal Clear, followed by Crystal Yellow, Crystal Orange, and Crystal Red.&lt;br /&gt;
&lt;br /&gt;
The Crystal Methods emphasize the importance of people in developing software. &amp;quot;It focuses on people, interaction, community, skills, talents, and communication&lt;br /&gt;
as first order effects on performance. Process remains important, but secondary”. There are only two absolute rules of the Crystal family of methodologies. Firstly, incremental cycles should not exceed four months. Secondly, reflection workshops must be held after every delivery so that the methodology is self-adapting. Currently, only Crystal Clear and Crystal Orange have been defined &lt;br /&gt;
&lt;br /&gt;
The Crystal Family of Methodologies.One characteristics of Crystal is its intentional scaling to projects based on size and criticality. The larger a project gets (from left to right), the darker the color. &lt;br /&gt;
Image Courtesy : http://www.devx.com/architect/Article/32836/1763?supportItem=2&lt;br /&gt;
&lt;br /&gt;
 [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf Comparison] of methods  click on the link&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3.5 Feature Drive Development (FDD)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/essays/fdd.ht Feature-Driven Development](FDD) is a client-centric, architecture-centric, and pragmatic software process. As the name implies, features are an important aspect of FDD.  A feature is a small, client-valued function expressed in the form &amp;lt;action&amp;gt;&amp;lt;result&amp;gt;&amp;lt;object&amp;gt;.  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. &lt;br /&gt;
&lt;br /&gt;
==3.6) Lean Software Development (LSD)==&lt;br /&gt;
&lt;br /&gt;
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. http://en.wikipedia.org/wiki/Lean_software_development.&lt;br /&gt;
&lt;br /&gt;
Courtesy : IBM &lt;br /&gt;
&lt;br /&gt;
==3.7) Agile Modeling (AM)==&lt;br /&gt;
&lt;br /&gt;
[http://www.agilemodeling.com/ Agile Modeling] (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.   At a high level AM is a collection of best practices, depicted in the pattern language map below .  At a more detailed level AM is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner.  &lt;br /&gt;
&lt;br /&gt;
3.8) Agile Unified Process (AUP)&lt;br /&gt;
&lt;br /&gt;
[http://www.ambysoft.com/unifiedprocess/agileUP.html AUP] is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. &lt;br /&gt;
&lt;br /&gt;
4. Comparing Development Methods&lt;br /&gt;
&lt;br /&gt;
The leading development methods are compared in Table 1.The focus is not on use case modelling ,rather on high-level software processes therefore RUP and not detailed methods.The table lists the development methods that appear in reasonably common use and it is not exhaustive .Table 1 includes advice for when to apply the method, some of the situations overlap which reflects the fact that you have a methodological choice.Figure 1 depicts a graph comparing the same processes.The table also indicates primary types of modeling artifacts that you are likely to create following each method.The artifacts are listed “in order” of creation although the reality is that most models are created iteratively, even when you are following so-called serial processes.Some of the secondary models are not listed ,for example business rules and user interface prototypes on a RUP project ,since those artifacts are nto focus of the method .the primary focus of this table is to showcase different approaches to development ch of which has it’s own collection of primary modeling artifacts.  Each method is applicable to certain types of situations, so it is to your advantage to understand each method and to pick the one best suited for your current situation.&lt;br /&gt;
 It is important to understand that the advice regarding when to use a method is fairly general and should be taken with a grain of salt.&lt;br /&gt;
 &lt;br /&gt;
Table 1. Comparing software development methods.&lt;br /&gt;
Method&lt;br /&gt;
Description&lt;br /&gt;
When to Use It&lt;br /&gt;
Primary Modeling Artifacts&lt;br /&gt;
Agile Data (AD)	A partial agile method which focuses on techniques which support evolutionary (iterative and incremental) database development.	Tailor the AD philosophies and techniques into other evolutionary processes.	Agile data models&lt;br /&gt;
Agile Model Driven Development (AMDD)	A partial, practices-based method which describes techniques for effective modeling and documentation of systems.	Tailor the AM principles and practices into other agile or near-agile processes.	Apply the right artifact for the situation at hand.&lt;br /&gt;
Agile MSF (Microsoft Solutions Framework)	TBD	TBD	TBD&lt;br /&gt;
Agile Unified Process (AUP)	An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP.	When you want something in between XP and traditional RUP, a process that is agile yet explicitly includes activities and artifacts which you're accustomed to, or simply something that's free. 	&lt;br /&gt;
Use-case model&lt;br /&gt;
UML sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Code and Fix	A typically ineffective approach to development, usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it.  Also called &amp;quot;hacking&amp;quot; or &amp;quot;immature development&amp;quot;.      	For throw-away prototypes.	Source code&lt;br /&gt;
Data-Driven Approach&lt;br /&gt;
This is a generic category of data-driven methods popularized in the 1970s and 1980s with the emergence of structured methods.  This approach is typical rigorous and serial.&lt;br /&gt;
For a humorous look, read The Glacial Methodology&lt;br /&gt;
Development of a data warehouse, although a usage-centered approach is still preferable.&lt;br /&gt;
Development of a simple “CRUD” (Create Read Update Delete) business application.&lt;br /&gt;
Conceptual data model&lt;br /&gt;
Logical data model&lt;br /&gt;
Deployment architecture&lt;br /&gt;
Physical data model&lt;br /&gt;
Dynamic System Development Method (DSDM)&lt;br /&gt;
This is an agile method that has received ISO 9001 certification.  In many ways it is a formalization of the Rapid Application Development (RAD) methods of the 1980s. &lt;br /&gt;
Development of a user interface intensive system.&lt;br /&gt;
Complex business application.&lt;br /&gt;
Functional prototype&lt;br /&gt;
Design prototype&lt;br /&gt;
Enterprise Unified Process (EUP)&lt;br /&gt;
A rigorous, seven-phase software process that includes development, operation, and retirement of software-based systems.  Development efforts are iterative and incremental.  It includes a multi-system view that includes enterprise architecture, reuse management, portfolio management, and people management activities. &lt;br /&gt;
Need to manage a portfolio of projects, including but not limited teams following the RUP.&lt;br /&gt;
You have been successful at several RUP projects and wish to now take the full system lifecycle into account.&lt;br /&gt;
Enterprise business model&lt;br /&gt;
Enterprise domain architecture model&lt;br /&gt;
Enterprise technical architecture model&lt;br /&gt;
Project-level artifacts&lt;br /&gt;
Extreme Programming (XP)&lt;br /&gt;
An agile development method that focuses on the critical activities required to build software.&lt;br /&gt;
Small, co-located project teams (4-10 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Good relationship (potentially) exists with project stakeholders.&lt;br /&gt;
User stories&lt;br /&gt;
Architectural metaphor/strategy&lt;br /&gt;
Class responsibility collaborator (CRC) cards&lt;br /&gt;
Feature-Driven Development (FDD)&lt;br /&gt;
An agile development method based on short iterations which includes explicit modeling activities.&lt;br /&gt;
Small project team (4-20 people).&lt;br /&gt;
Requirements are uncertain.&lt;br /&gt;
Team willing to follow a modeling driven approach.&lt;br /&gt;
Domain class/object model&lt;br /&gt;
Features&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Glacial Methodology	TBD	TBD	TBD&lt;br /&gt;
ICONIX&lt;br /&gt;
A simple, modeling-driven method that can be instantiated as an improvement to the RUP or as an agile method in its own right.&lt;br /&gt;
Small to medium sized project teams (4 to 20 people).&lt;br /&gt;
Business application development.&lt;br /&gt;
Use-case model&lt;br /&gt;
Robustness diagrams&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
ISO/IEC 12207&lt;br /&gt;
A multi-phase software process that includes development, operation, and retirement of software-based systems.           &lt;br /&gt;
Medium to large project teams (20+ people).&lt;br /&gt;
Mandated (e.g. by government) to follow this approach.&lt;br /&gt;
Shall statements&lt;br /&gt;
Logical data model&lt;br /&gt;
Logical process model&lt;br /&gt;
Physical data model&lt;br /&gt;
Physical process model&lt;br /&gt;
MSF for CMMI (Microsoft Solutions Framework for Capability Maturity Model Integrated)	TBD	TBD	TBD&lt;br /&gt;
Object Oriented Software Process (OOSP)	A rigorous, CMM Level 5 (when fully instantiated), process whose focus is on the development, operations, support, and maintenance of systems using object-oriented and/or component based technologies.	Medium to large project teams (10+ people).	&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Personal Software Process (PSP)	A prescriptive software process for individual developers.	1 (see the TSP for the group version)	TBD&lt;br /&gt;
Rational Unified Process (RUP)&lt;br /&gt;
A rigorous, four-phase software development process which is iterative and incremental. &lt;br /&gt;
Medium to large project teams (10+ people).&lt;br /&gt;
Use-case model&lt;br /&gt;
System architecture model&lt;br /&gt;
UML Sequence diagrams&lt;br /&gt;
UML class model&lt;br /&gt;
Physical data model&lt;br /&gt;
Scrum	An agile method whose focus is on project management and requirements management.  Often combined with XP.	Any size project	Varies, depending on the development process (XP, ...) which you use Scrum with.&lt;br /&gt;
Team Software Process (TSP)	TBD	TBD	TBD&lt;br /&gt;
Test Driven Development (TDD)	An evolutionary approach to development where you must first write a test that fails before you write new functional code.  Also known as test-first programming or test-first development	Any size project	Tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
 &lt;br /&gt;
There is another very good link to understand the usage of various Agile methodologies : http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 .Strengths and Weaknesses &lt;br /&gt;
Every methodology has it's strengths and weaknesses. The following table can be used in assessing the right methodology for working on a project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strengths	Weaknesses&lt;br /&gt;
XP	&lt;br /&gt;
Strong technical practices.&lt;br /&gt;
Customer ownership of feature priority, developer ownership of estimates.&lt;br /&gt;
Frequent feedback opportunities.&lt;br /&gt;
Most widely known and adopted approach, at least in the U.S.&lt;br /&gt;
Requires onsite customer.&lt;br /&gt;
Documentation primarily through verbal communication and code. For some teams these are the only artifacts created, others create minimal design and user documentation.&lt;br /&gt;
Difficult for new adopters to determine how to accommodate architectural and design concerns.&lt;br /&gt;
Scrum      	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Self organizing teams and feedback.&lt;br /&gt;
Customer participation and steering.&lt;br /&gt;
Priorities based on business value.&lt;br /&gt;
Only approach here that has a certification process.&lt;br /&gt;
Only provides project management support, other disciplines are out of scope.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Can take some time to get the business to provide unique priorities for each requirement.&lt;br /&gt;
Lean	&lt;br /&gt;
Complements existing practices.&lt;br /&gt;
Focuses on project ROI.&lt;br /&gt;
Eliminates all project waste.&lt;br /&gt;
Cross-functional teams.&lt;br /&gt;
Does not specify technical practices.&lt;br /&gt;
Requires constant gathering of metrics which may be difficult for some environments to accommodate.&lt;br /&gt;
Theory of Constraints can be a complex and difficult aspect to adopt.&lt;br /&gt;
FDD	&lt;br /&gt;
Supports multiple teams working in parallel.&lt;br /&gt;
All aspects of a project tracked by feature.&lt;br /&gt;
Design by feature and build by feature aspects are easy to understand and adopt.&lt;br /&gt;
Scales to large teams or projects well.&lt;br /&gt;
Promotes individual code ownership as opposed to shared/team ownership.&lt;br /&gt;
Iterations are not as well defined by the process as other Agile methodologies.&lt;br /&gt;
The model-centric aspects can have huge impacts when working on existing systems that have no models.&lt;br /&gt;
AUP	&lt;br /&gt;
Robust methodology with many artifacts and disciplines to choose from.&lt;br /&gt;
Scales up very well.&lt;br /&gt;
Documentation helps communicate in distributed environments.&lt;br /&gt;
Priorities set based on highest risk. Risk can be a business or technical risk.&lt;br /&gt;
Higher levels of ceremony may be a hindrance in smaller projects.&lt;br /&gt;
Minimal attention to team dynamics.&lt;br /&gt;
Documentation is much more formal than most approaches mentioned here.&lt;br /&gt;
Crystal	&lt;br /&gt;
Family of methodologies designed to scale by project size and criticality.&lt;br /&gt;
Only methodology that specifically accounts for life critical projects.&lt;br /&gt;
As project size grows, cross-functional teams are utilized to ensure consistency.&lt;br /&gt;
The &amp;quot;human&amp;quot; component has been considered for every aspect of the project support structure.&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Expects all team members to be co-located. May not work well for distributed teams.&lt;br /&gt;
Adjustments are required from one project size/structure to another in order to follow the prescribed flavor of Crystal for that project size/criticality.&lt;br /&gt;
Moving from one flavor of Crystal to another in mid project doesn't work, as Crystal was not designed to be upward or downward compatible.&lt;br /&gt;
DSDM      	&lt;br /&gt;
An emphasis on testing is so strong that at least one tester is expected to be on each project team.&lt;br /&gt;
Designed from the ground up by business people, so business value is identified and expected to be the highest priority deliverable.&lt;br /&gt;
Has specific approach to determining how important each requirement is to an iteration.&lt;br /&gt;
Sets stakeholder expectations from the start of the project that not all requirements will make it into the final deliverable.&lt;br /&gt;
Probably the most heavyweight project compared in this survey.&lt;br /&gt;
Expects continuous user involvement.&lt;br /&gt;
Defines several artifacts and work products for each phase of the project; heavier documentation.&lt;br /&gt;
Access to material is controlled by a Consortium, and fees may be charged just to access the reference material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next table shows a comparison among the methodologies based on certain parameters such as Small Team, Highly Volatile Requirements, Distrbuted Teams, High Ceremony Culture,High Criticality Sytems and Multiple Customers/Stakeholders. According to the author, the table does not represent any scientific metrics for evaluating the adoption criteria for any methodology. The aim is to help out a team in picking out the best possible methodology suitable for their project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Condition	XP	Scrum	Lean	FDD	AUP	Crystal	DSDM&lt;br /&gt;
Small Team	 √      	 √	 √	 X	 X	 -	 √&lt;br /&gt;
Highly Volatile Requirements	 √      	 √	 √	 √	 -	 -	 X&lt;br /&gt;
Distributed Teams	 X	 √	 √	 √	 √	 X	 X&lt;br /&gt;
High Ceremony Culture	 X	 X	 -	 -	 √	 -	 √&lt;br /&gt;
High Criticality Systems	 X	 -	 -	 -	 -	 √	 X&lt;br /&gt;
Multiple Customers / Stakeholders       	 X	 √	 √	 -	 -	 -	 X&lt;br /&gt;
Table 3 depicts the authors' interpretation of the goal of each methodology expressed as a simple phrase.&lt;br /&gt;
&lt;br /&gt;
Table 3. High-level methodology description.&lt;br /&gt;
A single phrase can sum up the intent of each methodology's founder.&lt;br /&gt;
Methodology	Summarizing Phrase&lt;br /&gt;
XP	 Simplicity&lt;br /&gt;
Scrum	 Prioritized Business Value&lt;br /&gt;
Lean	 Return on Investment (ROI)       &lt;br /&gt;
FDD	 Business Model&lt;br /&gt;
AUP	 Manage Risk&lt;br /&gt;
Crystal	 Size and Criticality&lt;br /&gt;
DSDM	 Current Business Value&lt;br /&gt;
Reference : http://www.devx.com/architect/Article/32836/0/page/4&lt;br /&gt;
&lt;br /&gt;
6) Conclusion &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) References and Links&lt;br /&gt;
&lt;br /&gt;
http://agilemethodology.org/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method&lt;br /&gt;
&lt;br /&gt;
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/essays/fdd.htm&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Lean_software_development&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/&lt;br /&gt;
&lt;br /&gt;
http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;br /&gt;
&lt;br /&gt;
http://www.agiledata.org/essays/differentStrategies.html&lt;br /&gt;
&lt;br /&gt;
http://balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;
&lt;br /&gt;
http://www.devx.com/architect/Article/32836/0/page/4&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26212</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 3 bd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26212"/>
		<updated>2009-10-15T01:25:16Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synchronizer token pattern== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Developers of web sites face problem with maintaining normal control flow when there is multiple form submissions&lt;br /&gt;
The issue occurs when the user clicks on the submit button twice and the data is sent back to the client twice or when client access a previously bookmarked page . Control flow sequence is particularly important to preserve when form submission involves transaction processing on the server. There are many solutions to the situation ,some websites just warn the user not to submit twice once a submission is made and to wait for the response .In other cases we have client side and server side solutions to the problem .Server side solution being more reliable than client side .In the client side model the button is disabled based on a flag which is set  once first submission is performed .[http://www.javaworld.com/javaworld/javatips/jw-javatip136.html  Synchronizer token pattern] is one such server side method in which once a submission is made a flag is set and on re-submission the stored value is compared and if it is a duplicate no action is taken . Below we discuss some the ways this is handled in different in&lt;br /&gt;
different languages -&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Java_(programming_language) Java] uses the server side solution to solve this problem .The basic idea is to set a token in a session variable before returning a transactional page to the client. This page carries the token inside a hidden field. Upon submission, request processing first tests for the presence of a valid token in the request parameter by comparing it with the one registered in the session. If the token is valid, processing can continue normally, otherwise an alternate course of action is taken. After testing, the token resets to null to prevent subsequent submissions until a new token is saved in the session, which must be done at the appropriate time based on the desired application flow of control. In other words, the one-time privilege to submit data is given to one specific instance of a view.&lt;br /&gt;
&amp;lt;p&amp;gt; Based on the above, the solution appears complete. But an element is missing: how do we specify/implement the alternate course of action when an invalid token is detected. In fact, given the case where the submit button is reclicked, the second request will cause the loss of the first response containing the expected result. The thread that executes the first request still runs, but has no means of providing its response to the browser. Hence, the user may be left with the impression that the transaction did not complete, while in reality, it may have successfully completed.This tip's proposed strategy builds on the Struts framework to provide a complete solution that prevents duplicate submission and still ensures the display of a response that represents the original request's outcome. The proposed implementation involves the abstract class SynchroAction, which actions can extend to behave in the specified synchronized manner. This class overrides the Action.perform() method and provides an abstract performSynchro() method with the same arguments. Below is the example implementation in Java using struts &amp;lt;/p&amp;gt;&lt;br /&gt;
Eg Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public final ActionForward perform(ActionMapping mapping,&lt;br /&gt;
ActionForm form,&lt;br /&gt;
HttpServletRequest request,&lt;br /&gt;
HttpServletResponse response) throws IOException, ServletException &lt;br /&gt;
{ HttpSession session = request.getSession();&lt;br /&gt;
 ActionForward forward = null;&lt;br /&gt;
 if (isTokenValid(request)) &lt;br /&gt;
{ &lt;br /&gt;
 try { &lt;br /&gt;
session.setAttribute(FORM_KEY, form);&lt;br /&gt;
 session.setAttribute(FORWARD_KEY, forward);&lt;br /&gt;
 ActionErrors errors = (ActionErrors) request.getAttribute(Action.ERROR_KEY);&lt;br /&gt;
 if (errors != null &amp;amp;&amp;amp; !errors.empty()) &lt;br /&gt;
{ &lt;br /&gt;
 saveToken(request); &lt;br /&gt;
 } &lt;br /&gt;
 session.setAttribute(ERRORS_KEY, errors); &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); } &lt;br /&gt;
catch (IOException e)&lt;br /&gt;
 { &lt;br /&gt;
 throw e; &lt;br /&gt;
 } &lt;br /&gt;
catch (ServletException e) &lt;br /&gt;
{ &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); &lt;br /&gt;
 throw e; } } &lt;br /&gt;
&lt;br /&gt;
else { &lt;br /&gt;
 { &lt;br /&gt;
throw it if (e != null) { if (e instanceof IOException) { throw (IOException) e; } &lt;br /&gt;
else if (e instanceof ServletException) &lt;br /&gt;
{ throw (ServletException) e; &lt;br /&gt;
} } context if (&amp;quot;request&amp;quot;.equals(mapping.getScope())) &lt;br /&gt;
{ request.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
&lt;br /&gt;
else { session.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
(ActionErrors) session.getAttribute(ERRORS_KEY)); &lt;br /&gt;
session.getAttribute(FORWARD_KEY); } &lt;br /&gt;
else { &lt;br /&gt;
 return forward; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As we can see from the above code that for a valid token the protected action is performed only once ,while the action is being performed any other requests are received then &lt;br /&gt;
they are directed to performInvalidToken() method until the action is completed ,this method simply returns an ActionForward named &amp;quot;synchroerror&amp;quot; ,this should lead to a form with a button for continue , this just resubmits without any parameters and nothing happens until action of first form submission  is completed .When the action completes, it stores its forward, form, exception, and errors, if any, in the session, and it sets a flag to indicate it has completed. The first request coming after the action completion will get the forward, form, exception, and errors from the session and continue as if it was the first request itself.&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following method is one of the ways of creating a Synchronous token pattern in [http://en.wikipedia.org/wiki/PHP PHP]&lt;br /&gt;
&lt;br /&gt;
The below given code needs to be added to ur code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
$secret=md5(uniqueid(rand(), true));&lt;br /&gt;
$_SESSION['FORM_SECRET']=$secret;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here uniqueid() is used to create Unique ID. Then md5() is used to create 32 character hash of this Unique ID. This unique id is stored in the session for later use. We also need to use a different session variable for each form.&lt;br /&gt;
&lt;br /&gt;
Then we add a hidden field anywhere in the form using the below given code.&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;form_secret&amp;quot; id=&amp;quot;form_secret&amp;quot; &lt;br /&gt;
value=&amp;quot;&amp;lt;?php echo $_SESSION['FORM_SECRET'];?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we need to compare the value of the hidden field with the value stored in the session. If the value is the same, that means its the first time. Hence process the form data. Now unset the values stored in this session. now when the user refreshes the page, the code for processing form will be skipped. It can be done as given below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
//get the hidden value&lt;br /&gt;
$form_secret=$_POST['form_secret'];&lt;br /&gt;
if(isset($_SESSION['FORM_SECRET'])) {&lt;br /&gt;
if(strcasecmp($form_secret,$_SESSION['FORM_SECRET'])===0) {&lt;br /&gt;
/*We need to have the form submission code here&lt;br /&gt;
*/&lt;br /&gt;
unset($_SESSION['FORM_SECRET']);&lt;br /&gt;
}else {&lt;br /&gt;
//this is the condition of key which is invalid&lt;br /&gt;
}&lt;br /&gt;
}else {&lt;br /&gt;
//this is the case where is secret key is no there&lt;br /&gt;
echo 'Form data has been processed once!';&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JavaScript== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;   [http://en.wikipedia.org/wiki/JavaScript Java Script] uses two methods to prevent Duplicate form submissions .The first method disables the button and the second method uses cookies to prevent multiple submissions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a.&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot; TYPE=&amp;quot;text/JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
 function formControl(submitted)&lt;br /&gt;
 { if(submitted==&amp;quot;1&amp;quot;) &lt;br /&gt;
 { commentForm.Submit.disabled=true alert&lt;br /&gt;
(&amp;quot;Thanks for your comments!&amp;quot;) } } &amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The JavaScript event that fires this script is the onClick event. You're telling it to disable the SUBMIT button after the button is clicked. At that point, the button value equals &amp;quot;1.&amp;quot;&lt;br /&gt;
We included a JavaScript ALERT box in this example so that you'll know the form is working. &lt;br /&gt;
To tie this JavaScript to our form, we change the form's SUBMIT button to call the JavaScript function. This is done by adding an onClick event to the appropriate INPUT tag, as shown below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FORM action=&amp;quot;&amp;quot; method=&amp;quot;post&amp;quot; enctype=&amp;quot;text/plain&amp;quot; name=&amp;quot;commentForm&amp;quot;&amp;gt; &lt;br /&gt;
 How did you find our site? &amp;lt;input type=&amp;quot;text&amp;quot; maxlength=&amp;quot;30&amp;quot; size=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;Submit&amp;quot; value=&amp;quot;Send Comments and Get a Cookie&amp;quot; onClick=&amp;quot;formControl(1)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;/FORM&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The problem with this approach is only Internet explorer supports the disable option ,so it is browser dependent.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt; Below is another approach in java script using cookies in browser&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
b.&lt;br /&gt;
&lt;br /&gt;
The Below code has to be inserted into head section of our code &lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt; &amp;lt;!-- // give feedback to the respondent about the state of their submission function AllowNoDups() &lt;br /&gt;
{ var cookie_ls = document.cookie; &lt;br /&gt;
 if (cookie_ls.indexOf(document.location) &amp;gt; -1) &lt;br /&gt;
 { alert(&amp;quot;You've already submitted your answers. Thank you for your interest! &amp;quot;);&lt;br /&gt;
 return false; } &lt;br /&gt;
 else { document.cookie = window.location.href + &amp;quot; from &amp;quot; + document.referrer + &amp;quot;; &lt;br /&gt;
path=/; &lt;br /&gt;
expires=Thu, 23-Aug-2012 00:00:01 GMT;&amp;quot;; return true; }; }; //--&amp;gt; &amp;lt;/script&amp;gt;   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a user submits the form, the function sets an identifying cookie. Before the form processes, the function checks to see if there is already a cookie set.  If not, the form handles the submission as normal. If there is a cookie, the user gets an alert box that says &amp;quot;You've already submitted your answers&amp;quot; and the form submission is blocked.&lt;br /&gt;
This is a good, cross-browser way to avoid duplicate submissions, but we have to be careful that user's browser must accept cookies and have JavaScript turned on for this method to work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ASP.NET==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Here is an implementation in [http://en.wikipedia.org/wiki/ASP.NET ASP] that prevents duplicate form submission. In this implementation, we consider two ways of avoiding this problem. One is the Unsafe button method, where the button does not vanish after the user clicks the button. But at the same time does not consider two or more consecutive clicks, if done within a specified period of time, as a different request from the orginal one. The other method is the safe button method where the button vanishes after the button is clicked once and returns only after the request has been completed or timed out.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
Dim counter As Integer&lt;br /&gt;
Sub Page_Load()&lt;br /&gt;
If Session(&amp;quot;counter&amp;quot;) Is Nothing Then&lt;br /&gt;
counter = 0&lt;br /&gt;
Else&lt;br /&gt;
counter = CInt( Session(&amp;quot;counter&amp;quot;) )&lt;br /&gt;
End If&lt;br /&gt;
If IsPostBack Then&lt;br /&gt;
counter += 1&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = counter&lt;br /&gt;
End If&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; counter.ToString()&lt;br /&gt;
SafeButton.Attributes.Add(&amp;quot;onclick&amp;quot;, &amp;quot;disableButton();return true&amp;quot;)&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Process_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Dim i As Long&lt;br /&gt;
' 2-second delay&lt;br /&gt;
Dim endTime As DateTime = DateTime.Now.AddSeconds(2)&lt;br /&gt;
While DateTime.Now &amp;lt; endTime&lt;br /&gt;
End While&lt;br /&gt;
Label2.Text = &amp;quot;Finished @ &amp;quot; &amp;amp; DateTime.Now.ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Button2_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = 0&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; Session(&amp;quot;counter&amp;quot;).ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function disableButton()&lt;br /&gt;
{&lt;br /&gt;
document.form1.SafeButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form runat=&amp;quot;server&amp;quot; id=&amp;quot;form1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label2&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;UnsafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Unsafe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;SafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Safe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;asp:Button id=&amp;quot;Button2&amp;quot; onclick=&amp;quot;Button2_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Clear Counter&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;span1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As explained earlier, the Unsafe button allows users to click on submit multiple times. But clicking on the button again doesnt do anything, a two-second delay has been put into the button handler to emulate the time that a back-end process might take. So unless that time is up it doesnt effective count as a click.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Even for the Safe button the same process runs. But in this case as soon as the button is clicked, it disappears, preventing you from being able to click it again until the processing (postback) is complete.  This ensures that multiple form request is not sent by completely taking out the submit button. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ruby On Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails uses the Submit button disabling method to prevent Multiple form submissions .It uses the submit_tag option .Below is the code that demonstrate this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submit_tag &amp;quot;Submit&amp;quot;, :disable_with =&amp;gt; &amp;quot;Saving...&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This adds behavior to the submit button to disable it once clicked, and to display &amp;quot;Saving...&amp;quot; instead of &amp;quot;Submit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As illustrated in the above wiki, various languages handle the problem of multiple form submission either by client side or server &lt;br /&gt;
side methods. Server side handling is more reliable as some web browsers do not support the disabling of button feature. Synchronizer token pattern is best solution as illustrated in Java .In most languages, for server side handling, a token is set once on submission and compared again on resubmission to check for duplicates ,this prevents the data from being inserted again into the database. Some websites just pop message to user to wait until action is completed. Overall Java script is best way to handle duplicate form submission &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Below are some of the references for further reading &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Java struts solution - http://www.javaworld.com/javaworld/javatips/jw-javatip136.html?page=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; ASP .NET solution - http://forums.asp.net/t/447620.aspx?PageIndex=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;General HTML solution client side - http://drupal.org/node/69048&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;PHP solution -http://phpsense.com/php/prevent-duplicate-form-submission.html&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;ASP.NET solution - http://forums.techarena.in/software-development/1149257.htm&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ruby on rails solution - http://www.stackoverflow.com&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Struts solution http://www.sbouchard.com/2009/01/19/synchronizer-token-pattern-in-struts &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26211</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 3 bd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26211"/>
		<updated>2009-10-15T01:24:40Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synchronizer token pattern== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Developers of web sites face problem with maintaining normal control flow when there is multiple form submissions&lt;br /&gt;
The issue occurs when the user clicks on the submit button twice and the data is sent back to the client twice or when client access a previously bookmarked page . Control flow sequence is particularly important to preserve when form submission involves transaction processing on the server. There are many solutions to the situation ,some websites just warn the user not to submit twice once a submission is made and to wait for the response .In other cases we have client side and server side solutions to the problem .Server side solution being more reliable than client side .In the client side model the button is disabled based on a flag which is set  once first submission is performed .[http://www.javaworld.com/javaworld/javatips/jw-javatip136.html  Synchronizer token pattern] is one such server side method in which once a submission is made a flag is set and on re-submission the stored value is compared and if it is a duplicate no action is taken . Below we discuss some the ways this is handled in different in&lt;br /&gt;
different languages -&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Java_(programming_language) Java] uses the server side solution to solve this problem .The basic idea is to set a token in a session variable before returning a transactional page to the client. This page carries the token inside a hidden field. Upon submission, request processing first tests for the presence of a valid token in the request parameter by comparing it with the one registered in the session. If the token is valid, processing can continue normally, otherwise an alternate course of action is taken. After testing, the token resets to null to prevent subsequent submissions until a new token is saved in the session, which must be done at the appropriate time based on the desired application flow of control. In other words, the one-time privilege to submit data is given to one specific instance of a view.&lt;br /&gt;
&amp;lt;p&amp;gt; Based on the above, the solution appears complete. But an element is missing: how do we specify/implement the alternate course of action when an invalid token is detected. In fact, given the case where the submit button is reclicked, the second request will cause the loss of the first response containing the expected result. The thread that executes the first request still runs, but has no means of providing its response to the browser. Hence, the user may be left with the impression that the transaction did not complete, while in reality, it may have successfully completed.This tip's proposed strategy builds on the Struts framework to provide a complete solution that prevents duplicate submission and still ensures the display of a response that represents the original request's outcome. The proposed implementation involves the abstract class SynchroAction, which actions can extend to behave in the specified synchronized manner. This class overrides the Action.perform() method and provides an abstract performSynchro() method with the same arguments. Below is the example implementation in Java using struts &amp;lt;/p&amp;gt;&lt;br /&gt;
Eg Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public final ActionForward perform(ActionMapping mapping,&lt;br /&gt;
ActionForm form,&lt;br /&gt;
HttpServletRequest request,&lt;br /&gt;
HttpServletResponse response) throws IOException, ServletException &lt;br /&gt;
{ HttpSession session = request.getSession();&lt;br /&gt;
 ActionForward forward = null;&lt;br /&gt;
 if (isTokenValid(request)) &lt;br /&gt;
{ &lt;br /&gt;
 try { &lt;br /&gt;
session.setAttribute(FORM_KEY, form);&lt;br /&gt;
 session.setAttribute(FORWARD_KEY, forward);&lt;br /&gt;
 ActionErrors errors = (ActionErrors) request.getAttribute(Action.ERROR_KEY);&lt;br /&gt;
 if (errors != null &amp;amp;&amp;amp; !errors.empty()) &lt;br /&gt;
{ &lt;br /&gt;
 saveToken(request); &lt;br /&gt;
 } &lt;br /&gt;
 session.setAttribute(ERRORS_KEY, errors); &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); } &lt;br /&gt;
catch (IOException e)&lt;br /&gt;
 { &lt;br /&gt;
 throw e; &lt;br /&gt;
 } &lt;br /&gt;
catch (ServletException e) &lt;br /&gt;
{ &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); &lt;br /&gt;
 throw e; } } &lt;br /&gt;
&lt;br /&gt;
else { &lt;br /&gt;
 { &lt;br /&gt;
throw it if (e != null) { if (e instanceof IOException) { throw (IOException) e; } &lt;br /&gt;
else if (e instanceof ServletException) &lt;br /&gt;
{ throw (ServletException) e; &lt;br /&gt;
} } context if (&amp;quot;request&amp;quot;.equals(mapping.getScope())) &lt;br /&gt;
{ request.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
&lt;br /&gt;
else { session.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
(ActionErrors) session.getAttribute(ERRORS_KEY)); &lt;br /&gt;
session.getAttribute(FORWARD_KEY); } &lt;br /&gt;
else { &lt;br /&gt;
 return forward; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As we can see from the above code that for a valid token the protected action is performed only once ,while the action is being performed any other requests are received then &lt;br /&gt;
they are directed to performInvalidToken() method until the action is completed ,this method simply returns an ActionForward named &amp;quot;synchroerror&amp;quot; ,this should lead to a form with a button for continue , this just resubmits without any parameters and nothing happens until action of first form submission  is completed .When the action completes, it stores its forward, form, exception, and errors, if any, in the session, and it sets a flag to indicate it has completed. The first request coming after the action completion will get the forward, form, exception, and errors from the session and continue as if it was the first request itself.&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following method is one of the ways of creating a Synchronous token pattern in [http://en.wikipedia.org/wiki/PHP PHP]&lt;br /&gt;
&lt;br /&gt;
The below given code needs to be added to ur code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
$secret=md5(uniqueid(rand(), true));&lt;br /&gt;
$_SESSION['FORM_SECRET']=$secret;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here uniqueid() is used to create Unique ID. Then md5() is used to create 32 character hash of this Unique ID. This unique id is stored in the session for later use. We also need to use a different session variable for each form.&lt;br /&gt;
&lt;br /&gt;
Then we add a hidden field anywhere in the form using the below given code.&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;form_secret&amp;quot; id=&amp;quot;form_secret&amp;quot; &lt;br /&gt;
value=&amp;quot;&amp;lt;?php echo $_SESSION['FORM_SECRET'];?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we need to compare the value of the hidden field with the value stored in the session. If the value is the same, that means its the first time. Hence process the form data. Now unset the values stored in this session. now when the user refreshes the page, the code for processing form will be skipped. It can be done as given below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
//get the hidden value&lt;br /&gt;
$form_secret=$_POST['form_secret'];&lt;br /&gt;
if(isset($_SESSION['FORM_SECRET'])) {&lt;br /&gt;
if(strcasecmp($form_secret,$_SESSION['FORM_SECRET'])===0) {&lt;br /&gt;
/*We need to have the form submission code here&lt;br /&gt;
*/&lt;br /&gt;
unset($_SESSION['FORM_SECRET']);&lt;br /&gt;
}else {&lt;br /&gt;
//this is the condition of key which is invalid&lt;br /&gt;
}&lt;br /&gt;
}else {&lt;br /&gt;
//this is the case where is secret key is no there&lt;br /&gt;
echo 'Form data has been processed once!';&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JavaScript== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;   [http://en.wikipedia.org/wiki/JavaScript Java Script] uses two methods to prevent Duplicate form submissions .The first method disables the button and the second method uses cookies to prevent multiple submissions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a.&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot; TYPE=&amp;quot;text/JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
 function formControl(submitted)&lt;br /&gt;
 { if(submitted==&amp;quot;1&amp;quot;) &lt;br /&gt;
 { commentForm.Submit.disabled=true alert&lt;br /&gt;
(&amp;quot;Thanks for your comments!&amp;quot;) } } &amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The JavaScript event that fires this script is the onClick event. You're telling it to disable the SUBMIT button after the button is clicked. At that point, the button value equals &amp;quot;1.&amp;quot;&lt;br /&gt;
We included a JavaScript ALERT box in this example so that you'll know the form is working. &lt;br /&gt;
To tie this JavaScript to our form, we change the form's SUBMIT button to call the JavaScript function. This is done by adding an onClick event to the appropriate INPUT tag, as shown below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FORM action=&amp;quot;&amp;quot; method=&amp;quot;post&amp;quot; enctype=&amp;quot;text/plain&amp;quot; name=&amp;quot;commentForm&amp;quot;&amp;gt; &lt;br /&gt;
 How did you find our site? &amp;lt;input type=&amp;quot;text&amp;quot; maxlength=&amp;quot;30&amp;quot; size=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;Submit&amp;quot; value=&amp;quot;Send Comments and Get a Cookie&amp;quot; onClick=&amp;quot;formControl(1)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;/FORM&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The problem with this approach is only Internet explorer supports the disable option ,so it is browser dependent.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt; Below is another approach in java script using cookies in browser&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
b.&lt;br /&gt;
&lt;br /&gt;
The Below code has to be inserted into head section of our code &lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt; &amp;lt;!-- // give feedback to the respondent about the state of their submission function AllowNoDups() &lt;br /&gt;
{ var cookie_ls = document.cookie; &lt;br /&gt;
 if (cookie_ls.indexOf(document.location) &amp;gt; -1) &lt;br /&gt;
 { alert(&amp;quot;You've already submitted your answers. Thank you for your interest! &amp;quot;);&lt;br /&gt;
 return false; } &lt;br /&gt;
 else { document.cookie = window.location.href + &amp;quot; from &amp;quot; + document.referrer + &amp;quot;; &lt;br /&gt;
path=/; &lt;br /&gt;
expires=Thu, 23-Aug-2012 00:00:01 GMT;&amp;quot;; return true; }; }; //--&amp;gt; &amp;lt;/script&amp;gt;   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a user submits the form, the function sets an identifying cookie. Before the form processes, the function checks to see if there is already a cookie set.  If not, the form handles the submission as normal. If there is a cookie, the user gets an alert box that says &amp;quot;You've already submitted your answers&amp;quot; and the form submission is blocked.&lt;br /&gt;
This is a good, cross-browser way to avoid duplicate submissions, but we have to be careful that user's browser must accept cookies and have JavaScript turned on for this method to work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ASP.NET==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Here is an implementation in [http://en.wikipedia.org/wiki/ASP.NET ASP] that prevents duplicate form submission. In this implementation, we consider two ways of avoiding this problem. One is the Unsafe button method, where the button does not vanish after the user clicks the button. But at the same time does not consider two or more consecutive clicks, if done within a specified period of time, as a different request from the orginal one. The other method is the safe button method where the button vanishes after the button is clicked once and returns only after the request has been completed or timed out.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
Dim counter As Integer&lt;br /&gt;
Sub Page_Load()&lt;br /&gt;
If Session(&amp;quot;counter&amp;quot;) Is Nothing Then&lt;br /&gt;
counter = 0&lt;br /&gt;
Else&lt;br /&gt;
counter = CInt( Session(&amp;quot;counter&amp;quot;) )&lt;br /&gt;
End If&lt;br /&gt;
If IsPostBack Then&lt;br /&gt;
counter += 1&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = counter&lt;br /&gt;
End If&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; counter.ToString()&lt;br /&gt;
SafeButton.Attributes.Add(&amp;quot;onclick&amp;quot;, &amp;quot;disableButton();return true&amp;quot;)&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Process_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Dim i As Long&lt;br /&gt;
' 2-second delay&lt;br /&gt;
Dim endTime As DateTime = DateTime.Now.AddSeconds(2)&lt;br /&gt;
While DateTime.Now &amp;lt; endTime&lt;br /&gt;
End While&lt;br /&gt;
Label2.Text = &amp;quot;Finished @ &amp;quot; &amp;amp; DateTime.Now.ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Button2_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = 0&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; Session(&amp;quot;counter&amp;quot;).ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function disableButton()&lt;br /&gt;
{&lt;br /&gt;
document.form1.SafeButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form runat=&amp;quot;server&amp;quot; id=&amp;quot;form1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label2&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;UnsafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Unsafe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;SafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Safe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;asp:Button id=&amp;quot;Button2&amp;quot; onclick=&amp;quot;Button2_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Clear Counter&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;span1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As explained earlier, the Unsafe button allows users to click on submit multiple times. But clicking on the button again doesnt do anything, a two-second delay has been put into the button handler to emulate the time that a back-end process might take. So unless that time is up it doesnt effective count as a click.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Even for the Safe button the same process runs. But in this case as soon as the button is clicked, it disappears, preventing you from being able to click it again until the processing (postback) is complete.  This ensures that multiple form request is not sent by completely taking out the submit button. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ruby On Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails uses the Submit button disabling method to prevent Multiple form submissions .It uses the submit_tag option .Below is the code that demonstrate this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submit_tag &amp;quot;Submit&amp;quot;, :disable_with =&amp;gt; &amp;quot;Saving...&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This adds behavior to the submit button to disable it once clicked, and to display &amp;quot;Saving...&amp;quot; instead of &amp;quot;Submit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As illustrated in the above wiki, various languages handle the problem of multiple form submission either by client side or server &lt;br /&gt;
side methods. Server side handling is more reliable as some web browsers do not support the disabling of button feature. Synchronizer token pattern is best solution as illustrated in Java .In most languages, for server side handling, a token is set once on submission and compared again on resubmission to check for duplicates ,this prevents the data from being inserted again into the database. Some websites just pop message to user to wait until action is completed. Overall Java script is best way to handle duplicate form submission &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Below are some of the references for further reading &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Java struts solution - http://www.javaworld.com/javaworld/javatips/jw-javatip136.html?page=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; ASP .NET solution - http://forums.asp.net/t/447620.aspx?PageIndex=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://drupal.org/node/69048&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;PHP solution -http://phpsense.com/php/prevent-duplicate-form-submission.html&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;ASP.NET solution - http://forums.techarena.in/software-development/1149257.htm&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ruby on rails solution - http://www.stackoverflow.com&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Struts solution http://www.sbouchard.com/2009/01/19/synchronizer-token-pattern-in-struts &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26204</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 3 bd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26204"/>
		<updated>2009-10-15T01:21:23Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synchronizer token pattern== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Developers of web sites face problem with maintaining normal control flow when there is multiple form submissions&lt;br /&gt;
The issue occurs when the user clicks on the submit button twice and the data is sent back to the client twice or when client access a previously bookmarked page . Control flow sequence is particularly important to preserve when form submission involves transaction processing on the server. There are many solutions to the situation ,some websites just warn the user not to submit twice once a submission is made and to wait for the response .In other cases we have client side and server side solutions to the problem .Server side solution being more reliable than client side .In the client side model the button is disabled based on a flag which is set  once first submission is performed .[http://www.javaworld.com/javaworld/javatips/jw-javatip136.html  Synchronizer token pattern] is one such server side method in which once a submission is made a flag is set and on re-submission the stored value is compared and if it is a duplicate no action is taken . Below we discuss some the ways this is handled in different in&lt;br /&gt;
different languages -&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Java_(programming_language) Java] uses the server side solution to solve this problem .The basic idea is to set a token in a session variable before returning a transactional page to the client. This page carries the token inside a hidden field. Upon submission, request processing first tests for the presence of a valid token in the request parameter by comparing it with the one registered in the session. If the token is valid, processing can continue normally, otherwise an alternate course of action is taken. After testing, the token resets to null to prevent subsequent submissions until a new token is saved in the session, which must be done at the appropriate time based on the desired application flow of control. In other words, the one-time privilege to submit data is given to one specific instance of a view.&lt;br /&gt;
&amp;lt;p&amp;gt; Based on the above, the solution appears complete. But an element is missing: how do we specify/implement the alternate course of action when an invalid token is detected. In fact, given the case where the submit button is reclicked, the second request will cause the loss of the first response containing the expected result. The thread that executes the first request still runs, but has no means of providing its response to the browser. Hence, the user may be left with the impression that the transaction did not complete, while in reality, it may have successfully completed.This tip's proposed strategy builds on the Struts framework to provide a complete solution that prevents duplicate submission and still ensures the display of a response that represents the original request's outcome. The proposed implementation involves the abstract class SynchroAction, which actions can extend to behave in the specified synchronized manner. This class overrides the Action.perform() method and provides an abstract performSynchro() method with the same arguments. Below is the example implementation in Java using struts &amp;lt;/p&amp;gt;&lt;br /&gt;
Eg Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public final ActionForward perform(ActionMapping mapping,&lt;br /&gt;
ActionForm form,&lt;br /&gt;
HttpServletRequest request,&lt;br /&gt;
HttpServletResponse response) throws IOException, ServletException &lt;br /&gt;
{ HttpSession session = request.getSession();&lt;br /&gt;
 ActionForward forward = null;&lt;br /&gt;
 if (isTokenValid(request)) &lt;br /&gt;
{ &lt;br /&gt;
 try { &lt;br /&gt;
session.setAttribute(FORM_KEY, form);&lt;br /&gt;
 session.setAttribute(FORWARD_KEY, forward);&lt;br /&gt;
 ActionErrors errors = (ActionErrors) request.getAttribute(Action.ERROR_KEY);&lt;br /&gt;
 if (errors != null &amp;amp;&amp;amp; !errors.empty()) &lt;br /&gt;
{ &lt;br /&gt;
 saveToken(request); &lt;br /&gt;
 } &lt;br /&gt;
 session.setAttribute(ERRORS_KEY, errors); &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); } &lt;br /&gt;
catch (IOException e)&lt;br /&gt;
 { &lt;br /&gt;
 throw e; &lt;br /&gt;
 } &lt;br /&gt;
catch (ServletException e) &lt;br /&gt;
{ &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); &lt;br /&gt;
 throw e; } } &lt;br /&gt;
&lt;br /&gt;
else { &lt;br /&gt;
 { &lt;br /&gt;
throw it if (e != null) { if (e instanceof IOException) { throw (IOException) e; } &lt;br /&gt;
else if (e instanceof ServletException) &lt;br /&gt;
{ throw (ServletException) e; &lt;br /&gt;
} } context if (&amp;quot;request&amp;quot;.equals(mapping.getScope())) &lt;br /&gt;
{ request.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
&lt;br /&gt;
else { session.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
(ActionErrors) session.getAttribute(ERRORS_KEY)); &lt;br /&gt;
session.getAttribute(FORWARD_KEY); } &lt;br /&gt;
else { &lt;br /&gt;
 return forward; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As we can see from the above code that for a valid token the protected action is performed only once ,while the action is being performed any other requests are received then &lt;br /&gt;
they are directed to performInvalidToken() method until the action is completed ,this method simply returns an ActionForward named &amp;quot;synchroerror&amp;quot; ,this should lead to a form with a button for continue , this just resubmits without any parameters and nothing happens until action of first form submission  is completed .When the action completes, it stores its forward, form, exception, and errors, if any, in the session, and it sets a flag to indicate it has completed. The first request coming after the action completion will get the forward, form, exception, and errors from the session and continue as if it was the first request itself.&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following method is one of the ways of creating a Synchronous token pattern in [http://en.wikipedia.org/wiki/PHP PHP]&lt;br /&gt;
&lt;br /&gt;
The below given code needs to be added to ur code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
$secret=md5(uniqueid(rand(), true));&lt;br /&gt;
$_SESSION['FORM_SECRET']=$secret;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here uniqueid() is used to create Unique ID. Then md5() is used to create 32 character hash of this Unique ID. This unique id is stored in the session for later use. We also need to use a different session variable for each form.&lt;br /&gt;
&lt;br /&gt;
Then we add a hidden field anywhere in the form using the below given code.&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;form_secret&amp;quot; id=&amp;quot;form_secret&amp;quot; &lt;br /&gt;
value=&amp;quot;&amp;lt;?php echo $_SESSION['FORM_SECRET'];?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we need to compare the value of the hidden field with the value stored in the session. If the value is the same, that means its the first time. Hence process the form data. Now unset the values stored in this session. now when the user refreshes the page, the code for processing form will be skipped. It can be done as given below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
//get the hidden value&lt;br /&gt;
$form_secret=$_POST['form_secret'];&lt;br /&gt;
if(isset($_SESSION['FORM_SECRET'])) {&lt;br /&gt;
if(strcasecmp($form_secret,$_SESSION['FORM_SECRET'])===0) {&lt;br /&gt;
/*We need to have the form submission code here&lt;br /&gt;
*/&lt;br /&gt;
unset($_SESSION['FORM_SECRET']);&lt;br /&gt;
}else {&lt;br /&gt;
//this is the condition of key which is invalid&lt;br /&gt;
}&lt;br /&gt;
}else {&lt;br /&gt;
//this is the case where is secret key is no there&lt;br /&gt;
echo 'Form data has been processed once!';&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JavaScript== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;   [http://en.wikipedia.org/wiki/JavaScript Java Script] uses two methods to prevent Duplicate form submissions .The first method disables the button and the second method uses cookies to prevent multiple submissions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a.&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot; TYPE=&amp;quot;text/JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
 function formControl(submitted)&lt;br /&gt;
 { if(submitted==&amp;quot;1&amp;quot;) &lt;br /&gt;
 { commentForm.Submit.disabled=true alert&lt;br /&gt;
(&amp;quot;Thanks for your comments!&amp;quot;) } } &amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The JavaScript event that fires this script is the onClick event. You're telling it to disable the SUBMIT button after the button is clicked. At that point, the button value equals &amp;quot;1.&amp;quot;&lt;br /&gt;
We included a JavaScript ALERT box in this example so that you'll know the form is working. &lt;br /&gt;
To tie this JavaScript to our form, we change the form's SUBMIT button to call the JavaScript function. This is done by adding an onClick event to the appropriate INPUT tag, as shown below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FORM action=&amp;quot;&amp;quot; method=&amp;quot;post&amp;quot; enctype=&amp;quot;text/plain&amp;quot; name=&amp;quot;commentForm&amp;quot;&amp;gt; &lt;br /&gt;
 How did you find our site? &amp;lt;input type=&amp;quot;text&amp;quot; maxlength=&amp;quot;30&amp;quot; size=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;Submit&amp;quot; value=&amp;quot;Send Comments and Get a Cookie&amp;quot; onClick=&amp;quot;formControl(1)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;/FORM&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The problem with this approach is only Internet explorer supports the disable option ,so it is browser dependent.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt; Below is another approach in java script using cookies in browser&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
b.&lt;br /&gt;
&lt;br /&gt;
The Below code has to be inserted into head section of our code &lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt; &amp;lt;!-- // give feedback to the respondent about the state of their submission function AllowNoDups() &lt;br /&gt;
{ var cookie_ls = document.cookie; &lt;br /&gt;
 if (cookie_ls.indexOf(document.location) &amp;gt; -1) &lt;br /&gt;
 { alert(&amp;quot;You've already submitted your answers. Thank you for your interest! &amp;quot;);&lt;br /&gt;
 return false; } &lt;br /&gt;
 else { document.cookie = window.location.href + &amp;quot; from &amp;quot; + document.referrer + &amp;quot;; &lt;br /&gt;
path=/; &lt;br /&gt;
expires=Thu, 23-Aug-2012 00:00:01 GMT;&amp;quot;; return true; }; }; //--&amp;gt; &amp;lt;/script&amp;gt;   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a user submits the form, the function sets an identifying cookie. Before the form processes, the function checks to see if there is already a cookie set.  If not, the form handles the submission as normal. If there is a cookie, the user gets an alert box that says &amp;quot;You've already submitted your answers&amp;quot; and the form submission is blocked.&lt;br /&gt;
This is a good, cross-browser way to avoid duplicate submissions, but we have to be careful that user's browser must accept cookies and have JavaScript turned on for this method to work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ASP.NET==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Here is an implementation in [http://en.wikipedia.org/wiki/ASP.NET ASP] that prevents duplicate form submission. In this implementation, we consider two ways of avoiding this problem. One is the Unsafe button method, where the button does not vanish after the user clicks the button. But at the same time does not consider two or more consecutive clicks, if done within a specified period of time, as a different request from the orginal one. The other method is the safe button method where the button vanishes after the button is clicked once and returns only after the request has been completed or timed out.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
Dim counter As Integer&lt;br /&gt;
Sub Page_Load()&lt;br /&gt;
If Session(&amp;quot;counter&amp;quot;) Is Nothing Then&lt;br /&gt;
counter = 0&lt;br /&gt;
Else&lt;br /&gt;
counter = CInt( Session(&amp;quot;counter&amp;quot;) )&lt;br /&gt;
End If&lt;br /&gt;
If IsPostBack Then&lt;br /&gt;
counter += 1&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = counter&lt;br /&gt;
End If&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; counter.ToString()&lt;br /&gt;
SafeButton.Attributes.Add(&amp;quot;onclick&amp;quot;, &amp;quot;disableButton();return true&amp;quot;)&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Process_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Dim i As Long&lt;br /&gt;
' 2-second delay&lt;br /&gt;
Dim endTime As DateTime = DateTime.Now.AddSeconds(2)&lt;br /&gt;
While DateTime.Now &amp;lt; endTime&lt;br /&gt;
End While&lt;br /&gt;
Label2.Text = &amp;quot;Finished @ &amp;quot; &amp;amp; DateTime.Now.ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Button2_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = 0&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; Session(&amp;quot;counter&amp;quot;).ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function disableButton()&lt;br /&gt;
{&lt;br /&gt;
document.form1.SafeButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form runat=&amp;quot;server&amp;quot; id=&amp;quot;form1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label2&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;UnsafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Unsafe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;SafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Safe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;asp:Button id=&amp;quot;Button2&amp;quot; onclick=&amp;quot;Button2_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Clear Counter&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;span1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As explained earlier, the Unsafe button allows users to click on submit multiple times. But clicking on the button again doesnt do anything, a two-second delay has been put into the button handler to emulate the time that a back-end process might take. So unless that time is up it doesnt effective count as a click.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Even for the Safe button the same process runs. But in this case as soon as the button is clicked, it disappears, preventing you from being able to click it again until the processing (postback) is complete.  This ensures that multiple form request is not sent by completely taking out the submit button. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ruby On Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails uses the Submit button disabling method to prevent Multiple form submissions .It uses the submit_tag option .Below is the code that demonstrate this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submit_tag &amp;quot;Submit&amp;quot;, :disable_with =&amp;gt; &amp;quot;Saving...&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This adds behavior to the submit button to disable it once clicked, and to display &amp;quot;Saving...&amp;quot; instead of &amp;quot;Submit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As illustrated in the above wiki, various languages handle the problem of multiple form submission either by client side or server &lt;br /&gt;
side methods. Server side handling is more reliable as some web browsers do not support the disabling of button feature. Synchronizer token pattern is best solution as illustrated in Java .In most languages, for server side handling, a token is set once on submission and compared again on resubmission to check for duplicates ,this prevents the data from being inserted again into the database. Some websites just pop message to user to wait until action is completed. Overall Java script is best way to handle duplicate form submission &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Below are some of the references for further reading &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.javaworld.com/javaworld/javatips/jw-javatip136.html?page=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.asp.net/t/447620.aspx?PageIndex=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://drupal.org/node/69048&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://phpsense.com/php/prevent-duplicate-form-submission.html&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.techarena.in/software-development/1149257.htm&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.stackoverflow.com&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26038</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 3 bd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26038"/>
		<updated>2009-10-14T17:33:39Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* ASP.NET */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synchronizer token pattern== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Web application developers and designers face the problem with maintaining normal flow of control when multiple form submissions are made in a website .&lt;br /&gt;
This situation typically occurs when a user clicks more than once on a submit button before the response is sent back or when a client accesses a view by returning to a previously bookmarked page. Control flow sequence is particularly important to preserve when form submission involves transaction processing on the server. There are many solutions to the situation ,some websites just warn the user not to submit twice once a submission is made and to wait for the response .In other cases we have client side and server side solutions to the problem .Server side solution being more reliable than client side .In the client side model the button is disabled based on a flag which is set  once first submission is performed .Below we discuss some the ways this is handled in different in&lt;br /&gt;
different languages -&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Java_(programming_language) Java] uses the server side solution to solve this problem .The basic idea is to set a token in a session variable before returning a transactional page to the client. This page carries the token inside a hidden field. Upon submission, request processing first tests for the presence of a valid token in the request parameter by comparing it with the one registered in the session. If the token is valid, processing can continue normally, otherwise an alternate course of action is taken. After testing, the token resets to null to prevent subsequent submissions until a new token is saved in the session, which must be done at the appropriate time based on the desired application flow of control. In other words, the one-time privilege to submit data is given to one specific instance of a view.&lt;br /&gt;
&amp;lt;p&amp;gt; Based on the above, the solution appears complete. But an element is missing: how do we specify/implement the alternate course of action when an invalid token is detected. In fact, given the case where the submit button is reclicked, the second request will cause the loss of the first response containing the expected result. The thread that executes the first request still runs, but has no means of providing its response to the browser. Hence, the user may be left with the impression that the transaction did not complete, while in reality, it may have successfully completed.This tip's proposed strategy builds on the Struts framework to provide a complete solution that prevents duplicate submission and still ensures the display of a response that represents the original request's outcome. The proposed implementation involves the abstract class SynchroAction, which actions can extend to behave in the specified synchronized manner. This class overrides the Action.perform() method and provides an abstract performSynchro() method with the same arguments. Below is the example implementation in Java using struts &amp;lt;/p&amp;gt;&lt;br /&gt;
Eg Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public final ActionForward perform(ActionMapping mapping,&lt;br /&gt;
ActionForm form,&lt;br /&gt;
HttpServletRequest request,&lt;br /&gt;
HttpServletResponse response) throws IOException, ServletException &lt;br /&gt;
{ HttpSession session = request.getSession();&lt;br /&gt;
 ActionForward forward = null;&lt;br /&gt;
 if (isTokenValid(request)) &lt;br /&gt;
{ &lt;br /&gt;
 try { &lt;br /&gt;
session.setAttribute(FORM_KEY, form);&lt;br /&gt;
 session.setAttribute(FORWARD_KEY, forward);&lt;br /&gt;
 ActionErrors errors = (ActionErrors) request.getAttribute(Action.ERROR_KEY);&lt;br /&gt;
 if (errors != null &amp;amp;&amp;amp; !errors.empty()) &lt;br /&gt;
{ &lt;br /&gt;
 saveToken(request); &lt;br /&gt;
 } &lt;br /&gt;
 session.setAttribute(ERRORS_KEY, errors); &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); } &lt;br /&gt;
catch (IOException e)&lt;br /&gt;
 { &lt;br /&gt;
 throw e; &lt;br /&gt;
 } &lt;br /&gt;
catch (ServletException e) &lt;br /&gt;
{ &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); &lt;br /&gt;
 throw e; } } &lt;br /&gt;
&lt;br /&gt;
else { &lt;br /&gt;
 { &lt;br /&gt;
throw it if (e != null) { if (e instanceof IOException) { throw (IOException) e; } &lt;br /&gt;
else if (e instanceof ServletException) &lt;br /&gt;
{ throw (ServletException) e; &lt;br /&gt;
} } context if (&amp;quot;request&amp;quot;.equals(mapping.getScope())) &lt;br /&gt;
{ request.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
&lt;br /&gt;
else { session.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
(ActionErrors) session.getAttribute(ERRORS_KEY)); &lt;br /&gt;
session.getAttribute(FORWARD_KEY); } &lt;br /&gt;
else { &lt;br /&gt;
 return forward; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As we can see from the above code that for a valid token the protected action is performed only once ,while the action is being performed any other requests are received then &lt;br /&gt;
they are directed to performInvalidToken() method until the action is completed ,this method simply returns an ActionForward named &amp;quot;synchroerror&amp;quot; ,this should lead to a form with a button for continue , this just resubmits without any parameters and nothing happens until action of first form submission  is completed .When the action completes, it stores its forward, form, exception, and errors, if any, in the session, and it sets a flag to indicate it has completed. The first request coming after the action completion will get the forward, form, exception, and errors from the session and continue as if it was the first request itself.&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following method is one of the ways of creating a Synchronous token pattern in [http://en.wikipedia.org/wiki/PHP PHP]&lt;br /&gt;
&lt;br /&gt;
The below given code needs to be added to ur code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
$secret=md5(uniqueid(rand(), true));&lt;br /&gt;
$_SESSION['FORM_SECRET']=$secret;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here uniqueid() is used to create Unique ID. Then md5() is used to create 32 character hash of this Unique ID. This unique id is stored in the session for later use. We also need to use a different session variable for each form.&lt;br /&gt;
&lt;br /&gt;
Then we add a hidden field anywhere in the form using the below given code.&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;form_secret&amp;quot; id=&amp;quot;form_secret&amp;quot; &lt;br /&gt;
value=&amp;quot;&amp;lt;?php echo $_SESSION['FORM_SECRET'];?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we need to compare the value of the hidden field with the value stored in the session. If the value is the same, that means its the first time. Hence process the form data. Now unset the values stored in this session. now when the user refreshes the page, the code for processing form will be skipped. It can be done as given below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
//get the hidden value&lt;br /&gt;
$form_secret=$_POST['form_secret'];&lt;br /&gt;
if(isset($_SESSION['FORM_SECRET'])) {&lt;br /&gt;
if(strcasecmp($form_secret,$_SESSION['FORM_SECRET'])===0) {&lt;br /&gt;
/*We need to have the form submission code here&lt;br /&gt;
*/&lt;br /&gt;
unset($_SESSION['FORM_SECRET']);&lt;br /&gt;
}else {&lt;br /&gt;
//this is the condition of key which is invalid&lt;br /&gt;
}&lt;br /&gt;
}else {&lt;br /&gt;
//this is the case where is secret key is no there&lt;br /&gt;
echo 'Form data has been processed once!';&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JavaScript== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;   [http://en.wikipedia.org/wiki/JavaScript Java Script] uses two methods to prevent Duplicate form submissions .The first method disables the button and the second method uses cookies to prevent multiple submissions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a.&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot; TYPE=&amp;quot;text/JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
 function formControl(submitted)&lt;br /&gt;
 { if(submitted==&amp;quot;1&amp;quot;) &lt;br /&gt;
 { commentForm.Submit.disabled=true alert&lt;br /&gt;
(&amp;quot;Thanks for your comments!&amp;quot;) } } &amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The JavaScript event that fires this script is the onClick event. You're telling it to disable the SUBMIT button after the button is clicked. At that point, the button value equals &amp;quot;1.&amp;quot;&lt;br /&gt;
We included a JavaScript ALERT box in this example so that you'll know the form is working. &lt;br /&gt;
To tie this JavaScript to our form, we change the form's SUBMIT button to call the JavaScript function. This is done by adding an onClick event to the appropriate INPUT tag, as shown below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FORM action=&amp;quot;&amp;quot; method=&amp;quot;post&amp;quot; enctype=&amp;quot;text/plain&amp;quot; name=&amp;quot;commentForm&amp;quot;&amp;gt; &lt;br /&gt;
 How did you find our site? &amp;lt;input type=&amp;quot;text&amp;quot; maxlength=&amp;quot;30&amp;quot; size=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;Submit&amp;quot; value=&amp;quot;Send Comments and Get a Cookie&amp;quot; onClick=&amp;quot;formControl(1)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;/FORM&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The problem with this approach is only Internet explorer supports the disable option ,so it is browser dependent.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt; Below is another approach in java script using cookies in browser&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
b.&lt;br /&gt;
&lt;br /&gt;
The Below code has to be inserted into head section of our code &lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt; &amp;lt;!-- // give feedback to the respondent about the state of their submission function AllowNoDups() &lt;br /&gt;
{ var cookie_ls = document.cookie; &lt;br /&gt;
 if (cookie_ls.indexOf(document.location) &amp;gt; -1) &lt;br /&gt;
 { alert(&amp;quot;You've already submitted your answers. Thank you for your interest! &amp;quot;);&lt;br /&gt;
 return false; } &lt;br /&gt;
 else { document.cookie = window.location.href + &amp;quot; from &amp;quot; + document.referrer + &amp;quot;; &lt;br /&gt;
path=/; &lt;br /&gt;
expires=Thu, 23-Aug-2012 00:00:01 GMT;&amp;quot;; return true; }; }; //--&amp;gt; &amp;lt;/script&amp;gt;   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a user submits the form, the function sets an identifying cookie. Before the form processes, the function checks to see if there is already a cookie set.  If not, the form handles the submission as normal. If there is a cookie, the user gets an alert box that says &amp;quot;You've already submitted your answers&amp;quot; and the form submission is blocked.&lt;br /&gt;
This is a good, cross-browser way to avoid duplicate submissions, but we have to be careful that user's browser must accept cookies and have JavaScript turned on for this method to work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ASP.NET==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Here is an implementation in [http://en.wikipedia.org/wiki/ASP.NET ASP] that prevents duplicate form submission. In this implementation, we consider two ways of avoiding this problem. One is the Unsafe button method, where the button does not vanish after the user clicks the button. But at the same time does not consider two or more consecutive clicks, if done within a specified period of time, as a different request from the orginal one. The other method is the safe button method where the button vanishes after the button is clicked once and returns only after the request has been completed or timed out.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
Dim counter As Integer&lt;br /&gt;
Sub Page_Load()&lt;br /&gt;
If Session(&amp;quot;counter&amp;quot;) Is Nothing Then&lt;br /&gt;
counter = 0&lt;br /&gt;
Else&lt;br /&gt;
counter = CInt( Session(&amp;quot;counter&amp;quot;) )&lt;br /&gt;
End If&lt;br /&gt;
If IsPostBack Then&lt;br /&gt;
counter += 1&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = counter&lt;br /&gt;
End If&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; counter.ToString()&lt;br /&gt;
SafeButton.Attributes.Add(&amp;quot;onclick&amp;quot;, &amp;quot;disableButton();return true&amp;quot;)&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Process_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Dim i As Long&lt;br /&gt;
' 2-second delay&lt;br /&gt;
Dim endTime As DateTime = DateTime.Now.AddSeconds(2)&lt;br /&gt;
While DateTime.Now &amp;lt; endTime&lt;br /&gt;
End While&lt;br /&gt;
Label2.Text = &amp;quot;Finished @ &amp;quot; &amp;amp; DateTime.Now.ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Button2_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = 0&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; Session(&amp;quot;counter&amp;quot;).ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function disableButton()&lt;br /&gt;
{&lt;br /&gt;
document.form1.SafeButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form runat=&amp;quot;server&amp;quot; id=&amp;quot;form1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label2&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;UnsafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Unsafe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;SafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Safe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;asp:Button id=&amp;quot;Button2&amp;quot; onclick=&amp;quot;Button2_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Clear Counter&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;span1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As explained earlier, the Unsafe button allows users to click on submit multiple times. But clicking on the button again doesnt do anything, a two-second delay has been put into the button handler to emulate the time that a back-end process might take. So unless that time is up it doesnt effective count as a click.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Even for the Safe button the same process runs. But in this case as soon as the button is clicked, it disappears, preventing you from being able to click it again until the processing (postback) is complete.  This ensures that multiple form request is not sent by completely taking out the submit button. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ruby On Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails uses the Submit button disabling method to prevent Multiple form submissions .It uses the submit_tag option .Below is the code that demonstrate this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submit_tag &amp;quot;Submit&amp;quot;, :disable_with =&amp;gt; &amp;quot;Saving...&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This adds behavior to the submit button to disable it once clicked, and to display &amp;quot;Saving...&amp;quot; instead of &amp;quot;Submit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As illustrated in the above wiki, various languages handle the problem of multiple form submission either by client side or server &lt;br /&gt;
side methods. Server side handling is more reliable as some web browsers do not support the disabling of button feature. Synchronizer token pattern is best solution as illustrated in Java .In most languages, for server side handling, a token is set once on submission and compared again on resubmission to check for duplicates ,this prevents the data from being inserted again into the database. Some websites just pop message to user to wait until action is completed. Overall Java script is best way to handle duplicate form submission &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Below are some of the references for further reading &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.javaworld.com/javaworld/javatips/jw-javatip136.html?page=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.asp.net/t/447620.aspx?PageIndex=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://drupal.org/node/69048&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://phpsense.com/php/prevent-duplicate-form-submission.html&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.techarena.in/software-development/1149257.htm&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.stackoverflow.com&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26037</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 3 bd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26037"/>
		<updated>2009-10-14T17:32:44Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* JavaScript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synchronizer token pattern== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Web application developers and designers face the problem with maintaining normal flow of control when multiple form submissions are made in a website .&lt;br /&gt;
This situation typically occurs when a user clicks more than once on a submit button before the response is sent back or when a client accesses a view by returning to a previously bookmarked page. Control flow sequence is particularly important to preserve when form submission involves transaction processing on the server. There are many solutions to the situation ,some websites just warn the user not to submit twice once a submission is made and to wait for the response .In other cases we have client side and server side solutions to the problem .Server side solution being more reliable than client side .In the client side model the button is disabled based on a flag which is set  once first submission is performed .Below we discuss some the ways this is handled in different in&lt;br /&gt;
different languages -&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Java_(programming_language) Java] uses the server side solution to solve this problem .The basic idea is to set a token in a session variable before returning a transactional page to the client. This page carries the token inside a hidden field. Upon submission, request processing first tests for the presence of a valid token in the request parameter by comparing it with the one registered in the session. If the token is valid, processing can continue normally, otherwise an alternate course of action is taken. After testing, the token resets to null to prevent subsequent submissions until a new token is saved in the session, which must be done at the appropriate time based on the desired application flow of control. In other words, the one-time privilege to submit data is given to one specific instance of a view.&lt;br /&gt;
&amp;lt;p&amp;gt; Based on the above, the solution appears complete. But an element is missing: how do we specify/implement the alternate course of action when an invalid token is detected. In fact, given the case where the submit button is reclicked, the second request will cause the loss of the first response containing the expected result. The thread that executes the first request still runs, but has no means of providing its response to the browser. Hence, the user may be left with the impression that the transaction did not complete, while in reality, it may have successfully completed.This tip's proposed strategy builds on the Struts framework to provide a complete solution that prevents duplicate submission and still ensures the display of a response that represents the original request's outcome. The proposed implementation involves the abstract class SynchroAction, which actions can extend to behave in the specified synchronized manner. This class overrides the Action.perform() method and provides an abstract performSynchro() method with the same arguments. Below is the example implementation in Java using struts &amp;lt;/p&amp;gt;&lt;br /&gt;
Eg Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public final ActionForward perform(ActionMapping mapping,&lt;br /&gt;
ActionForm form,&lt;br /&gt;
HttpServletRequest request,&lt;br /&gt;
HttpServletResponse response) throws IOException, ServletException &lt;br /&gt;
{ HttpSession session = request.getSession();&lt;br /&gt;
 ActionForward forward = null;&lt;br /&gt;
 if (isTokenValid(request)) &lt;br /&gt;
{ &lt;br /&gt;
 try { &lt;br /&gt;
session.setAttribute(FORM_KEY, form);&lt;br /&gt;
 session.setAttribute(FORWARD_KEY, forward);&lt;br /&gt;
 ActionErrors errors = (ActionErrors) request.getAttribute(Action.ERROR_KEY);&lt;br /&gt;
 if (errors != null &amp;amp;&amp;amp; !errors.empty()) &lt;br /&gt;
{ &lt;br /&gt;
 saveToken(request); &lt;br /&gt;
 } &lt;br /&gt;
 session.setAttribute(ERRORS_KEY, errors); &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); } &lt;br /&gt;
catch (IOException e)&lt;br /&gt;
 { &lt;br /&gt;
 throw e; &lt;br /&gt;
 } &lt;br /&gt;
catch (ServletException e) &lt;br /&gt;
{ &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); &lt;br /&gt;
 throw e; } } &lt;br /&gt;
&lt;br /&gt;
else { &lt;br /&gt;
 { &lt;br /&gt;
throw it if (e != null) { if (e instanceof IOException) { throw (IOException) e; } &lt;br /&gt;
else if (e instanceof ServletException) &lt;br /&gt;
{ throw (ServletException) e; &lt;br /&gt;
} } context if (&amp;quot;request&amp;quot;.equals(mapping.getScope())) &lt;br /&gt;
{ request.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
&lt;br /&gt;
else { session.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
(ActionErrors) session.getAttribute(ERRORS_KEY)); &lt;br /&gt;
session.getAttribute(FORWARD_KEY); } &lt;br /&gt;
else { &lt;br /&gt;
 return forward; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As we can see from the above code that for a valid token the protected action is performed only once ,while the action is being performed any other requests are received then &lt;br /&gt;
they are directed to performInvalidToken() method until the action is completed ,this method simply returns an ActionForward named &amp;quot;synchroerror&amp;quot; ,this should lead to a form with a button for continue , this just resubmits without any parameters and nothing happens until action of first form submission  is completed .When the action completes, it stores its forward, form, exception, and errors, if any, in the session, and it sets a flag to indicate it has completed. The first request coming after the action completion will get the forward, form, exception, and errors from the session and continue as if it was the first request itself.&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following method is one of the ways of creating a Synchronous token pattern in [http://en.wikipedia.org/wiki/PHP PHP]&lt;br /&gt;
&lt;br /&gt;
The below given code needs to be added to ur code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
$secret=md5(uniqueid(rand(), true));&lt;br /&gt;
$_SESSION['FORM_SECRET']=$secret;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here uniqueid() is used to create Unique ID. Then md5() is used to create 32 character hash of this Unique ID. This unique id is stored in the session for later use. We also need to use a different session variable for each form.&lt;br /&gt;
&lt;br /&gt;
Then we add a hidden field anywhere in the form using the below given code.&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;form_secret&amp;quot; id=&amp;quot;form_secret&amp;quot; &lt;br /&gt;
value=&amp;quot;&amp;lt;?php echo $_SESSION['FORM_SECRET'];?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we need to compare the value of the hidden field with the value stored in the session. If the value is the same, that means its the first time. Hence process the form data. Now unset the values stored in this session. now when the user refreshes the page, the code for processing form will be skipped. It can be done as given below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
//get the hidden value&lt;br /&gt;
$form_secret=$_POST['form_secret'];&lt;br /&gt;
if(isset($_SESSION['FORM_SECRET'])) {&lt;br /&gt;
if(strcasecmp($form_secret,$_SESSION['FORM_SECRET'])===0) {&lt;br /&gt;
/*We need to have the form submission code here&lt;br /&gt;
*/&lt;br /&gt;
unset($_SESSION['FORM_SECRET']);&lt;br /&gt;
}else {&lt;br /&gt;
//this is the condition of key which is invalid&lt;br /&gt;
}&lt;br /&gt;
}else {&lt;br /&gt;
//this is the case where is secret key is no there&lt;br /&gt;
echo 'Form data has been processed once!';&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JavaScript== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;   [http://en.wikipedia.org/wiki/JavaScript Java Script] uses two methods to prevent Duplicate form submissions .The first method disables the button and the second method uses cookies to prevent multiple submissions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a.&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot; TYPE=&amp;quot;text/JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
 function formControl(submitted)&lt;br /&gt;
 { if(submitted==&amp;quot;1&amp;quot;) &lt;br /&gt;
 { commentForm.Submit.disabled=true alert&lt;br /&gt;
(&amp;quot;Thanks for your comments!&amp;quot;) } } &amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The JavaScript event that fires this script is the onClick event. You're telling it to disable the SUBMIT button after the button is clicked. At that point, the button value equals &amp;quot;1.&amp;quot;&lt;br /&gt;
We included a JavaScript ALERT box in this example so that you'll know the form is working. &lt;br /&gt;
To tie this JavaScript to our form, we change the form's SUBMIT button to call the JavaScript function. This is done by adding an onClick event to the appropriate INPUT tag, as shown below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FORM action=&amp;quot;&amp;quot; method=&amp;quot;post&amp;quot; enctype=&amp;quot;text/plain&amp;quot; name=&amp;quot;commentForm&amp;quot;&amp;gt; &lt;br /&gt;
 How did you find our site? &amp;lt;input type=&amp;quot;text&amp;quot; maxlength=&amp;quot;30&amp;quot; size=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;Submit&amp;quot; value=&amp;quot;Send Comments and Get a Cookie&amp;quot; onClick=&amp;quot;formControl(1)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;/FORM&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The problem with this approach is only Internet explorer supports the disable option ,so it is browser dependent.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt; Below is another approach in java script using cookies in browser&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
b.&lt;br /&gt;
&lt;br /&gt;
The Below code has to be inserted into head section of our code &lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt; &amp;lt;!-- // give feedback to the respondent about the state of their submission function AllowNoDups() &lt;br /&gt;
{ var cookie_ls = document.cookie; &lt;br /&gt;
 if (cookie_ls.indexOf(document.location) &amp;gt; -1) &lt;br /&gt;
 { alert(&amp;quot;You've already submitted your answers. Thank you for your interest! &amp;quot;);&lt;br /&gt;
 return false; } &lt;br /&gt;
 else { document.cookie = window.location.href + &amp;quot; from &amp;quot; + document.referrer + &amp;quot;; &lt;br /&gt;
path=/; &lt;br /&gt;
expires=Thu, 23-Aug-2012 00:00:01 GMT;&amp;quot;; return true; }; }; //--&amp;gt; &amp;lt;/script&amp;gt;   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a user submits the form, the function sets an identifying cookie. Before the form processes, the function checks to see if there is already a cookie set.  If not, the form handles the submission as normal. If there is a cookie, the user gets an alert box that says &amp;quot;You've already submitted your answers&amp;quot; and the form submission is blocked.&lt;br /&gt;
This is a good, cross-browser way to avoid duplicate submissions, but we have to be careful that user's browser must accept cookies and have JavaScript turned on for this method to work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ASP.NET==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Here is an implementation in ASP that prevents duplicate form submission. In this implementation, we consider two ways of avoiding this problem. One is the Unsafe button method, where the button does not vanish after the user clicks the button. But at the same time does not consider two or more consecutive clicks, if done within a specified period of time, as a different request from the orginal one. The other method is the safe button method where the button vanishes after the button is clicked once and returns only after the request has been completed or timed out.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
Dim counter As Integer&lt;br /&gt;
Sub Page_Load()&lt;br /&gt;
If Session(&amp;quot;counter&amp;quot;) Is Nothing Then&lt;br /&gt;
counter = 0&lt;br /&gt;
Else&lt;br /&gt;
counter = CInt( Session(&amp;quot;counter&amp;quot;) )&lt;br /&gt;
End If&lt;br /&gt;
If IsPostBack Then&lt;br /&gt;
counter += 1&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = counter&lt;br /&gt;
End If&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; counter.ToString()&lt;br /&gt;
SafeButton.Attributes.Add(&amp;quot;onclick&amp;quot;, &amp;quot;disableButton();return true&amp;quot;)&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Process_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Dim i As Long&lt;br /&gt;
' 2-second delay&lt;br /&gt;
Dim endTime As DateTime = DateTime.Now.AddSeconds(2)&lt;br /&gt;
While DateTime.Now &amp;lt; endTime&lt;br /&gt;
End While&lt;br /&gt;
Label2.Text = &amp;quot;Finished @ &amp;quot; &amp;amp; DateTime.Now.ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Button2_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = 0&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; Session(&amp;quot;counter&amp;quot;).ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function disableButton()&lt;br /&gt;
{&lt;br /&gt;
document.form1.SafeButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form runat=&amp;quot;server&amp;quot; id=&amp;quot;form1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label2&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;UnsafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Unsafe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;SafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Safe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;asp:Button id=&amp;quot;Button2&amp;quot; onclick=&amp;quot;Button2_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Clear Counter&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;span1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As explained earlier, the Unsafe button allows users to click on submit multiple times. But clicking on the button again doesnt do anything, a two-second delay has been put into the button handler to emulate the time that a back-end process might take. So unless that time is up it doesnt effective count as a click.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Even for the Safe button the same process runs. But in this case as soon as the button is clicked, it disappears, preventing you from being able to click it again until the processing (postback) is complete.  This ensures that multiple form request is not sent by completely taking out the submit button. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ruby On Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails uses the Submit button disabling method to prevent Multiple form submissions .It uses the submit_tag option .Below is the code that demonstrate this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submit_tag &amp;quot;Submit&amp;quot;, :disable_with =&amp;gt; &amp;quot;Saving...&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This adds behavior to the submit button to disable it once clicked, and to display &amp;quot;Saving...&amp;quot; instead of &amp;quot;Submit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As illustrated in the above wiki, various languages handle the problem of multiple form submission either by client side or server &lt;br /&gt;
side methods. Server side handling is more reliable as some web browsers do not support the disabling of button feature. Synchronizer token pattern is best solution as illustrated in Java .In most languages, for server side handling, a token is set once on submission and compared again on resubmission to check for duplicates ,this prevents the data from being inserted again into the database. Some websites just pop message to user to wait until action is completed. Overall Java script is best way to handle duplicate form submission &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Below are some of the references for further reading &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.javaworld.com/javaworld/javatips/jw-javatip136.html?page=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.asp.net/t/447620.aspx?PageIndex=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://drupal.org/node/69048&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://phpsense.com/php/prevent-duplicate-form-submission.html&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.techarena.in/software-development/1149257.htm&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.stackoverflow.com&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26035</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 3 bd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26035"/>
		<updated>2009-10-14T17:32:03Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* PHP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synchronizer token pattern== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Web application developers and designers face the problem with maintaining normal flow of control when multiple form submissions are made in a website .&lt;br /&gt;
This situation typically occurs when a user clicks more than once on a submit button before the response is sent back or when a client accesses a view by returning to a previously bookmarked page. Control flow sequence is particularly important to preserve when form submission involves transaction processing on the server. There are many solutions to the situation ,some websites just warn the user not to submit twice once a submission is made and to wait for the response .In other cases we have client side and server side solutions to the problem .Server side solution being more reliable than client side .In the client side model the button is disabled based on a flag which is set  once first submission is performed .Below we discuss some the ways this is handled in different in&lt;br /&gt;
different languages -&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Java_(programming_language) Java] uses the server side solution to solve this problem .The basic idea is to set a token in a session variable before returning a transactional page to the client. This page carries the token inside a hidden field. Upon submission, request processing first tests for the presence of a valid token in the request parameter by comparing it with the one registered in the session. If the token is valid, processing can continue normally, otherwise an alternate course of action is taken. After testing, the token resets to null to prevent subsequent submissions until a new token is saved in the session, which must be done at the appropriate time based on the desired application flow of control. In other words, the one-time privilege to submit data is given to one specific instance of a view.&lt;br /&gt;
&amp;lt;p&amp;gt; Based on the above, the solution appears complete. But an element is missing: how do we specify/implement the alternate course of action when an invalid token is detected. In fact, given the case where the submit button is reclicked, the second request will cause the loss of the first response containing the expected result. The thread that executes the first request still runs, but has no means of providing its response to the browser. Hence, the user may be left with the impression that the transaction did not complete, while in reality, it may have successfully completed.This tip's proposed strategy builds on the Struts framework to provide a complete solution that prevents duplicate submission and still ensures the display of a response that represents the original request's outcome. The proposed implementation involves the abstract class SynchroAction, which actions can extend to behave in the specified synchronized manner. This class overrides the Action.perform() method and provides an abstract performSynchro() method with the same arguments. Below is the example implementation in Java using struts &amp;lt;/p&amp;gt;&lt;br /&gt;
Eg Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public final ActionForward perform(ActionMapping mapping,&lt;br /&gt;
ActionForm form,&lt;br /&gt;
HttpServletRequest request,&lt;br /&gt;
HttpServletResponse response) throws IOException, ServletException &lt;br /&gt;
{ HttpSession session = request.getSession();&lt;br /&gt;
 ActionForward forward = null;&lt;br /&gt;
 if (isTokenValid(request)) &lt;br /&gt;
{ &lt;br /&gt;
 try { &lt;br /&gt;
session.setAttribute(FORM_KEY, form);&lt;br /&gt;
 session.setAttribute(FORWARD_KEY, forward);&lt;br /&gt;
 ActionErrors errors = (ActionErrors) request.getAttribute(Action.ERROR_KEY);&lt;br /&gt;
 if (errors != null &amp;amp;&amp;amp; !errors.empty()) &lt;br /&gt;
{ &lt;br /&gt;
 saveToken(request); &lt;br /&gt;
 } &lt;br /&gt;
 session.setAttribute(ERRORS_KEY, errors); &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); } &lt;br /&gt;
catch (IOException e)&lt;br /&gt;
 { &lt;br /&gt;
 throw e; &lt;br /&gt;
 } &lt;br /&gt;
catch (ServletException e) &lt;br /&gt;
{ &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); &lt;br /&gt;
 throw e; } } &lt;br /&gt;
&lt;br /&gt;
else { &lt;br /&gt;
 { &lt;br /&gt;
throw it if (e != null) { if (e instanceof IOException) { throw (IOException) e; } &lt;br /&gt;
else if (e instanceof ServletException) &lt;br /&gt;
{ throw (ServletException) e; &lt;br /&gt;
} } context if (&amp;quot;request&amp;quot;.equals(mapping.getScope())) &lt;br /&gt;
{ request.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
&lt;br /&gt;
else { session.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
(ActionErrors) session.getAttribute(ERRORS_KEY)); &lt;br /&gt;
session.getAttribute(FORWARD_KEY); } &lt;br /&gt;
else { &lt;br /&gt;
 return forward; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As we can see from the above code that for a valid token the protected action is performed only once ,while the action is being performed any other requests are received then &lt;br /&gt;
they are directed to performInvalidToken() method until the action is completed ,this method simply returns an ActionForward named &amp;quot;synchroerror&amp;quot; ,this should lead to a form with a button for continue , this just resubmits without any parameters and nothing happens until action of first form submission  is completed .When the action completes, it stores its forward, form, exception, and errors, if any, in the session, and it sets a flag to indicate it has completed. The first request coming after the action completion will get the forward, form, exception, and errors from the session and continue as if it was the first request itself.&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following method is one of the ways of creating a Synchronous token pattern in [http://en.wikipedia.org/wiki/PHP PHP]&lt;br /&gt;
&lt;br /&gt;
The below given code needs to be added to ur code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
$secret=md5(uniqueid(rand(), true));&lt;br /&gt;
$_SESSION['FORM_SECRET']=$secret;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here uniqueid() is used to create Unique ID. Then md5() is used to create 32 character hash of this Unique ID. This unique id is stored in the session for later use. We also need to use a different session variable for each form.&lt;br /&gt;
&lt;br /&gt;
Then we add a hidden field anywhere in the form using the below given code.&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;form_secret&amp;quot; id=&amp;quot;form_secret&amp;quot; &lt;br /&gt;
value=&amp;quot;&amp;lt;?php echo $_SESSION['FORM_SECRET'];?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we need to compare the value of the hidden field with the value stored in the session. If the value is the same, that means its the first time. Hence process the form data. Now unset the values stored in this session. now when the user refreshes the page, the code for processing form will be skipped. It can be done as given below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
//get the hidden value&lt;br /&gt;
$form_secret=$_POST['form_secret'];&lt;br /&gt;
if(isset($_SESSION['FORM_SECRET'])) {&lt;br /&gt;
if(strcasecmp($form_secret,$_SESSION['FORM_SECRET'])===0) {&lt;br /&gt;
/*We need to have the form submission code here&lt;br /&gt;
*/&lt;br /&gt;
unset($_SESSION['FORM_SECRET']);&lt;br /&gt;
}else {&lt;br /&gt;
//this is the condition of key which is invalid&lt;br /&gt;
}&lt;br /&gt;
}else {&lt;br /&gt;
//this is the case where is secret key is no there&lt;br /&gt;
echo 'Form data has been processed once!';&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JavaScript== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;   Java Script uses two methods to prevent Duplicate form submissions .The first method disables the button and the second method uses cookies to prevent multiple submissions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a.&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot; TYPE=&amp;quot;text/JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
 function formControl(submitted)&lt;br /&gt;
 { if(submitted==&amp;quot;1&amp;quot;) &lt;br /&gt;
 { commentForm.Submit.disabled=true alert&lt;br /&gt;
(&amp;quot;Thanks for your comments!&amp;quot;) } } &amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The JavaScript event that fires this script is the onClick event. You're telling it to disable the SUBMIT button after the button is clicked. At that point, the button value equals &amp;quot;1.&amp;quot;&lt;br /&gt;
We included a JavaScript ALERT box in this example so that you'll know the form is working. &lt;br /&gt;
To tie this JavaScript to our form, we change the form's SUBMIT button to call the JavaScript function. This is done by adding an onClick event to the appropriate INPUT tag, as shown below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FORM action=&amp;quot;&amp;quot; method=&amp;quot;post&amp;quot; enctype=&amp;quot;text/plain&amp;quot; name=&amp;quot;commentForm&amp;quot;&amp;gt; &lt;br /&gt;
 How did you find our site? &amp;lt;input type=&amp;quot;text&amp;quot; maxlength=&amp;quot;30&amp;quot; size=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;Submit&amp;quot; value=&amp;quot;Send Comments and Get a Cookie&amp;quot; onClick=&amp;quot;formControl(1)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;/FORM&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The problem with this approach is only Internet explorer supports the disable option ,so it is browser dependent.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt; Below is another approach in java script using cookies in browser&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
b.&lt;br /&gt;
&lt;br /&gt;
The Below code has to be inserted into head section of our code &lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt; &amp;lt;!-- // give feedback to the respondent about the state of their submission function AllowNoDups() &lt;br /&gt;
{ var cookie_ls = document.cookie; &lt;br /&gt;
 if (cookie_ls.indexOf(document.location) &amp;gt; -1) &lt;br /&gt;
 { alert(&amp;quot;You've already submitted your answers. Thank you for your interest! &amp;quot;);&lt;br /&gt;
 return false; } &lt;br /&gt;
 else { document.cookie = window.location.href + &amp;quot; from &amp;quot; + document.referrer + &amp;quot;; &lt;br /&gt;
path=/; &lt;br /&gt;
expires=Thu, 23-Aug-2012 00:00:01 GMT;&amp;quot;; return true; }; }; //--&amp;gt; &amp;lt;/script&amp;gt;   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a user submits the form, the function sets an identifying cookie. Before the form processes, the function checks to see if there is already a cookie set.  If not, the form handles the submission as normal. If there is a cookie, the user gets an alert box that says &amp;quot;You've already submitted your answers&amp;quot; and the form submission is blocked.&lt;br /&gt;
This is a good, cross-browser way to avoid duplicate submissions, but we have to be careful that user's browser must accept cookies and have JavaScript turned on for this method to work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ASP.NET==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Here is an implementation in ASP that prevents duplicate form submission. In this implementation, we consider two ways of avoiding this problem. One is the Unsafe button method, where the button does not vanish after the user clicks the button. But at the same time does not consider two or more consecutive clicks, if done within a specified period of time, as a different request from the orginal one. The other method is the safe button method where the button vanishes after the button is clicked once and returns only after the request has been completed or timed out.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
Dim counter As Integer&lt;br /&gt;
Sub Page_Load()&lt;br /&gt;
If Session(&amp;quot;counter&amp;quot;) Is Nothing Then&lt;br /&gt;
counter = 0&lt;br /&gt;
Else&lt;br /&gt;
counter = CInt( Session(&amp;quot;counter&amp;quot;) )&lt;br /&gt;
End If&lt;br /&gt;
If IsPostBack Then&lt;br /&gt;
counter += 1&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = counter&lt;br /&gt;
End If&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; counter.ToString()&lt;br /&gt;
SafeButton.Attributes.Add(&amp;quot;onclick&amp;quot;, &amp;quot;disableButton();return true&amp;quot;)&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Process_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Dim i As Long&lt;br /&gt;
' 2-second delay&lt;br /&gt;
Dim endTime As DateTime = DateTime.Now.AddSeconds(2)&lt;br /&gt;
While DateTime.Now &amp;lt; endTime&lt;br /&gt;
End While&lt;br /&gt;
Label2.Text = &amp;quot;Finished @ &amp;quot; &amp;amp; DateTime.Now.ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Button2_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = 0&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; Session(&amp;quot;counter&amp;quot;).ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function disableButton()&lt;br /&gt;
{&lt;br /&gt;
document.form1.SafeButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form runat=&amp;quot;server&amp;quot; id=&amp;quot;form1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label2&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;UnsafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Unsafe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;SafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Safe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;asp:Button id=&amp;quot;Button2&amp;quot; onclick=&amp;quot;Button2_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Clear Counter&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;span1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As explained earlier, the Unsafe button allows users to click on submit multiple times. But clicking on the button again doesnt do anything, a two-second delay has been put into the button handler to emulate the time that a back-end process might take. So unless that time is up it doesnt effective count as a click.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Even for the Safe button the same process runs. But in this case as soon as the button is clicked, it disappears, preventing you from being able to click it again until the processing (postback) is complete.  This ensures that multiple form request is not sent by completely taking out the submit button. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ruby On Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails uses the Submit button disabling method to prevent Multiple form submissions .It uses the submit_tag option .Below is the code that demonstrate this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submit_tag &amp;quot;Submit&amp;quot;, :disable_with =&amp;gt; &amp;quot;Saving...&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This adds behavior to the submit button to disable it once clicked, and to display &amp;quot;Saving...&amp;quot; instead of &amp;quot;Submit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As illustrated in the above wiki, various languages handle the problem of multiple form submission either by client side or server &lt;br /&gt;
side methods. Server side handling is more reliable as some web browsers do not support the disabling of button feature. Synchronizer token pattern is best solution as illustrated in Java .In most languages, for server side handling, a token is set once on submission and compared again on resubmission to check for duplicates ,this prevents the data from being inserted again into the database. Some websites just pop message to user to wait until action is completed. Overall Java script is best way to handle duplicate form submission &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Below are some of the references for further reading &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.javaworld.com/javaworld/javatips/jw-javatip136.html?page=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.asp.net/t/447620.aspx?PageIndex=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://drupal.org/node/69048&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://phpsense.com/php/prevent-duplicate-form-submission.html&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.techarena.in/software-development/1149257.htm&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.stackoverflow.com&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26034</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 3 bd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26034"/>
		<updated>2009-10-14T17:31:11Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synchronizer token pattern== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Web application developers and designers face the problem with maintaining normal flow of control when multiple form submissions are made in a website .&lt;br /&gt;
This situation typically occurs when a user clicks more than once on a submit button before the response is sent back or when a client accesses a view by returning to a previously bookmarked page. Control flow sequence is particularly important to preserve when form submission involves transaction processing on the server. There are many solutions to the situation ,some websites just warn the user not to submit twice once a submission is made and to wait for the response .In other cases we have client side and server side solutions to the problem .Server side solution being more reliable than client side .In the client side model the button is disabled based on a flag which is set  once first submission is performed .Below we discuss some the ways this is handled in different in&lt;br /&gt;
different languages -&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Java_(programming_language) Java] uses the server side solution to solve this problem .The basic idea is to set a token in a session variable before returning a transactional page to the client. This page carries the token inside a hidden field. Upon submission, request processing first tests for the presence of a valid token in the request parameter by comparing it with the one registered in the session. If the token is valid, processing can continue normally, otherwise an alternate course of action is taken. After testing, the token resets to null to prevent subsequent submissions until a new token is saved in the session, which must be done at the appropriate time based on the desired application flow of control. In other words, the one-time privilege to submit data is given to one specific instance of a view.&lt;br /&gt;
&amp;lt;p&amp;gt; Based on the above, the solution appears complete. But an element is missing: how do we specify/implement the alternate course of action when an invalid token is detected. In fact, given the case where the submit button is reclicked, the second request will cause the loss of the first response containing the expected result. The thread that executes the first request still runs, but has no means of providing its response to the browser. Hence, the user may be left with the impression that the transaction did not complete, while in reality, it may have successfully completed.This tip's proposed strategy builds on the Struts framework to provide a complete solution that prevents duplicate submission and still ensures the display of a response that represents the original request's outcome. The proposed implementation involves the abstract class SynchroAction, which actions can extend to behave in the specified synchronized manner. This class overrides the Action.perform() method and provides an abstract performSynchro() method with the same arguments. Below is the example implementation in Java using struts &amp;lt;/p&amp;gt;&lt;br /&gt;
Eg Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public final ActionForward perform(ActionMapping mapping,&lt;br /&gt;
ActionForm form,&lt;br /&gt;
HttpServletRequest request,&lt;br /&gt;
HttpServletResponse response) throws IOException, ServletException &lt;br /&gt;
{ HttpSession session = request.getSession();&lt;br /&gt;
 ActionForward forward = null;&lt;br /&gt;
 if (isTokenValid(request)) &lt;br /&gt;
{ &lt;br /&gt;
 try { &lt;br /&gt;
session.setAttribute(FORM_KEY, form);&lt;br /&gt;
 session.setAttribute(FORWARD_KEY, forward);&lt;br /&gt;
 ActionErrors errors = (ActionErrors) request.getAttribute(Action.ERROR_KEY);&lt;br /&gt;
 if (errors != null &amp;amp;&amp;amp; !errors.empty()) &lt;br /&gt;
{ &lt;br /&gt;
 saveToken(request); &lt;br /&gt;
 } &lt;br /&gt;
 session.setAttribute(ERRORS_KEY, errors); &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); } &lt;br /&gt;
catch (IOException e)&lt;br /&gt;
 { &lt;br /&gt;
 throw e; &lt;br /&gt;
 } &lt;br /&gt;
catch (ServletException e) &lt;br /&gt;
{ &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); &lt;br /&gt;
 throw e; } } &lt;br /&gt;
&lt;br /&gt;
else { &lt;br /&gt;
 { &lt;br /&gt;
throw it if (e != null) { if (e instanceof IOException) { throw (IOException) e; } &lt;br /&gt;
else if (e instanceof ServletException) &lt;br /&gt;
{ throw (ServletException) e; &lt;br /&gt;
} } context if (&amp;quot;request&amp;quot;.equals(mapping.getScope())) &lt;br /&gt;
{ request.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
&lt;br /&gt;
else { session.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
(ActionErrors) session.getAttribute(ERRORS_KEY)); &lt;br /&gt;
session.getAttribute(FORWARD_KEY); } &lt;br /&gt;
else { &lt;br /&gt;
 return forward; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As we can see from the above code that for a valid token the protected action is performed only once ,while the action is being performed any other requests are received then &lt;br /&gt;
they are directed to performInvalidToken() method until the action is completed ,this method simply returns an ActionForward named &amp;quot;synchroerror&amp;quot; ,this should lead to a form with a button for continue , this just resubmits without any parameters and nothing happens until action of first form submission  is completed .When the action completes, it stores its forward, form, exception, and errors, if any, in the session, and it sets a flag to indicate it has completed. The first request coming after the action completion will get the forward, form, exception, and errors from the session and continue as if it was the first request itself.&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following method is one of the ways of creating a Synchronous token pattern&lt;br /&gt;
&lt;br /&gt;
The below given code needs to be added to ur code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
$secret=md5(uniqueid(rand(), true));&lt;br /&gt;
$_SESSION['FORM_SECRET']=$secret;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here uniqueid() is used to create Unique ID. Then md5() is used to create 32 character hash of this Unique ID. This unique id is stored in the session for later use. We also need to use a different session variable for each form.&lt;br /&gt;
&lt;br /&gt;
Then we add a hidden field anywhere in the form using the below given code.&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;form_secret&amp;quot; id=&amp;quot;form_secret&amp;quot; &lt;br /&gt;
value=&amp;quot;&amp;lt;?php echo $_SESSION['FORM_SECRET'];?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we need to compare the value of the hidden field with the value stored in the session. If the value is the same, that means its the first time. Hence process the form data. Now unset the values stored in this session. now when the user refreshes the page, the code for processing form will be skipped. It can be done as given below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
//get the hidden value&lt;br /&gt;
$form_secret=$_POST['form_secret'];&lt;br /&gt;
if(isset($_SESSION['FORM_SECRET'])) {&lt;br /&gt;
if(strcasecmp($form_secret,$_SESSION['FORM_SECRET'])===0) {&lt;br /&gt;
/*We need to have the form submission code here&lt;br /&gt;
*/&lt;br /&gt;
unset($_SESSION['FORM_SECRET']);&lt;br /&gt;
}else {&lt;br /&gt;
//this is the condition of key which is invalid&lt;br /&gt;
}&lt;br /&gt;
}else {&lt;br /&gt;
//this is the case where is secret key is no there&lt;br /&gt;
echo 'Form data has been processed once!';&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JavaScript== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;   Java Script uses two methods to prevent Duplicate form submissions .The first method disables the button and the second method uses cookies to prevent multiple submissions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a.&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot; TYPE=&amp;quot;text/JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
 function formControl(submitted)&lt;br /&gt;
 { if(submitted==&amp;quot;1&amp;quot;) &lt;br /&gt;
 { commentForm.Submit.disabled=true alert&lt;br /&gt;
(&amp;quot;Thanks for your comments!&amp;quot;) } } &amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The JavaScript event that fires this script is the onClick event. You're telling it to disable the SUBMIT button after the button is clicked. At that point, the button value equals &amp;quot;1.&amp;quot;&lt;br /&gt;
We included a JavaScript ALERT box in this example so that you'll know the form is working. &lt;br /&gt;
To tie this JavaScript to our form, we change the form's SUBMIT button to call the JavaScript function. This is done by adding an onClick event to the appropriate INPUT tag, as shown below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FORM action=&amp;quot;&amp;quot; method=&amp;quot;post&amp;quot; enctype=&amp;quot;text/plain&amp;quot; name=&amp;quot;commentForm&amp;quot;&amp;gt; &lt;br /&gt;
 How did you find our site? &amp;lt;input type=&amp;quot;text&amp;quot; maxlength=&amp;quot;30&amp;quot; size=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;Submit&amp;quot; value=&amp;quot;Send Comments and Get a Cookie&amp;quot; onClick=&amp;quot;formControl(1)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;/FORM&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The problem with this approach is only Internet explorer supports the disable option ,so it is browser dependent.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt; Below is another approach in java script using cookies in browser&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
b.&lt;br /&gt;
&lt;br /&gt;
The Below code has to be inserted into head section of our code &lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt; &amp;lt;!-- // give feedback to the respondent about the state of their submission function AllowNoDups() &lt;br /&gt;
{ var cookie_ls = document.cookie; &lt;br /&gt;
 if (cookie_ls.indexOf(document.location) &amp;gt; -1) &lt;br /&gt;
 { alert(&amp;quot;You've already submitted your answers. Thank you for your interest! &amp;quot;);&lt;br /&gt;
 return false; } &lt;br /&gt;
 else { document.cookie = window.location.href + &amp;quot; from &amp;quot; + document.referrer + &amp;quot;; &lt;br /&gt;
path=/; &lt;br /&gt;
expires=Thu, 23-Aug-2012 00:00:01 GMT;&amp;quot;; return true; }; }; //--&amp;gt; &amp;lt;/script&amp;gt;   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a user submits the form, the function sets an identifying cookie. Before the form processes, the function checks to see if there is already a cookie set.  If not, the form handles the submission as normal. If there is a cookie, the user gets an alert box that says &amp;quot;You've already submitted your answers&amp;quot; and the form submission is blocked.&lt;br /&gt;
This is a good, cross-browser way to avoid duplicate submissions, but we have to be careful that user's browser must accept cookies and have JavaScript turned on for this method to work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ASP.NET==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Here is an implementation in ASP that prevents duplicate form submission. In this implementation, we consider two ways of avoiding this problem. One is the Unsafe button method, where the button does not vanish after the user clicks the button. But at the same time does not consider two or more consecutive clicks, if done within a specified period of time, as a different request from the orginal one. The other method is the safe button method where the button vanishes after the button is clicked once and returns only after the request has been completed or timed out.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
Dim counter As Integer&lt;br /&gt;
Sub Page_Load()&lt;br /&gt;
If Session(&amp;quot;counter&amp;quot;) Is Nothing Then&lt;br /&gt;
counter = 0&lt;br /&gt;
Else&lt;br /&gt;
counter = CInt( Session(&amp;quot;counter&amp;quot;) )&lt;br /&gt;
End If&lt;br /&gt;
If IsPostBack Then&lt;br /&gt;
counter += 1&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = counter&lt;br /&gt;
End If&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; counter.ToString()&lt;br /&gt;
SafeButton.Attributes.Add(&amp;quot;onclick&amp;quot;, &amp;quot;disableButton();return true&amp;quot;)&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Process_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Dim i As Long&lt;br /&gt;
' 2-second delay&lt;br /&gt;
Dim endTime As DateTime = DateTime.Now.AddSeconds(2)&lt;br /&gt;
While DateTime.Now &amp;lt; endTime&lt;br /&gt;
End While&lt;br /&gt;
Label2.Text = &amp;quot;Finished @ &amp;quot; &amp;amp; DateTime.Now.ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Button2_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = 0&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; Session(&amp;quot;counter&amp;quot;).ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function disableButton()&lt;br /&gt;
{&lt;br /&gt;
document.form1.SafeButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form runat=&amp;quot;server&amp;quot; id=&amp;quot;form1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label2&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;UnsafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Unsafe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;SafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Safe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;asp:Button id=&amp;quot;Button2&amp;quot; onclick=&amp;quot;Button2_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Clear Counter&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;span1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As explained earlier, the Unsafe button allows users to click on submit multiple times. But clicking on the button again doesnt do anything, a two-second delay has been put into the button handler to emulate the time that a back-end process might take. So unless that time is up it doesnt effective count as a click.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Even for the Safe button the same process runs. But in this case as soon as the button is clicked, it disappears, preventing you from being able to click it again until the processing (postback) is complete.  This ensures that multiple form request is not sent by completely taking out the submit button. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ruby On Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails uses the Submit button disabling method to prevent Multiple form submissions .It uses the submit_tag option .Below is the code that demonstrate this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submit_tag &amp;quot;Submit&amp;quot;, :disable_with =&amp;gt; &amp;quot;Saving...&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This adds behavior to the submit button to disable it once clicked, and to display &amp;quot;Saving...&amp;quot; instead of &amp;quot;Submit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As illustrated in the above wiki, various languages handle the problem of multiple form submission either by client side or server &lt;br /&gt;
side methods. Server side handling is more reliable as some web browsers do not support the disabling of button feature. Synchronizer token pattern is best solution as illustrated in Java .In most languages, for server side handling, a token is set once on submission and compared again on resubmission to check for duplicates ,this prevents the data from being inserted again into the database. Some websites just pop message to user to wait until action is completed. Overall Java script is best way to handle duplicate form submission &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Below are some of the references for further reading &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.javaworld.com/javaworld/javatips/jw-javatip136.html?page=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.asp.net/t/447620.aspx?PageIndex=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://drupal.org/node/69048&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://phpsense.com/php/prevent-duplicate-form-submission.html&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.techarena.in/software-development/1149257.htm&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.stackoverflow.com&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26033</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 3 bd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=26033"/>
		<updated>2009-10-14T17:30:50Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synchronizer token pattern== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Web application developers and designers face the problem with maintaining normal flow of control when multiple form submissions are made in a website .&lt;br /&gt;
This situation typically occurs when a user clicks more than once on a submit button before the response is sent back or when a client accesses a view by returning to a previously bookmarked page. Control flow sequence is particularly important to preserve when form submission involves transaction processing on the server. There are many solutions to the situation ,some websites just warn the user not to submit twice once a submission is made and to wait for the response .In other cases we have client side and server side solutions to the problem .Server side solution being more reliable than client side .In the client side model the button is disabled based on a flag which is set  once first submission is performed .Below we discuss some the ways this is handled in different in&lt;br /&gt;
different languages -&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Java_(programming_language)Java] uses the server side solution to solve this problem .The basic idea is to set a token in a session variable before returning a transactional page to the client. This page carries the token inside a hidden field. Upon submission, request processing first tests for the presence of a valid token in the request parameter by comparing it with the one registered in the session. If the token is valid, processing can continue normally, otherwise an alternate course of action is taken. After testing, the token resets to null to prevent subsequent submissions until a new token is saved in the session, which must be done at the appropriate time based on the desired application flow of control. In other words, the one-time privilege to submit data is given to one specific instance of a view.&lt;br /&gt;
&amp;lt;p&amp;gt; Based on the above, the solution appears complete. But an element is missing: how do we specify/implement the alternate course of action when an invalid token is detected. In fact, given the case where the submit button is reclicked, the second request will cause the loss of the first response containing the expected result. The thread that executes the first request still runs, but has no means of providing its response to the browser. Hence, the user may be left with the impression that the transaction did not complete, while in reality, it may have successfully completed.This tip's proposed strategy builds on the Struts framework to provide a complete solution that prevents duplicate submission and still ensures the display of a response that represents the original request's outcome. The proposed implementation involves the abstract class SynchroAction, which actions can extend to behave in the specified synchronized manner. This class overrides the Action.perform() method and provides an abstract performSynchro() method with the same arguments. Below is the example implementation in Java using struts &amp;lt;/p&amp;gt;&lt;br /&gt;
Eg Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public final ActionForward perform(ActionMapping mapping,&lt;br /&gt;
ActionForm form,&lt;br /&gt;
HttpServletRequest request,&lt;br /&gt;
HttpServletResponse response) throws IOException, ServletException &lt;br /&gt;
{ HttpSession session = request.getSession();&lt;br /&gt;
 ActionForward forward = null;&lt;br /&gt;
 if (isTokenValid(request)) &lt;br /&gt;
{ &lt;br /&gt;
 try { &lt;br /&gt;
session.setAttribute(FORM_KEY, form);&lt;br /&gt;
 session.setAttribute(FORWARD_KEY, forward);&lt;br /&gt;
 ActionErrors errors = (ActionErrors) request.getAttribute(Action.ERROR_KEY);&lt;br /&gt;
 if (errors != null &amp;amp;&amp;amp; !errors.empty()) &lt;br /&gt;
{ &lt;br /&gt;
 saveToken(request); &lt;br /&gt;
 } &lt;br /&gt;
 session.setAttribute(ERRORS_KEY, errors); &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); } &lt;br /&gt;
catch (IOException e)&lt;br /&gt;
 { &lt;br /&gt;
 throw e; &lt;br /&gt;
 } &lt;br /&gt;
catch (ServletException e) &lt;br /&gt;
{ &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); &lt;br /&gt;
 throw e; } } &lt;br /&gt;
&lt;br /&gt;
else { &lt;br /&gt;
 { &lt;br /&gt;
throw it if (e != null) { if (e instanceof IOException) { throw (IOException) e; } &lt;br /&gt;
else if (e instanceof ServletException) &lt;br /&gt;
{ throw (ServletException) e; &lt;br /&gt;
} } context if (&amp;quot;request&amp;quot;.equals(mapping.getScope())) &lt;br /&gt;
{ request.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
&lt;br /&gt;
else { session.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
(ActionErrors) session.getAttribute(ERRORS_KEY)); &lt;br /&gt;
session.getAttribute(FORWARD_KEY); } &lt;br /&gt;
else { &lt;br /&gt;
 return forward; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As we can see from the above code that for a valid token the protected action is performed only once ,while the action is being performed any other requests are received then &lt;br /&gt;
they are directed to performInvalidToken() method until the action is completed ,this method simply returns an ActionForward named &amp;quot;synchroerror&amp;quot; ,this should lead to a form with a button for continue , this just resubmits without any parameters and nothing happens until action of first form submission  is completed .When the action completes, it stores its forward, form, exception, and errors, if any, in the session, and it sets a flag to indicate it has completed. The first request coming after the action completion will get the forward, form, exception, and errors from the session and continue as if it was the first request itself.&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following method is one of the ways of creating a Synchronous token pattern&lt;br /&gt;
&lt;br /&gt;
The below given code needs to be added to ur code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
$secret=md5(uniqueid(rand(), true));&lt;br /&gt;
$_SESSION['FORM_SECRET']=$secret;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here uniqueid() is used to create Unique ID. Then md5() is used to create 32 character hash of this Unique ID. This unique id is stored in the session for later use. We also need to use a different session variable for each form.&lt;br /&gt;
&lt;br /&gt;
Then we add a hidden field anywhere in the form using the below given code.&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;form_secret&amp;quot; id=&amp;quot;form_secret&amp;quot; &lt;br /&gt;
value=&amp;quot;&amp;lt;?php echo $_SESSION['FORM_SECRET'];?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we need to compare the value of the hidden field with the value stored in the session. If the value is the same, that means its the first time. Hence process the form data. Now unset the values stored in this session. now when the user refreshes the page, the code for processing form will be skipped. It can be done as given below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
//get the hidden value&lt;br /&gt;
$form_secret=$_POST['form_secret'];&lt;br /&gt;
if(isset($_SESSION['FORM_SECRET'])) {&lt;br /&gt;
if(strcasecmp($form_secret,$_SESSION['FORM_SECRET'])===0) {&lt;br /&gt;
/*We need to have the form submission code here&lt;br /&gt;
*/&lt;br /&gt;
unset($_SESSION['FORM_SECRET']);&lt;br /&gt;
}else {&lt;br /&gt;
//this is the condition of key which is invalid&lt;br /&gt;
}&lt;br /&gt;
}else {&lt;br /&gt;
//this is the case where is secret key is no there&lt;br /&gt;
echo 'Form data has been processed once!';&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JavaScript== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;   Java Script uses two methods to prevent Duplicate form submissions .The first method disables the button and the second method uses cookies to prevent multiple submissions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a.&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot; TYPE=&amp;quot;text/JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
 function formControl(submitted)&lt;br /&gt;
 { if(submitted==&amp;quot;1&amp;quot;) &lt;br /&gt;
 { commentForm.Submit.disabled=true alert&lt;br /&gt;
(&amp;quot;Thanks for your comments!&amp;quot;) } } &amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The JavaScript event that fires this script is the onClick event. You're telling it to disable the SUBMIT button after the button is clicked. At that point, the button value equals &amp;quot;1.&amp;quot;&lt;br /&gt;
We included a JavaScript ALERT box in this example so that you'll know the form is working. &lt;br /&gt;
To tie this JavaScript to our form, we change the form's SUBMIT button to call the JavaScript function. This is done by adding an onClick event to the appropriate INPUT tag, as shown below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FORM action=&amp;quot;&amp;quot; method=&amp;quot;post&amp;quot; enctype=&amp;quot;text/plain&amp;quot; name=&amp;quot;commentForm&amp;quot;&amp;gt; &lt;br /&gt;
 How did you find our site? &amp;lt;input type=&amp;quot;text&amp;quot; maxlength=&amp;quot;30&amp;quot; size=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;Submit&amp;quot; value=&amp;quot;Send Comments and Get a Cookie&amp;quot; onClick=&amp;quot;formControl(1)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;/FORM&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The problem with this approach is only Internet explorer supports the disable option ,so it is browser dependent.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt; Below is another approach in java script using cookies in browser&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
b.&lt;br /&gt;
&lt;br /&gt;
The Below code has to be inserted into head section of our code &lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt; &amp;lt;!-- // give feedback to the respondent about the state of their submission function AllowNoDups() &lt;br /&gt;
{ var cookie_ls = document.cookie; &lt;br /&gt;
 if (cookie_ls.indexOf(document.location) &amp;gt; -1) &lt;br /&gt;
 { alert(&amp;quot;You've already submitted your answers. Thank you for your interest! &amp;quot;);&lt;br /&gt;
 return false; } &lt;br /&gt;
 else { document.cookie = window.location.href + &amp;quot; from &amp;quot; + document.referrer + &amp;quot;; &lt;br /&gt;
path=/; &lt;br /&gt;
expires=Thu, 23-Aug-2012 00:00:01 GMT;&amp;quot;; return true; }; }; //--&amp;gt; &amp;lt;/script&amp;gt;   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a user submits the form, the function sets an identifying cookie. Before the form processes, the function checks to see if there is already a cookie set.  If not, the form handles the submission as normal. If there is a cookie, the user gets an alert box that says &amp;quot;You've already submitted your answers&amp;quot; and the form submission is blocked.&lt;br /&gt;
This is a good, cross-browser way to avoid duplicate submissions, but we have to be careful that user's browser must accept cookies and have JavaScript turned on for this method to work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ASP.NET==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Here is an implementation in ASP that prevents duplicate form submission. In this implementation, we consider two ways of avoiding this problem. One is the Unsafe button method, where the button does not vanish after the user clicks the button. But at the same time does not consider two or more consecutive clicks, if done within a specified period of time, as a different request from the orginal one. The other method is the safe button method where the button vanishes after the button is clicked once and returns only after the request has been completed or timed out.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
Dim counter As Integer&lt;br /&gt;
Sub Page_Load()&lt;br /&gt;
If Session(&amp;quot;counter&amp;quot;) Is Nothing Then&lt;br /&gt;
counter = 0&lt;br /&gt;
Else&lt;br /&gt;
counter = CInt( Session(&amp;quot;counter&amp;quot;) )&lt;br /&gt;
End If&lt;br /&gt;
If IsPostBack Then&lt;br /&gt;
counter += 1&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = counter&lt;br /&gt;
End If&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; counter.ToString()&lt;br /&gt;
SafeButton.Attributes.Add(&amp;quot;onclick&amp;quot;, &amp;quot;disableButton();return true&amp;quot;)&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Process_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Dim i As Long&lt;br /&gt;
' 2-second delay&lt;br /&gt;
Dim endTime As DateTime = DateTime.Now.AddSeconds(2)&lt;br /&gt;
While DateTime.Now &amp;lt; endTime&lt;br /&gt;
End While&lt;br /&gt;
Label2.Text = &amp;quot;Finished @ &amp;quot; &amp;amp; DateTime.Now.ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Button2_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = 0&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; Session(&amp;quot;counter&amp;quot;).ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function disableButton()&lt;br /&gt;
{&lt;br /&gt;
document.form1.SafeButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form runat=&amp;quot;server&amp;quot; id=&amp;quot;form1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label2&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;UnsafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Unsafe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;SafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Safe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;asp:Button id=&amp;quot;Button2&amp;quot; onclick=&amp;quot;Button2_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Clear Counter&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;span1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As explained earlier, the Unsafe button allows users to click on submit multiple times. But clicking on the button again doesnt do anything, a two-second delay has been put into the button handler to emulate the time that a back-end process might take. So unless that time is up it doesnt effective count as a click.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Even for the Safe button the same process runs. But in this case as soon as the button is clicked, it disappears, preventing you from being able to click it again until the processing (postback) is complete.  This ensures that multiple form request is not sent by completely taking out the submit button. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ruby On Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails uses the Submit button disabling method to prevent Multiple form submissions .It uses the submit_tag option .Below is the code that demonstrate this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submit_tag &amp;quot;Submit&amp;quot;, :disable_with =&amp;gt; &amp;quot;Saving...&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This adds behavior to the submit button to disable it once clicked, and to display &amp;quot;Saving...&amp;quot; instead of &amp;quot;Submit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As illustrated in the above wiki, various languages handle the problem of multiple form submission either by client side or server &lt;br /&gt;
side methods. Server side handling is more reliable as some web browsers do not support the disabling of button feature. Synchronizer token pattern is best solution as illustrated in Java .In most languages, for server side handling, a token is set once on submission and compared again on resubmission to check for duplicates ,this prevents the data from being inserted again into the database. Some websites just pop message to user to wait until action is completed. Overall Java script is best way to handle duplicate form submission &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Below are some of the references for further reading &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.javaworld.com/javaworld/javatips/jw-javatip136.html?page=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.asp.net/t/447620.aspx?PageIndex=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://drupal.org/node/69048&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://phpsense.com/php/prevent-duplicate-form-submission.html&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.techarena.in/software-development/1149257.htm&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.stackoverflow.com&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=25142</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 3 bd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=25142"/>
		<updated>2009-10-10T00:45:19Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synchronizer token pattern== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Web application developers and designers face the problem with maintaining normal flow of control when multiple form submissions are made in a website .&lt;br /&gt;
This situation typically occurs when a user clicks more than once on a submit button before the response is sent back or when a client accesses a view by returning to a previously bookmarked page. Control flow sequence is particularly important to preserve when form submission involves transaction processing on the server. There are many solutions to the situation ,some websites just warn the user not to submit twice once a submission is made and to wait for the response .In other cases we have client side and server side solutions to the problem .Server side solution being more reliable than client side .In the client side model the button is disabled based on a flag which is set  once first submission is performed .Below we discuss some the ways this is handled in different in&lt;br /&gt;
different languages -&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&lt;br /&gt;
Java uses the server side solution to solve this problem .The basic idea is to set a token in a session variable before returning a transactional page to the client. This page carries the token inside a hidden field. Upon submission, request processing first tests for the presence of a valid token in the request parameter by comparing it with the one registered in the session. If the token is valid, processing can continue normally, otherwise an alternate course of action is taken. After testing, the token resets to null to prevent subsequent submissions until a new token is saved in the session, which must be done at the appropriate time based on the desired application flow of control. In other words, the one-time privilege to submit data is given to one specific instance of a view.&lt;br /&gt;
&amp;lt;p&amp;gt; Based on the above, the solution appears complete. But an element is missing: how do we specify/implement the alternate course of action when an invalid token is detected. In fact, given the case where the submit button is reclicked, the second request will cause the loss of the first response containing the expected result. The thread that executes the first request still runs, but has no means of providing its response to the browser. Hence, the user may be left with the impression that the transaction did not complete, while in reality, it may have successfully completed.This tip's proposed strategy builds on the Struts framework to provide a complete solution that prevents duplicate submission and still ensures the display of a response that represents the original request's outcome. The proposed implementation involves the abstract class SynchroAction, which actions can extend to behave in the specified synchronized manner. This class overrides the Action.perform() method and provides an abstract performSynchro() method with the same arguments. Below is the example implementation in Java using struts &amp;lt;/p&amp;gt;&lt;br /&gt;
Eg Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public final ActionForward perform(ActionMapping mapping,&lt;br /&gt;
ActionForm form,&lt;br /&gt;
HttpServletRequest request,&lt;br /&gt;
HttpServletResponse response) throws IOException, ServletException &lt;br /&gt;
{ HttpSession session = request.getSession();&lt;br /&gt;
 ActionForward forward = null;&lt;br /&gt;
 if (isTokenValid(request)) &lt;br /&gt;
{ &lt;br /&gt;
 try { &lt;br /&gt;
session.setAttribute(FORM_KEY, form);&lt;br /&gt;
 session.setAttribute(FORWARD_KEY, forward);&lt;br /&gt;
 ActionErrors errors = (ActionErrors) request.getAttribute(Action.ERROR_KEY);&lt;br /&gt;
 if (errors != null &amp;amp;&amp;amp; !errors.empty()) &lt;br /&gt;
{ &lt;br /&gt;
 saveToken(request); &lt;br /&gt;
 } &lt;br /&gt;
 session.setAttribute(ERRORS_KEY, errors); &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); } &lt;br /&gt;
catch (IOException e)&lt;br /&gt;
 { &lt;br /&gt;
 throw e; &lt;br /&gt;
 } &lt;br /&gt;
catch (ServletException e) &lt;br /&gt;
{ &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); &lt;br /&gt;
 throw e; } } &lt;br /&gt;
&lt;br /&gt;
else { &lt;br /&gt;
 { &lt;br /&gt;
throw it if (e != null) { if (e instanceof IOException) { throw (IOException) e; } &lt;br /&gt;
else if (e instanceof ServletException) &lt;br /&gt;
{ throw (ServletException) e; &lt;br /&gt;
} } context if (&amp;quot;request&amp;quot;.equals(mapping.getScope())) &lt;br /&gt;
{ request.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
&lt;br /&gt;
else { session.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
(ActionErrors) session.getAttribute(ERRORS_KEY)); &lt;br /&gt;
session.getAttribute(FORWARD_KEY); } &lt;br /&gt;
else { &lt;br /&gt;
 return forward; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As we can see from the above code that for a valid token the protected action is performed only once ,while the action is being performed any other requests are received then &lt;br /&gt;
they are directed to performInvalidToken() method until the action is completed ,this method simply returns an ActionForward named &amp;quot;synchroerror&amp;quot; ,this should lead to a form with a button for continue , this just resubmits without any parameters and nothing happens until action of first form submission  is completed .When the action completes, it stores its forward, form, exception, and errors, if any, in the session, and it sets a flag to indicate it has completed. The first request coming after the action completion will get the forward, form, exception, and errors from the session and continue as if it was the first request itself.&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following method is one of the ways of creating a Synchronous token pattern&lt;br /&gt;
&lt;br /&gt;
The below given code needs to be added to ur code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
$secret=md5(uniqueid(rand(), true));&lt;br /&gt;
$_SESSION['FORM_SECRET']=$secret;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here uniqueid() is used to create Unique ID. Then md5() is used to create 32 character hash of this Unique ID. This unique id is stored in the session for later use. We also need to use a different session variable for each form.&lt;br /&gt;
&lt;br /&gt;
Then we add a hidden field anywhere in the form using the below given code.&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;form_secret&amp;quot; id=&amp;quot;form_secret&amp;quot; &lt;br /&gt;
value=&amp;quot;&amp;lt;?php echo $_SESSION['FORM_SECRET'];?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we need to compare the value of the hidden field with the value stored in the session. If the value is the same, that means its the first time. Hence process the form data. Now unset the values stored in this session. now when the user refreshes the page, the code for processing form will be skipped. It can be done as given below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
//get the hidden value&lt;br /&gt;
$form_secret=$_POST['form_secret'];&lt;br /&gt;
if(isset($_SESSION['FORM_SECRET'])) {&lt;br /&gt;
if(strcasecmp($form_secret,$_SESSION['FORM_SECRET'])===0) {&lt;br /&gt;
/*We need to have the form submission code here&lt;br /&gt;
*/&lt;br /&gt;
unset($_SESSION['FORM_SECRET']);&lt;br /&gt;
}else {&lt;br /&gt;
//this is the condition of key which is invalid&lt;br /&gt;
}&lt;br /&gt;
}else {&lt;br /&gt;
//this is the case where is secret key is no there&lt;br /&gt;
echo 'Form data has been processed once!';&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JavaScript== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;   Java Script uses two methods to prevent Duplicate form submissions .The first method disables the button and the second method uses cookies to prevent multiple submissions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a.&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot; TYPE=&amp;quot;text/JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
 function formControl(submitted)&lt;br /&gt;
 { if(submitted==&amp;quot;1&amp;quot;) &lt;br /&gt;
 { commentForm.Submit.disabled=true alert&lt;br /&gt;
(&amp;quot;Thanks for your comments!&amp;quot;) } } &amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The JavaScript event that fires this script is the onClick event. You're telling it to disable the SUBMIT button after the button is clicked. At that point, the button value equals &amp;quot;1.&amp;quot;&lt;br /&gt;
We included a JavaScript ALERT box in this example so that you'll know the form is working. &lt;br /&gt;
To tie this JavaScript to our form, we change the form's SUBMIT button to call the JavaScript function. This is done by adding an onClick event to the appropriate INPUT tag, as shown below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FORM action=&amp;quot;&amp;quot; method=&amp;quot;post&amp;quot; enctype=&amp;quot;text/plain&amp;quot; name=&amp;quot;commentForm&amp;quot;&amp;gt; &lt;br /&gt;
 How did you find our site? &amp;lt;input type=&amp;quot;text&amp;quot; maxlength=&amp;quot;30&amp;quot; size=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;Submit&amp;quot; value=&amp;quot;Send Comments and Get a Cookie&amp;quot; onClick=&amp;quot;formControl(1)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;/FORM&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The problem with this approach is only Internet explorer supports the disable option ,so it is browser dependent.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt; Below is another approach in java script using cookies in browser&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
b.&lt;br /&gt;
&lt;br /&gt;
The Below code has to be inserted into head section of our code &lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt; &amp;lt;!-- // give feedback to the respondent about the state of their submission function AllowNoDups() &lt;br /&gt;
{ var cookie_ls = document.cookie; &lt;br /&gt;
 if (cookie_ls.indexOf(document.location) &amp;gt; -1) &lt;br /&gt;
 { alert(&amp;quot;You've already submitted your answers. Thank you for your interest! &amp;quot;);&lt;br /&gt;
 return false; } &lt;br /&gt;
 else { document.cookie = window.location.href + &amp;quot; from &amp;quot; + document.referrer + &amp;quot;; &lt;br /&gt;
path=/; &lt;br /&gt;
expires=Thu, 23-Aug-2012 00:00:01 GMT;&amp;quot;; return true; }; }; //--&amp;gt; &amp;lt;/script&amp;gt;   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a user submits the form, the function sets an identifying cookie. Before the form processes, the function checks to see if there is already a cookie set.  If not, the form handles the submission as normal. If there is a cookie, the user gets an alert box that says &amp;quot;You've already submitted your answers&amp;quot; and the form submission is blocked.&lt;br /&gt;
This is a good, cross-browser way to avoid duplicate submissions, but we have to be careful that user's browser must accept cookies and have JavaScript turned on for this method to work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ASP.NET==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Here is an implementation in ASP that prevents duplicate form submission. In this implementation, we consider two ways of avoiding this problem. One is the Unsafe button method, where the button does not vanish after the user clicks the button. But at the same time does not consider two or more consecutive clicks, if done within a specified period of time, as a different request from the orginal one. The other method is the safe button method where the button vanishes after the button is clicked once and returns only after the request has been completed or timed out.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
Dim counter As Integer&lt;br /&gt;
Sub Page_Load()&lt;br /&gt;
If Session(&amp;quot;counter&amp;quot;) Is Nothing Then&lt;br /&gt;
counter = 0&lt;br /&gt;
Else&lt;br /&gt;
counter = CInt( Session(&amp;quot;counter&amp;quot;) )&lt;br /&gt;
End If&lt;br /&gt;
If IsPostBack Then&lt;br /&gt;
counter += 1&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = counter&lt;br /&gt;
End If&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; counter.ToString()&lt;br /&gt;
SafeButton.Attributes.Add(&amp;quot;onclick&amp;quot;, &amp;quot;disableButton();return true&amp;quot;)&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Process_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Dim i As Long&lt;br /&gt;
' 2-second delay&lt;br /&gt;
Dim endTime As DateTime = DateTime.Now.AddSeconds(2)&lt;br /&gt;
While DateTime.Now &amp;lt; endTime&lt;br /&gt;
End While&lt;br /&gt;
Label2.Text = &amp;quot;Finished @ &amp;quot; &amp;amp; DateTime.Now.ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Button2_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = 0&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; Session(&amp;quot;counter&amp;quot;).ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function disableButton()&lt;br /&gt;
{&lt;br /&gt;
document.form1.SafeButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form runat=&amp;quot;server&amp;quot; id=&amp;quot;form1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label2&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;UnsafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Unsafe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;SafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Safe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;asp:Button id=&amp;quot;Button2&amp;quot; onclick=&amp;quot;Button2_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Clear Counter&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;span1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As explained earlier, the Unsafe button allows users to click on submit multiple times. But clicking on the button again doesnt do anything, a two-second delay has been put into the button handler to emulate the time that a back-end process might take. So unless that time is up it doesnt effective count as a click.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Even for the Safe button the same process runs. But in this case as soon as the button is clicked, it disappears, preventing you from being able to click it again until the processing (postback) is complete.  This ensures that multiple form request is not sent by completely taking out the submit button. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ruby On Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails uses the Submit button disabling method to prevent Multiple form submissions .It uses the submit_tag option .Below is the code that demonstrate this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submit_tag &amp;quot;Submit&amp;quot;, :disable_with =&amp;gt; &amp;quot;Saving...&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This adds behavior to the submit button to disable it once clicked, and to display &amp;quot;Saving...&amp;quot; instead of &amp;quot;Submit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As illustrated in the above wiki various languages handle the problem of multiple form submission either by client side or server &lt;br /&gt;
side methods.Server side handling is more reliable as some web browsers do not support the disabling of button feature .Synchronizer token pattern is best solution as illustrated in Java .In most languages for server side handling a token is set once on submission and compared again on resubmission to check for duplicates ,this prevents the data from being inserted again into the database.Some websites just pop message to user to wait until action is completed .Overall Java script is best way to handle duplicate form submission&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Below are some of the references for further reading &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.javaworld.com/javaworld/javatips/jw-javatip136.html?page=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.asp.net/t/447620.aspx?PageIndex=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://drupal.org/node/69048&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://phpsense.com/php/prevent-duplicate-form-submission.html&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.techarena.in/software-development/1149257.htm&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.stackoverflow.com&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=25136</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 3 bd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=25136"/>
		<updated>2009-10-10T00:44:22Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synchronizer token pattern== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Web application developers and designers face the problem with maintaining normal flow of control when multiple form submissions are made in a website .&lt;br /&gt;
This situation typically occurs when a user clicks more than once on a submit button before the response is sent back or when a client accesses a view by returning to a previously bookmarked page. Control flow sequence is particularly important to preserve when form submission involves transaction processing on the server. There are many solutions to the situation ,some websites just warn the user not to submit twice once a submission is made and to wait for the response .In other cases we have client side and server side solutions to the problem .Server side solution being more reliable than client side .In the client side model the button is disabled based on a flag which is set  once first submission is performed .Below we discuss some the ways this is handled in different in&lt;br /&gt;
different languages -&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&lt;br /&gt;
Java uses the server side solution to solve this problem .The basic idea is to set a token in a session variable before returning a transactional page to the client. This page carries the token inside a hidden field. Upon submission, request processing first tests for the presence of a valid token in the request parameter by comparing it with the one registered in the session. If the token is valid, processing can continue normally, otherwise an alternate course of action is taken. After testing, the token resets to null to prevent subsequent submissions until a new token is saved in the session, which must be done at the appropriate time based on the desired application flow of control. In other words, the one-time privilege to submit data is given to one specific instance of a view.&lt;br /&gt;
&amp;lt;p&amp;gt; Based on the above, the solution appears complete. But an element is missing: how do we specify/implement the alternate course of action when an invalid token is detected. In fact, given the case where the submit button is reclicked, the second request will cause the loss of the first response containing the expected result. The thread that executes the first request still runs, but has no means of providing its response to the browser. Hence, the user may be left with the impression that the transaction did not complete, while in reality, it may have successfully completed.This tip's proposed strategy builds on the Struts framework to provide a complete solution that prevents duplicate submission and still ensures the display of a response that represents the original request's outcome. The proposed implementation involves the abstract class SynchroAction, which actions can extend to behave in the specified synchronized manner. This class overrides the Action.perform() method and provides an abstract performSynchro() method with the same arguments. Below is the example implementation in Java using struts &amp;lt;/p&amp;gt;&lt;br /&gt;
Eg Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public final ActionForward perform(ActionMapping mapping,&lt;br /&gt;
ActionForm form,&lt;br /&gt;
HttpServletRequest request,&lt;br /&gt;
HttpServletResponse response) throws IOException, ServletException &lt;br /&gt;
{ HttpSession session = request.getSession();&lt;br /&gt;
 ActionForward forward = null;&lt;br /&gt;
 if (isTokenValid(request)) &lt;br /&gt;
{ &lt;br /&gt;
 try { &lt;br /&gt;
session.setAttribute(FORM_KEY, form);&lt;br /&gt;
 session.setAttribute(FORWARD_KEY, forward);&lt;br /&gt;
 ActionErrors errors = (ActionErrors) request.getAttribute(Action.ERROR_KEY);&lt;br /&gt;
 if (errors != null &amp;amp;&amp;amp; !errors.empty()) &lt;br /&gt;
{ &lt;br /&gt;
 saveToken(request); &lt;br /&gt;
 } &lt;br /&gt;
 session.setAttribute(ERRORS_KEY, errors); &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); } &lt;br /&gt;
catch (IOException e)&lt;br /&gt;
 { &lt;br /&gt;
 throw e; &lt;br /&gt;
 } &lt;br /&gt;
catch (ServletException e) &lt;br /&gt;
{ &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); &lt;br /&gt;
 throw e; } } &lt;br /&gt;
&lt;br /&gt;
else { &lt;br /&gt;
 { &lt;br /&gt;
throw it if (e != null) { if (e instanceof IOException) { throw (IOException) e; } &lt;br /&gt;
else if (e instanceof ServletException) &lt;br /&gt;
{ throw (ServletException) e; &lt;br /&gt;
} } context if (&amp;quot;request&amp;quot;.equals(mapping.getScope())) &lt;br /&gt;
{ request.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
&lt;br /&gt;
else { session.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
(ActionErrors) session.getAttribute(ERRORS_KEY)); &lt;br /&gt;
session.getAttribute(FORWARD_KEY); } &lt;br /&gt;
else { &lt;br /&gt;
 return forward; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As we can see from the above code that for a valid token the protected action is performed only once ,while the action is being performed any other requests are received then &lt;br /&gt;
they are directed to performInvalidToken() method until the action is completed ,this method simply returns an ActionForward named &amp;quot;synchroerror&amp;quot; ,this should lead to a form with a button for continue , this just resubmits without any parameters and nothing happens until action of first form submission  is completed .When the action completes, it stores its forward, form, exception, and errors, if any, in the session, and it sets a flag to indicate it has completed. The first request coming after the action completion will get the forward, form, exception, and errors from the session and continue as if it was the first request itself.&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following method is one of the ways of creating a Synchronous token pattern&lt;br /&gt;
&lt;br /&gt;
The below given code needs to be added to ur code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
$secret=md5(uniqueid(rand(), true));&lt;br /&gt;
$_SESSION['FORM_SECRET']=$secret;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here uniqueid() is used to create Unique ID. Then md5() is used to create 32 character hash of this Unique ID. This unique id is stored in the session for later use. We also need to use a different session variable for each form.&lt;br /&gt;
&lt;br /&gt;
Then we add a hidden field anywhere in the form using the below given code.&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;form_secret&amp;quot; id=&amp;quot;form_secret&amp;quot; &lt;br /&gt;
value=&amp;quot;&amp;lt;?php echo $_SESSION['FORM_SECRET'];?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we need to compare the value of the hidden field with the value stored in the session. If the value is the same, that means its the first time. Hence process the form data. Now unset the values stored in this session. now when the user refreshes the page, the code for processing form will be skipped. It can be done as given below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
//get the hidden value&lt;br /&gt;
$form_secret=$_POST['form_secret'];&lt;br /&gt;
if(isset($_SESSION['FORM_SECRET'])) {&lt;br /&gt;
if(strcasecmp($form_secret,$_SESSION['FORM_SECRET'])===0) {&lt;br /&gt;
/*We need to have the form submission code here&lt;br /&gt;
*/&lt;br /&gt;
unset($_SESSION['FORM_SECRET']);&lt;br /&gt;
}else {&lt;br /&gt;
//this is the condition of key which is invalid&lt;br /&gt;
}&lt;br /&gt;
}else {&lt;br /&gt;
//this is the case where is secret key is no there&lt;br /&gt;
echo 'Form data has been processed once!';&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JavaScript== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;   Java Script uses two methods to prevent Duplicate form submissions .The first method disables the button and the second method uses cookies to prevent multiple submissions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a.&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot; TYPE=&amp;quot;text/JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
 function formControl(submitted)&lt;br /&gt;
 { if(submitted==&amp;quot;1&amp;quot;) &lt;br /&gt;
 { commentForm.Submit.disabled=true alert&lt;br /&gt;
(&amp;quot;Thanks for your comments!&amp;quot;) } } &amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The JavaScript event that fires this script is the onClick event. You're telling it to disable the SUBMIT button after the button is clicked. At that point, the button value equals &amp;quot;1.&amp;quot;&lt;br /&gt;
We included a JavaScript ALERT box in this example so that you'll know the form is working. &lt;br /&gt;
To tie this JavaScript to our form, we change the form's SUBMIT button to call the JavaScript function. This is done by adding an onClick event to the appropriate INPUT tag, as shown below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FORM action=&amp;quot;&amp;quot; method=&amp;quot;post&amp;quot; enctype=&amp;quot;text/plain&amp;quot; name=&amp;quot;commentForm&amp;quot;&amp;gt; &lt;br /&gt;
 How did you find our site? &amp;lt;input type=&amp;quot;text&amp;quot; maxlength=&amp;quot;30&amp;quot; size=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;Submit&amp;quot; value=&amp;quot;Send Comments and Get a Cookie&amp;quot; onClick=&amp;quot;formControl(1)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;/FORM&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The problem with this approach is only Internet explorer supports the disable option ,so it is browser dependent.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt; Below is another approach in java script using cookies in browser&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
b.&lt;br /&gt;
&lt;br /&gt;
The Below code has to be inserted into head section of our code &lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt; &amp;lt;!-- // give feedback to the respondent about the state of their submission function AllowNoDups() &lt;br /&gt;
{ var cookie_ls = document.cookie; &lt;br /&gt;
 if (cookie_ls.indexOf(document.location) &amp;gt; -1) &lt;br /&gt;
 { alert(&amp;quot;You've already submitted your answers. Thank you for your interest! &amp;quot;);&lt;br /&gt;
 return false; } &lt;br /&gt;
 else { document.cookie = window.location.href + &amp;quot; from &amp;quot; + document.referrer + &amp;quot;; &lt;br /&gt;
path=/; &lt;br /&gt;
expires=Thu, 23-Aug-2012 00:00:01 GMT;&amp;quot;; return true; }; }; //--&amp;gt; &amp;lt;/script&amp;gt;   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a user submits the form, the function sets an identifying cookie. Before the form processes, the function checks to see if there is already a cookie set.  If not, the form handles the submission as normal. If there is a cookie, the user gets an alert box that says &amp;quot;You've already submitted your answers&amp;quot; and the form submission is blocked.&lt;br /&gt;
This is a good, cross-browser way to avoid duplicate submissions, but we have to be careful that user's browser must accept cookies and have JavaScript turned on for this method to work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ASP.NET==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Here is an implementation in ASP that prevents duplicate form submission. In this implementation, we consider two ways of avoiding this problem. One is the Unsafe button method, where the button does not vanish after the user clicks the button. But at the same time does not consider two or more consecutive clicks, if done within a specified period of time, as a different request from the orginal one. The other method is the safe button method where the button vanishes after the button is clicked once and returns only after the request has been completed or timed out.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
Dim counter As Integer&lt;br /&gt;
Sub Page_Load()&lt;br /&gt;
If Session(&amp;quot;counter&amp;quot;) Is Nothing Then&lt;br /&gt;
counter = 0&lt;br /&gt;
Else&lt;br /&gt;
counter = CInt( Session(&amp;quot;counter&amp;quot;) )&lt;br /&gt;
End If&lt;br /&gt;
If IsPostBack Then&lt;br /&gt;
counter += 1&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = counter&lt;br /&gt;
End If&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; counter.ToString()&lt;br /&gt;
SafeButton.Attributes.Add(&amp;quot;onclick&amp;quot;, &amp;quot;disableButton();return true&amp;quot;)&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Process_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Dim i As Long&lt;br /&gt;
' 2-second delay&lt;br /&gt;
Dim endTime As DateTime = DateTime.Now.AddSeconds(2)&lt;br /&gt;
While DateTime.Now &amp;lt; endTime&lt;br /&gt;
End While&lt;br /&gt;
Label2.Text = &amp;quot;Finished @ &amp;quot; &amp;amp; DateTime.Now.ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Button2_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = 0&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; Session(&amp;quot;counter&amp;quot;).ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function disableButton()&lt;br /&gt;
{&lt;br /&gt;
document.form1.SafeButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form runat=&amp;quot;server&amp;quot; id=&amp;quot;form1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label2&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;UnsafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Unsafe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;SafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Safe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;asp:Button id=&amp;quot;Button2&amp;quot; onclick=&amp;quot;Button2_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Clear Counter&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;span1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As explained earlier, the Unsafe button allows users to click on submit multiple times. But clicking on the button again doesnt do anything, a two-second delay has been put into the button handler to emulate the time that a back-end process might take. So unless that time is up it doesnt effective count as a click.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Even for the Safe button the same process runs. But in this case as soon as the button is clicked, it disappears, preventing you from being able to click it again until the processing (postback) is complete.  This ensures that multiple form request is not sent by completely taking out the submit button. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ruby On Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails uses the Submit button disabling method to prevent Multiple form submissions .It uses the submit_tag option .Below is the code that demonstrate this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submit_tag &amp;quot;Submit&amp;quot;, :disable_with =&amp;gt; &amp;quot;Saving...&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This adds behavior to the submit button to disable it once clicked, and to display &amp;quot;Saving...&amp;quot; instead of &amp;quot;Submit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As illustrated in the above wiki various languages handle the problem of multiple form submission either by client side or server &lt;br /&gt;
side methods.Server side handling is more reliable as some web browsers do not support the disabling of button feature .Synchronizer token pattern is best solution as illustrated in Java .In most languages for server side handling a token is set once on submission and compared again on resubmission to check for duplicates ,this prevents the data from being inserted again into the database.Some websites just pop message to user to wait until action is completed .Overall Java script is best way to handle duplicate form submission&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Java -http://www.javaworld.com/javaworld/javatips/jw-javatip136.html?page=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Asp .Net - http://forums.asp.net/t/447620.aspx?PageIndex=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Php - http://drupal.org/node/69048&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Php - http://phpsense.com/php/prevent-duplicate-form-submission.html&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.techarena.in/software-development/1149257.htm&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.stackoverflow.com&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=25125</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 3 bd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_3_bd&amp;diff=25125"/>
		<updated>2009-10-10T00:42:58Z</updated>

		<summary type="html">&lt;p&gt;Bschanda: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synchronizer token pattern== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Web application developers and designers face the problem with maintaining normal flow of control when multiple form submissions are made in a website .&lt;br /&gt;
This situation typically occurs when a user clicks more than once on a submit button before the response is sent back or when a client accesses a view by returning to a previously bookmarked page. Control flow sequence is particularly important to preserve when form submission involves transaction processing on the server. There are many solutions to the situation ,some websites just warn the user not to submit twice once a submission is made and to wait for the response .In other cases we have client side and server side solutions to the problem .Server side solution being more reliable than client side .In the client side model the button is disabled based on a flag which is set  once first submission is performed .Below we discuss some the ways this is handled in different in&lt;br /&gt;
different languages -&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&lt;br /&gt;
Java uses the server side solution to solve this problem .The basic idea is to set a token in a session variable before returning a transactional page to the client. This page carries the token inside a hidden field. Upon submission, request processing first tests for the presence of a valid token in the request parameter by comparing it with the one registered in the session. If the token is valid, processing can continue normally, otherwise an alternate course of action is taken. After testing, the token resets to null to prevent subsequent submissions until a new token is saved in the session, which must be done at the appropriate time based on the desired application flow of control. In other words, the one-time privilege to submit data is given to one specific instance of a view.&lt;br /&gt;
&amp;lt;p&amp;gt; Based on the above, the solution appears complete. But an element is missing: how do we specify/implement the alternate course of action when an invalid token is detected. In fact, given the case where the submit button is reclicked, the second request will cause the loss of the first response containing the expected result. The thread that executes the first request still runs, but has no means of providing its response to the browser. Hence, the user may be left with the impression that the transaction did not complete, while in reality, it may have successfully completed.This tip's proposed strategy builds on the Struts framework to provide a complete solution that prevents duplicate submission and still ensures the display of a response that represents the original request's outcome. The proposed implementation involves the abstract class SynchroAction, which actions can extend to behave in the specified synchronized manner. This class overrides the Action.perform() method and provides an abstract performSynchro() method with the same arguments. Below is the example implementation in Java using struts &amp;lt;/p&amp;gt;&lt;br /&gt;
Eg Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public final ActionForward perform(ActionMapping mapping,&lt;br /&gt;
ActionForm form,&lt;br /&gt;
HttpServletRequest request,&lt;br /&gt;
HttpServletResponse response) throws IOException, ServletException &lt;br /&gt;
{ HttpSession session = request.getSession();&lt;br /&gt;
 ActionForward forward = null;&lt;br /&gt;
 if (isTokenValid(request)) &lt;br /&gt;
{ &lt;br /&gt;
 try { &lt;br /&gt;
session.setAttribute(FORM_KEY, form);&lt;br /&gt;
 session.setAttribute(FORWARD_KEY, forward);&lt;br /&gt;
 ActionErrors errors = (ActionErrors) request.getAttribute(Action.ERROR_KEY);&lt;br /&gt;
 if (errors != null &amp;amp;&amp;amp; !errors.empty()) &lt;br /&gt;
{ &lt;br /&gt;
 saveToken(request); &lt;br /&gt;
 } &lt;br /&gt;
 session.setAttribute(ERRORS_KEY, errors); &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); } &lt;br /&gt;
catch (IOException e)&lt;br /&gt;
 { &lt;br /&gt;
 throw e; &lt;br /&gt;
 } &lt;br /&gt;
catch (ServletException e) &lt;br /&gt;
{ &lt;br /&gt;
 session.setAttribute(COMPLETE_KEY, &amp;quot;true&amp;quot;); &lt;br /&gt;
 throw e; } } &lt;br /&gt;
&lt;br /&gt;
else { &lt;br /&gt;
 { &lt;br /&gt;
throw it if (e != null) { if (e instanceof IOException) { throw (IOException) e; } &lt;br /&gt;
else if (e instanceof ServletException) &lt;br /&gt;
{ throw (ServletException) e; &lt;br /&gt;
} } context if (&amp;quot;request&amp;quot;.equals(mapping.getScope())) &lt;br /&gt;
{ request.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
&lt;br /&gt;
else { session.setAttribute(mapping.getAttribute(), f); } &lt;br /&gt;
(ActionErrors) session.getAttribute(ERRORS_KEY)); &lt;br /&gt;
session.getAttribute(FORWARD_KEY); } &lt;br /&gt;
else { &lt;br /&gt;
 return forward; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As we can see from the above code that for a valid token the protected action is performed only once ,while the action is being performed any other requests are received then &lt;br /&gt;
they are directed to performInvalidToken() method until the action is completed ,this method simply returns an ActionForward named &amp;quot;synchroerror&amp;quot; ,this should lead to a form with a button for continue , this just resubmits without any parameters and nothing happens until action of first form submission  is completed .When the action completes, it stores its forward, form, exception, and errors, if any, in the session, and it sets a flag to indicate it has completed. The first request coming after the action completion will get the forward, form, exception, and errors from the session and continue as if it was the first request itself.&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following method is one of the ways of creating a Synchronous token pattern&lt;br /&gt;
&lt;br /&gt;
The below given code needs to be added to ur code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
$secret=md5(uniqueid(rand(), true));&lt;br /&gt;
$_SESSION['FORM_SECRET']=$secret;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here uniqueid() is used to create Unique ID. Then md5() is used to create 32 character hash of this Unique ID. This unique id is stored in the session for later use. We also need to use a different session variable for each form.&lt;br /&gt;
&lt;br /&gt;
Then we add a hidden field anywhere in the form using the below given code.&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;form_secret&amp;quot; id=&amp;quot;form_secret&amp;quot; &lt;br /&gt;
value=&amp;quot;&amp;lt;?php echo $_SESSION['FORM_SECRET'];?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we need to compare the value of the hidden field with the value stored in the session. If the value is the same, that means its the first time. Hence process the form data. Now unset the values stored in this session. now when the user refreshes the page, the code for processing form will be skipped. It can be done as given below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
//get the hidden value&lt;br /&gt;
$form_secret=$_POST['form_secret'];&lt;br /&gt;
if(isset($_SESSION['FORM_SECRET'])) {&lt;br /&gt;
if(strcasecmp($form_secret,$_SESSION['FORM_SECRET'])===0) {&lt;br /&gt;
/*We need to have the form submission code here&lt;br /&gt;
*/&lt;br /&gt;
unset($_SESSION['FORM_SECRET']);&lt;br /&gt;
}else {&lt;br /&gt;
//this is the condition of key which is invalid&lt;br /&gt;
}&lt;br /&gt;
}else {&lt;br /&gt;
//this is the case where is secret key is no there&lt;br /&gt;
echo 'Form data has been processed once!';&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JavaScript== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;   Java Script uses two methods to prevent Duplicate form submissions .The first method disables the button and the second method uses cookies to prevent multiple submissions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a.&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot; TYPE=&amp;quot;text/JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
 function formControl(submitted)&lt;br /&gt;
 { if(submitted==&amp;quot;1&amp;quot;) &lt;br /&gt;
 { commentForm.Submit.disabled=true alert&lt;br /&gt;
(&amp;quot;Thanks for your comments!&amp;quot;) } } &amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The JavaScript event that fires this script is the onClick event. You're telling it to disable the SUBMIT button after the button is clicked. At that point, the button value equals &amp;quot;1.&amp;quot;&lt;br /&gt;
We included a JavaScript ALERT box in this example so that you'll know the form is working. &lt;br /&gt;
To tie this JavaScript to our form, we change the form's SUBMIT button to call the JavaScript function. This is done by adding an onClick event to the appropriate INPUT tag, as shown below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FORM action=&amp;quot;&amp;quot; method=&amp;quot;post&amp;quot; enctype=&amp;quot;text/plain&amp;quot; name=&amp;quot;commentForm&amp;quot;&amp;gt; &lt;br /&gt;
 How did you find our site? &amp;lt;input type=&amp;quot;text&amp;quot; maxlength=&amp;quot;30&amp;quot; size=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;Submit&amp;quot; value=&amp;quot;Send Comments and Get a Cookie&amp;quot; onClick=&amp;quot;formControl(1)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;/FORM&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The problem with this approach is only Internet explorer supports the disable option ,so it is browser dependent.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt; Below is another approach in java script using cookies in browser&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
b.&lt;br /&gt;
&lt;br /&gt;
The Below code has to be inserted into head section of our code &lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt; &amp;lt;!-- // give feedback to the respondent about the state of their submission function AllowNoDups() &lt;br /&gt;
{ var cookie_ls = document.cookie; &lt;br /&gt;
 if (cookie_ls.indexOf(document.location) &amp;gt; -1) &lt;br /&gt;
 { alert(&amp;quot;You've already submitted your answers. Thank you for your interest! &amp;quot;);&lt;br /&gt;
 return false; } &lt;br /&gt;
 else { document.cookie = window.location.href + &amp;quot; from &amp;quot; + document.referrer + &amp;quot;; &lt;br /&gt;
path=/; &lt;br /&gt;
expires=Thu, 23-Aug-2012 00:00:01 GMT;&amp;quot;; return true; }; }; //--&amp;gt; &amp;lt;/script&amp;gt;   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a user submits the form, the function sets an identifying cookie. Before the form processes, the function checks to see if there is already a cookie set.  If not, the form handles the submission as normal. If there is a cookie, the user gets an alert box that says &amp;quot;You've already submitted your answers&amp;quot; and the form submission is blocked.&lt;br /&gt;
This is a good, cross-browser way to avoid duplicate submissions, but we have to be careful that user's browser must accept cookies and have JavaScript turned on for this method to work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ASP.NET==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Here is an implementation in ASP that prevents duplicate form submission. In this implementation, we consider two ways of avoiding this problem. One is the Unsafe button method, where the button does not vanish after the user clicks the button. But at the same time does not consider two or more consecutive clicks, if done within a specified period of time, as a different request from the orginal one. The other method is the safe button method where the button vanishes after the button is clicked once and returns only after the request has been completed or timed out.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
Dim counter As Integer&lt;br /&gt;
Sub Page_Load()&lt;br /&gt;
If Session(&amp;quot;counter&amp;quot;) Is Nothing Then&lt;br /&gt;
counter = 0&lt;br /&gt;
Else&lt;br /&gt;
counter = CInt( Session(&amp;quot;counter&amp;quot;) )&lt;br /&gt;
End If&lt;br /&gt;
If IsPostBack Then&lt;br /&gt;
counter += 1&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = counter&lt;br /&gt;
End If&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; counter.ToString()&lt;br /&gt;
SafeButton.Attributes.Add(&amp;quot;onclick&amp;quot;, &amp;quot;disableButton();return true&amp;quot;)&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Process_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Dim i As Long&lt;br /&gt;
' 2-second delay&lt;br /&gt;
Dim endTime As DateTime = DateTime.Now.AddSeconds(2)&lt;br /&gt;
While DateTime.Now &amp;lt; endTime&lt;br /&gt;
End While&lt;br /&gt;
Label2.Text = &amp;quot;Finished @ &amp;quot; &amp;amp; DateTime.Now.ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Sub Button2_Click(sender As Object, e As EventArgs)&lt;br /&gt;
Session(&amp;quot;counter&amp;quot;) = 0&lt;br /&gt;
Label1.Text = &amp;quot;Counter = &amp;quot; &amp;amp; Session(&amp;quot;counter&amp;quot;).ToString()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function disableButton()&lt;br /&gt;
{&lt;br /&gt;
document.form1.SafeButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form runat=&amp;quot;server&amp;quot; id=&amp;quot;form1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;Label2&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;UnsafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Unsafe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;asp:Button id=&amp;quot;SafeButton&amp;quot; onclick=&amp;quot;Process_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Safe Button&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;asp:Button id=&amp;quot;Button2&amp;quot; onclick=&amp;quot;Button2_Click&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Clear Counter&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;span1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As explained earlier, the Unsafe button allows users to click on submit multiple times. But clicking on the button again doesnt do anything, a two-second delay has been put into the button handler to emulate the time that a back-end process might take. So unless that time is up it doesnt effective count as a click.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Even for the Safe button the same process runs. But in this case as soon as the button is clicked, it disappears, preventing you from being able to click it again until the processing (postback) is complete.  This ensures that multiple form request is not sent by completely taking out the submit button. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ruby On Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails uses the Submit button disabling method to prevent Multiple form submissions .It uses the submit_tag option .Below is the code that demonstrate this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submit_tag &amp;quot;Submit&amp;quot;, :disable_with =&amp;gt; &amp;quot;Saving...&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This adds behavior to the submit button to disable it once clicked, and to display &amp;quot;Saving...&amp;quot; instead of &amp;quot;Submit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As illustrated in the above wiki various languages handle the problem of multiple form submission either by client side or server &lt;br /&gt;
side methods.Server side handling is more reliable as some web browsers do not support the disabling of button feature .Synchronizer token pattern is best solution as illustrated in Java .In most languages for server side handling a token is set once on submission and compared again on resubmission to check for duplicates ,this prevents the data from being inserted again into the database.Some websites just pop message to user to wait until action is completed .Overall Java script is best way to handle duplicate form submission&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Support in Java -http://www.javaworld.com/javaworld/javatips/jw-javatip136.html?page=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.asp.net/t/447620.aspx?PageIndex=1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://drupal.org/node/69048&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://phpsense.com/php/prevent-duplicate-form-submission.html&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://forums.techarena.in/software-development/1149257.htm&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;http://www.stackoverflow.com&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bschanda</name></author>
	</entry>
</feed>