The method of dynamic systems development is a method that provides a framework for the agile development of software, supported by its continuous involvement of the user in an iterative and growing development. It is a defined conceptual and technological support structure, usually with concrete artifacts or software modules, that can serve as a basis for organization and development.
The Dynamic Systems Development Method uses 9 principles:
The user’s obligation to be involved:
It is considered the most important of the principles. This is because the involvement of the user in the development greatly reduces the number of errors and, therefore, the money and time used to correct them. In general, we work with a small number of selected users, making small periodic reviews. These users will be maintained during the development of the Software, thus obtaining a more accurate image of the desired software. Continuity, on the other hand, is one of the values that are applied in the principles.
Teams must have the power to make decisions.
In order to proceed as quickly as possible and without depending on other people, everyone must have the power to make decisions independently of the other team members. Require the authorization of other people to proceed to act as decisions made slows down the process of creating the software, therefore, all workers are given permission to make decisions that affect: Requirements in development. Requirements whose functionality is needed in future interactions. Prioritization of requirements and characteristics.
Realization of early deliveries.
Early deliveries ensure rapid detection of errors so that they are corrected and reversed quickly before the repair cost is too high. These deliveries will affect both the software and the documentation that will be delivered with the finished software.
The deliveries that are accepted must be adapted to the company.
The software that we deliver must be able to satisfy the needs of the company. In general, Refactoring, designing and improving functions are tasks that are performed only once in the software modeling systems, at the beginning, such as design, or at the end, such as refactoring or improving functions. However, the DSDM maintains that these tasks must be part of the software’s life cycle and must be tasks that must be repeated once with each of the deliveries that the company has accepted in order to achieve greater adaptation to the company and, as we have said before, that errors do not get much bigger and their repair cost does not rise too much. On the other hand, repeating these phases over and over again achieves a much better approach to the software that the company wants.
The development is Iterative and Incremental.
The Iterative and Incremental development is the one that best adapts to all the previous principles, and also facilitates the division of tasks for a better and easier organization of work. In this development the software is getting bigger with each iteration until getting the last one that the software has been completely adapted to what the company needed. This principle is based on the concept that all software is subject to change. Finally, the smaller the iterations, the easier it will be to identify and make the changes that need to be made.
All the changes that are made during the development must be reversible.
As the title itself indicates, any change we make must be able to be reversed easily and without incurring excessive costs. This is because the previous principles make the changes arise continuously and if you do not have control over them, the time it takes to complete them may be excessive. Therefore, all the changes that are made must be written thinking that they are simple to eliminate or revert. It is true that this principle can make us do work for nothing if our changes are reversed at the end, but without it, the principles followed by the DSDM method would not be applicable since it would generate very large work from continuous communication with user and client.
The requirements are described at a high level and will have a baseline.
The DSDM so far proposes that there be great freedom in changing the requirements. To limit them, a series of high-level requirements are established at the beginning of the project, forming a baseline on which to develop.
The tests are integrated throughout the life cycle.
In general, testing is one of the last phases of the software engineering process, which are carried out after coding. However, the DSDM model argues that in order to achieve a rapid correction of errors, the tests must be integrated into the earliest stages of the development and repeated on multiple occasions during the software’s life cycle.
Cooperative and collaborative approach.
Cooperative programming is commonly used in agile development methods. These techniques accelerate the resolution of problems and the construction of a more efficient software with fewer errors. The most common is the programming in pairs in which, while one of the two people codifies, the other thinks and resolves how to perform the algorithm or the class that must be written next in addition to reviewing and helping his partner and vice versa.
The DSDM method provides a framework of three phases consisting of:
Pre-Project Phase: In this phase several suggestions of candidate projects are produced, among which a candidate is chosen. In addition, in this phase an estimate of the funds necessary to develop the project is made and it is decided whether the project is going to be carried out or not.
Phase of the project life cycle: The objective of this phase is the construction of the project proposed in the Pre-Project phase.
This phase is subdivided into phases:
- Feasibility study: In this phase, meetings are held to determine those ideas that have nothing to do with the project itself, but with the management of the project. The answers will help to direct the development of the project, determining its costs, adapting it to the DSDM model, the risks that exist, etc… producing a feasibility document.
- Study of the business: It is a document that extends to the study of flexibility and that is realized only it has been decided that the project can be developed through DSDM. In this phase we will try to define characteristics of the project, as well as the needs that the users of the project expect. At the end of the study a list of requirements will be determined, which will be prioritized according to their need for the development of the rest of the requirements.
- Iteration of the functional model: In this phase the requirements identified in previous phases are collected and transformed into Functional Models. To do this, functional prototypes of the requirements are created to give the user an idea of how the application will work and thus satisfy principle number 1. Functional prototypes are reviewed by different groups of users who value and certify the quality of the prototype.
- Iteration of design and development (Design & Build Iteration): The main task of this phase is to transform the functional models obtained from the previous phase and complete them so that they fully satisfy the needs of the user. To do this, we will create design Prototypes, and as in the previous phase, we will verify them with the users.
- Implementation: Finally, in the implementation phase, the users verify that the prototypes comply with the desired and the implementation is carried out, as well as the training of the future users so they can use the application.
Phase of the post-Project: This phase is used to verify that the product works correctly and efficiently. In this phase maintenance tasks are performed, and software improvement is required. In general, this phase occurs during the 6 months following the delivery of the project to the client.
DSDM only requires that each step of the development be completed enough to begin the next step. In this way a new iteration of the project can begin without having to wait for the previous one to be completely completed. And with each new iteration the system is improved incrementally. Remind yourself that business needs change constantly and at any pace over time.