Dynamic Systems Development Method

Dynamic Systems Development Method

After a long pause I would like to share an approach that we use for fast MVP design or at the start of a new project for customers willing to speed up their business with accurate, seamless and continuous innovations using programmable automation.

I think that most delivery managers would agree that a situation where you have to implement projects with limited time and budget, and a demand for real business value, can be described as figure skating on very thin ice.

In my experience the following principles that have proved to be very helpful in these types of situations:

  • Scrum is good but DSMS Atern is better
  • Plan & only then act
  • Behavior Driven Development
  • Deliver ASAP
  • Visualization and documentation is better than text

Why do we like DSDM Atern?

To understand the most important principles of Atern DSDM, let's start from one of my favorite diagrams.

Dynamic Systems Development Method

  • The implementation time and cost are fixed.
  • Quality has a priority over the system's full functionality.
Applying these principles will enable you to deliver a reliable product as soon as possible which can be used immediately without any doubts about its quality.

To ensure real business value, you should:

  • Focus on business needs
  • Deliver on time
  • Interact efficiently
  • Never compromise on quality

This approach, based on our experience, lets the customer understand that everything goes on as expected. And what is more important we didn't have any questions about coordinating the subsequent stages of work, there was no searching for additional budget funds to solve quality problems. This ideal picture of zero debts is marvelous, and Atern DSDM helps achieve such a state in a project.

The following diagram will help you comply with the principle "Plan first & then act".

Dynamic Systems Development Method Software Development


First we check the entire construction for implementability/need of implementation:

  • Redefine business needs
  • Estimate the business value that will really be required, involving people from business
  • Do everything in accordance with the DSDM techniques

Create a high-level functional model: a working prototype and models.

  • Coordinate the functionality and plans
  • Create a prototype, test the entire system
  • Analyze the prototype, together with business users

Then engage in design and development:

  • Coordinate the prototype's functionality and timing
  • Create a prototype for everyday use, then analyze the prototype together with business users, collect user feedback, test logs.

Final stage of implementation:

  • Coordinate the functionality with end users
  • Train users to use the system
  • Implement the system
  • Analyze the market

The stages allow you to simplify the processing of Change Requests, test and timely deliver a really needed product. All this is done in accordance with the following DSDM methods:

Time boxing

Achieve the main objectives: deliver on time, within budget, with high quality.

MoSCoW

This is a method of prioritizing in accordance with the following priorities:
MUST: a requirement MUST satisfy business needs.
SHOULD: SHOULD the requirement be met if the project's success does not depend on it?
COULD: COULD the requirement be left if it does not have impact on the project's business need?
WON'T: WON'T the fulfillment of the requirement be postponed if we have some time left?

Prototyping

Create prototypes, give them to real users, get feedback, and allow to actually test and use the product in advance.

Testing

Test continuously, after each iteration; only through testing we can achieve high quality.

Modeling

My regular readers (if there are any) remember that visualization is always extremely necessary. Visualize everything with diagrams to make the perception of information easier (see my article Documentation in Pictures).

In conclusion, I would like to mention the principle of Behavior Driven Development (BDD).
ВDD is not a silver bullet, it's a branching of TDD, but "test" is replaced by "behavior", which makes your thinking oriented to checking actually required functions. First, you write tests to check against the specifications, then implement the code of the system itself.

Thus, we work in close collaboration with the customer, supporting all stages with a prototype, striving for high quality standards, and fulfill the requirements that are really crucial for business, within time frames and budget.

Ivan Alyakskin
Software Consultant