DSDM or Dynamic Systems Development Method is an agile software development methodology which focuses on the full project life cycle. DSDM is an iterative and incremental approach to software development, which also focuses on adding discipline and structure to the development process.
DSDM is largely based on the Rapid Application Development (RAD) method of agile development. The RAD method prioritized rapid prototyping as well as iteration based on user feedback, but lacked structure. This is why the DSDM consortium was founded, so that experts could share their knowledge and develop a proper agile framework.
The DSDM framework has 4 main components which are split into 8 key principles. These four components are:
- Feasibility and business study
- Functional model / prototype iteration
- Design and build iteration
All these components combine to deliver strategically aligned benefits in business at the fastest possible time to give the best Return on Investment. The DSDM framework uses Pareto's principle as one of its differentiating factors from other traditional approaches. This principle states that 'as a rule, 80% of the value of the solution can be delivered for 20% of the effort that it would take to produce the total solution.'
Using this, the Dynamic Systems Development Method aims to efficiently develop good quality software so that the returns are very beneficial to the stakeholders.
The RAD method of development was gaining popularity in the early 1990s. This method allowed developers to build prototypes quickly and with ease and show customers the possible solution. Although it sped up the development process, the RAD method had no structure and wasn't uniform as the processes weren't common between teams.
Due to this, each organization had its own RAD practices. This non-uniformity made it difficult to recruit people who were RAD experts. To solve this problem, the DSDM consortium was formed. The objective was to jointly develop and promote an independent RAD framework. This gave birth to DSDM in 1994.
Initially, the DSDM practices were protected as intellectual property by the contributing companies and its use was limited to the Consortium members. In 2007, the contributing members made DSDM free to view and use, for all. You can find the complete DSDM handbook at thislink.
The Dynamic Systems Development Method has 6 project phases as follows:
- Pre-Project phase - to make sure that only the right projects are started with a proper objective.
- Feasibility phase - to check the technical and business feasibility of the proposed project
- Foundations phase - to understand the scope of work to be done, as well as how it will be carried out, by whom, when and where.
- Evolutionary development phase - to evolve the solution and create solution increments in an iterative manner.
- Deployment phase - this consists of assembling the various components, reviewing the product and deploying it before closing the project.
- The Post-project phase - to check how well the expected business benefits have been met.
In practice, this may not be a steady, one-directional approach and one might have to revisit a previous phase.
The 8 principles of Dynamic Systems Development Method are given as follows:
It is important to understand the business priorities and take any decision in accordance with it. Any move you make should be in line with the project goals. The project isn't the end, but rather a means to get to the end. You need to develop a valid business case and ensure continuous business commitment.
Delivering projects on time is non-negotiable and you need to ensure that your product is ready in due time. Use timeboxing techniques, plan them in advance and predict a time frame for completion. Delivery date shouldn't be changed at any cost but you might make some feature adjustments.
The stakeholders and developer team should be able to collaborate with ease when required. Through Facilitated workshops, project stakeholders can share their inputs with the development team. The team should have experts who are proficient in relevant subject matter.
The level of quality that will be delivered should be agreed upon early on. This cannot be a variable and all the work should be towards achieving this quality. Continuously testing is a must to ensure quality.
Understand the scope of the business problem and deliver business value early. However, do not overanalyze the requirement details and assess priorities with each increment.
It's quite certain that there would have been mistakes early on which need to be rectified as the details emerge. Get feedback from your customers and develop improvements accordingly. Continuous evolution enables you to develop more accurately.
You need to manage stakeholder expectations effectively and can't let poor communication come in the way of project success. Present your work early and repeatedly by making use of models and prototypes.
You need to be proactive when monitoring progress of your project, and establish control to show that you're in charge.
Originally published here.
P.S. If you liked this article, also check out these other product/ startup related articles: