Dynamic systems development method



Dynamic systems development method (DSDM) is an agile project delivery framework, initially used as a software development method. First released in 1994, DSDM originally sought to provide some discipline to the rapid application development (RAD) method. In later versions the DSDM Agile Project Framework was revised and became a generic approach to project management and solution delivery rather than being focused specifically on software development and code creation and could be used for non-IT projects. The DSDM Agile Project Framework covers a wide range of activities across the whole project lifecycle and includes strong foundations and governance, which set it apart from some other Agile methods. The DSDM Agile Project Framework is an iterative and incremental approach that embraces principles of Agile development, including continuous user/customer involvement.

DSDM fixes cost, quality and time at the outset and uses the MoSCoW prioritisation of scope into musts, shoulds, coulds and will not haves to adjust the project deliverable to meet the stated time constraint. DSDM is one of a number of agile methods for developing software and non-IT solutions, and it forms a part of the Agile Alliance.

In 2014, DSDM released the latest version of the method in the 'DSDM Agile Project Framework'. At the same time the new DSDM manual recognised the need to operate alongside other frameworks for service delivery (esp. ITIL) PRINCE2, Managing Successful Programmes, and PMI. The previous version (DSDM 4.2) had only contained guidance on how to use DSDM with extreme programming.

History
In the early 1990s, rapid application development (RAD) was spreading across the IT industry. The user interfaces for software applications were moving from the old green screens to the graphical user interfaces that are used today. New application development tools were coming on the market, such as PowerBuilder. These enabled developers to share their proposed solutions much more easily with their customers – prototyping became a reality and the frustrations of the classical, sequential (waterfall) development methods could be put to one side.

However, the RAD movement was very unstructured: there was no commonly agreed definition of a suitable process and many organizations came up with their own definition and approach. Many major corporations were very interested in the possibilities but they were also concerned that they did not lose the level of quality in the end deliverables that free-flow development could give rise to

The DSDM Consortium was founded in 1994 by an association of vendors and experts in the field of software engineering and was created with the objective of "jointly developing and promoting an independent RAD framework" by combining their best practice experiences. The origins were an event organized by the Butler Group in London. People at that meeting all worked for blue-chip organizations such as British Airways, American Express, Oracle, and Logica (other companies such as Data Sciences and Allied Domecq have since been absorbed by other organizations).

In July 2006, DSDM Public Version 4.2 was made available for individuals to view and use; however, anyone reselling DSDM must still be a member of the not-for-profit consortium.

In 2014, the DSDM handbook was made available online and public. Additionally, templates for DSDM can be downloaded.

In October 2016 the DSDM Consortium rebranded as the Agile Business Consortium (ABC). The Agile Business Consortium is a not-for-profit, vendor-independent organisation which owns and administers the DSDM framework.

Description
DSDM is a vendor-independent approach that recognises that more projects fail because of people problems than technology. DSDM's focus is on helping people to work effectively together to achieve the business goals. DSDM is also independent of tools and techniques enabling it to be used in any business and technical environment without tying the business to a particular vendor.

Principles
There are eight principles underpinning DSDM. These principles direct the team in the attitude they must take and the mindset they must adopt to deliver consistently.


 * 1) Focus on the business need
 * 2) Deliver on time
 * 3) Collaborate
 * 4) Never compromise quality
 * 5) Build incrementally from firm foundations
 * 6) Develop iteratively
 * 7) Communicate continuously and clearly
 * 8) Demonstrate control

Core techniques

 * Timeboxing: is the approach for completing the project incrementally by breaking it down into splitting the project in portions, each with a fixed budget and a delivery date. For each portion a number of requirements are prioritised and selected. Because time and budget are fixed, the only remaining variables are the requirements. So if a project is running out of time or money the requirements with the lowest priority are omitted. This does not mean that an unfinished product is delivered, because of the Pareto principle that 80% of the project comes from 20% of the system requirements, so as long as those most important 20% of requirements are implemented into the system, the system therefore meets the business needs and that no system is built perfectly in the first try.
 * MoSCoW: is a technique for prioritising work items or requirements. It is an acronym that stands for:
 * Must have
 * Should have
 * Could have
 * Won't have


 * Prototyping: refers to the creation of prototypes of the system under development at an early stage of the project. It enables the early discovery of shortcomings in the system and allows future users to 'test-drive' the system. This way good user involvement is realised, one of the key success factors of DSDM, or any system development project for that matter.
 * Testing: helps ensure a solution of good quality, DSDM advocates testing throughout each iteration. Since DSDM is a tool and technique independent method, the project team is free to choose its own test management method.
 * Workshop: brings project stakeholders together to discuss requirements, functionalities and mutual understanding.
 * Modeling: helps visualise a business domain and improve understanding. Produces a diagrammatic representation of specific aspects of the system or business area that is being developed.
 * Configuration management: with multiple deliverables under development at the same time and being delivered incrementally at the end of each time-box, the deliverables need to be well managed towards completion.

Roles
There are some roles introduced within DSDM environment. It is important that the project members need to be appointed to different roles before they commence the project. Each role has its own responsibility. The roles are:
 * Executive sponsor: So called the project champion. An important role from the user organisation who has the ability and responsibility to commit appropriate funds and resources. This role has an ultimate power to make decisions.
 * Visionary: The one who has the responsibility to initialise the project by ensuring that essential requirements are found early on. Visionary has the most accurate perception of the business objectives of the system and the project. Another task is to supervise and keep the development process in the right track.
 * Ambassador user: Brings the knowledge of the user community into the project, ensures that the developers receive enough user feedback during the development process.
 * Advisor user: Can be any user that represents an important viewpoint and brings daily knowledge of the project.
 * Project manager: Can be anyone from the user community or IT staff who manages the project in general.
 * Technical co-ordinator: Responsible in designing the system architecture and control the technical quality of the project.
 * Team leader: Leads their team and ensures that the team works effectively as a whole.
 * Solution developer: Interpret the system requirements and model it including developing the deliverable codes and build the prototypes.
 * Solution tester: Checks the correctness in a technical extent by performing some testing, raise defects where necessary and retest once fixed. Tester will have to provide some comment and documentation.
 * Scribe: Responsible for gathering and recording the requirements, agreements, and decisions made in every workshop.
 * Facilitator: Responsible for managing the workshops' progress, acts as a motivator for preparation and communication.
 * Specialist roles: Business architect, quality manager, system integrator, etc.

Critical success factors
Within DSDM a number of factors are identified as being of great importance to ensure successful projects.


 * Factor 1: First there is the acceptance of DSDM by senior management and other employees. This ensures that the different actors of the project are motivated from the start and remain involved throughout the project.
 * Factor 2: Directly derived from factor 1: The commitment of the management to ensure end-user involvement. The prototyping approach requires a strong and dedicated involvement by end users to test and judge the functional prototypes.
 * Factor 3: The project team has to be composed of skillful members that form a stable union. An important issue is the empowerment of the project team. This means that the team (or one or more of its members) has to possess the power and possibility to make important decisions regarding the project without having to write formal proposals to higher management, which can be very time-consuming. In order to enable the project team to run a successful project, they also need the appropriate technology to conduct the project. This means a development environment, project management tools, etc.
 * Factor 4: Finally, DSDM also states that a supportive relationship between customer and vendor is required. This goes for both projects that are realised internally within companies or by external contractors. An aid in ensuring a supporting relationship could be ISPL.

Comparison to other development frameworks
DSDM can be considered as part of a broad range of iterative and incremental development frameworks, especially those supporting agile and object-oriented methods. These include (but are not limited to) scrum, extreme programming (XP), disciplined agile delivery (DAD), and rational unified process (RUP).

Like DSDM, these share the following characteristics:
 * They all prioritise requirements and work though them iteratively, building a system or product in increments.
 * They are tool-independent frameworks. This allows users to fill in the specific steps of the process with their own techniques and software aids of choice.
 * The variables in the development are not time/resources, but the requirements. This approach ensures the main goals of DSDM, namely to stay within the deadline and the budget.
 * A strong focus on communication between and the involvement of all the stakeholders in the system. Although this is addressed in other methods, DSDM strongly believes in commitment to the project to ensure a successful outcome.