Dynamic Software Development Method (DSDM)

Abstract

Chas and Failures!!! Those are the outcomes of so many projects in the era when there was no Software Development Methodology (SDM). Softwares and application development had no structure or flow, projects were only developed with hope of success and fear of failure with zero guarantee. Over the years a lot of SDM have been introduced all having thier uniqueness and promise to make development of software not only faster but easier and less prone to failure. Some of these SDM includes Extreem Programming (XP), SCRUM, Waterfall, V-Model and many more. As time has tell, there is no saying what method is best or most suitable as they all have thier advantages and disadvantages and therefore it is up to the development team to decide which is to be used and for what project.

Introduction

DSDM is a Rapid Application Development (RAD) method that embraces incremental prototyping and incremental approach to address software development failures such as missing deadline, over budgets, and lack of user involvement. Being a member of Agile Methods, DSDM's goal is to deliver projects on time and on budget while at the same time is flexible enough to accomodate change in requirements. This allows DSDM to be suitable for projects which requirements are unclear or can change anytime along the develoment phases.

Phases of DSDM

The major Phases of DSDM are:

  • Pre project phase
  • Lifecycle phase
  • Post project phase

Pre project phase

This is the start of every project. It is at this phase that the business problems are identified, team to handle the project is decided and many more by the management. The purpose of the pre project phase is to endure the commitment part of the project and build the foundation of which the project will be developed.

Lifecycle phase

DSDM has 4 major phases which includes:

  • Study
  • Functional Model Iteration
  • Design and Build Integration
  • Implementation

Study

This is the first phase of DSDM. It comprises of two components:

  1. Feasibility Study: In this phase the feasibility of the development is examined and decisions on how to proceed is decided. The team, budget, tools and everything that has to do with the project and available resources are all looked into and the the end of this phase a model or prototype/reports consisting of all the feasibility criterai are generated. It is also decided if RAD approach is suitable or not for the particular application.

  2. Business Study : All essential and business are studied and listed here by business and technical experts ina group discussion. It is then overlooked into if the technical capabilities available are sufficient to meet the business requirements. A prioritization (Usind MOSCOW which will be discussed later in this research)is then made upon the requirements and application & infrastructure diagrams are finalized.

Functional Model Iteration

This phase is all baout building a functional prototype and fine tunning it incrementally. The requirements gathered from previous phase are used to build this prototypes and then are studied by functional experts and users to determine its quality and further improvement possibilities. In this phase functional prototype is first identified based on the previoused prioritized requirements gathered and identifying the key functionalities to be built in the prototype. Next the functionalities are then finalized and a schedule is created and tasks are allocated to the team and deadlines are also generated. After these tasks are allocated, the developers will then create a prototype based on the functional requirements and some test is carried out along side (Unit test) while at the same time they try to improve the product.

After the prototype is completed (Ready for reviewing), the user is then allowed to give their reviews testing the functionalities of the product. This reviews allow the team to determing where the product is lacking and needs improvements. This process is iterated twice or more untill a part of the functional model is agreed upon. At the end of this phase the product will have some components containing the functionalities of the end product.

Design and Build Integration

The design and build integration phase is all about ensuring that the previous prototype are satisfactory, meet the functional requirements and is properly design and operational. Most importantly all the seperate units/functionalities from previous phases are now integrated to make a single fully operational system. This phase basic flow is like this: Firstly once the requirements have been modelled into a prototype, it is then decided which ones of these requirements needs to be in the final system. Next the prioritized sets of requirements are then thoroughly planned and a schedule is created and tasks allocated to the teams. After the tasks are completed. a protoype is then introduced to the testers and the end users for testing and feedbacks. These feedbacks are analysed and used to improve the system further.

Implementation

The implementation phase is the final phase. In this phase the functional modeling are further refined till they are satisfactory and meet the quality standards. The implementation phase is the phase where the product is ready and is deployed in live enviroment so users can give it a shot. Training may also be provided to the users and the feedbacks are reviewed to ensure that the business demands are met. These feedbacks are considered to be determining if the product was a success or failure.

Post project phase

The post project phase is the last phase of DSDM. Similar to implementation phase, the final built is validated by the technical teams and business operations team to ensure that it meets the business expectations. This phase also consists of further improvements/maintanance of the product, bugs are fixed, performance enhanced continously and thus incrementally.

Principles of DSDM

In other for Organisations embracing DSDM to take full advantage of its benefits, they have to follow the DSDm principles consisting of 8 principles which includes:

  1. Focus on Business Need: The main goal of every project is to archieve the bussiness goals. delivering this goals is highly important and in order to fufill this it is important to understand the true business priorities, establish a sound bussiness case, continous commitment and guarantee the minimum usable subset. By using Timeboxing, MoSCoW prioritisation this can be archieved.

  2. Deliver on time: It is highly desirable to deliver products on time as late delivery may affect the success of the product expecially where market oppotunities or legal deadlines are involved.

  3. Collaborate: Team work is the major factor of getting the job done faster and more efficiently. Collaboration encourages increased understanding, greater speed and shared ownership which enable teams to perform at a level that exceeds the sum of their parts.

  4. Never compromise quality: The level of the quality of the product must be delivered as agreed at the start of the project no more no less.

  5. Build incrementally from firm foundations: In order to deliver bussiness benefit in the early phase, building incrementally wins the confidence of the stakeholders while also allowing further bussiness benefits to be realized earlier.

  6. Develop iteratively: In order to converge on an accurate business solution Atern uses iterative development to deliver the right solution. In a changing world where requirements may change anytime, DSDM relies on iteration to address this problem in order to produce a better solution to the changing enviroment.

  7. Communicate continously and clearly: Poor communications can lead to project failure so DSDM is designed to improve communications among both teams and individuals.

  8. Demostrate Control: The project team expecially the project manager needs to be in control of the project at all times when monitoring and controlling progress in line with the Foundations Phase products, especially the Business Case.

Techniques of DSDM

  • Timeboxing

WHile traditional project management methods uses milestones, DSDM uses a technique known as timeboxing. This technique allocates a fixed time period called a "TimeBox" to each of the planned activity. It sole purpose is to have deliverables and meet deadlines as each timebox will have a deliverbales at the end of the schedule and budget plan.

  • MoSCoW

MosCow is a prioritising technique and is used to prioritize requirements based on their importance. It stands for M - Must Have, S - Should Have, C - Could Have, W - Wont Have. The requirements that falls into thge MustHave category are requirements the system cannot make do of, that is they are highly important or without them the system is rendered useless. An example of such requirment is in a search engine system. The system MustHave a search input where users can input a phrase to sdearch, if this is removed then the system isnt a search engine anymore. The ShouldHaves are requirements that are needed if possible, they are also important but not having them does not determine or affect the success of the project. CouldHaves are desirable but not necessary requirements, they will not affect the system as a whole but having tham may improve the user experience or customer satisfactory. CouldHaves are usualy considered if the budget hasnt been exhausted. Finally the WontHaves are the least critical requirements. They are labeled as "wonthaves" or not appropriate at this time and therefor are not included in the schedule/timebox. MoSCoW helps the customer to get rid of unnecessary requirements and spend less by prioritising the requirements. It also helps the team understand how much attention are payed to some requirements as they may be critical to the success of the project though all requirements are important, but they are prioritized to deliver the greatest and most immediate business benefits early.

  • Prototyping

Prototyping is the creation of prototypes at an early stage of development to understand the requirements of the system and discover the short commings in early stage. Prototyping also allows user involvement and allows users to test the system features at early stage of development. There are basically two types of prototyping, the first being Throwaway Prototype where the model dveeloped will be discarded at a point in the development and will not make it into the final system. The Second type of prototyping Evolutionary Prototyping, this type of prototyping invloves building a solid prototype that basically is the foundation of the system and then it is constantly refined and improvements will be applied on it. While throwaway prototypes are just to show ideas and easily discared (Such as paper prototypes), Evolutionary prototypes are more detailed and structured as the base of the system. Other types of prototyping are incremental prototyping and extreem prototyping.

  • Testing

This is a very important aspect of DSDM, as one of DSDM principle states "Never Compromise Quality" therefor to deliver a quality product testing is carried out on each and every iteration. There are various form of testing carried out here such as Fail fast, Collaborative testing, independent testing and many more.

Advantages and Disadvantages of DSDM

Advantages

  • High user involvement.
  • Basic Functionalities are delivered faster and even more at frequent intervals.
  • Projects are delivered on time and on budget.
  • Provides access by developers to end users.

Disadvantages

  • Not suitable for small organizations or one time projects.
  • As it is a newer model in comaprision to other traditional model such as the waterfall therefor it is not as common and easy to understand.
  • Because of its strictness and eight principles, DSDM can be restrictive and difficult to work with compared to other agile development software methods.

Conclusion

There is no perfect method, all methods have thier weakness and strength. However DSDM hyave proved to be very usefull and successfull in organizations and the rate of sucess of the project is high (As long as the 8 principles is followed and none ignored). Its incremental and iterative approach serves well in changing enviroment and some of it features is highly benefitial to the software development. Prototyping helps to provide the customer some features at early stage and helps to discover new features that have been missed from previous meetings, MoSCoW prioritisation also helps the customer to neglet unnecessary features and lower overall coast of the project.


All Rights Reserved