top of page
Search

CDP Visualization Model for Software Requirements

  • Writer: Daksh Gupta
    Daksh Gupta
  • Jan 16
  • 6 min read

Updated: Jan 17

Visualization  of the Software Requirements
Visualization of the Software Requirements

According to all statistics, SCRUM is among the most popular frameworks for Agile Software Development. It includes the idea of Product and Sprint backlogs, which consist of a prioritized list of software requirements written in the text format and one of the most commonly used text formats is known as "User Stories".


If you’re using SCRUM and maintaining a backlog in the form of user stories, then here is what you must know

User Stories are not part of SCRUM. It was created by eXtreme Programming (XP). SCRUM doesn’t recommend or mandates using User Stories or any specific way of representing the Backlog.


A Disclaimer on User Stories

My intention of this post is not to say that User Stories are bad, instead what I’m trying to explain is that there is a visual way of representing things which are more suited for software development of the day.
There is no harm in using User Stories if it serves the purpose or clearly explaining the end user requirements.

A Picture is worth Thousand Words


Research after research it’s proven that the a picture is indeed worth thousand words and the chances for humans to understand and comprehend something with pictures increases drastically

Picture depicting a context or a problem statements
Picture depicting a context or a problem statements
Software requirements often face challenges related to understanding and interpretation, particularly with brief text-based descriptions, which can be significantly reduced through visualization.
But we’re not doing it…!!! Why?

One reason could be that we lacked a universal, straightforward method to describe the requirements... But that was true only until now.




Introducing CDP

Let me introduce you to CDP (Consume → Does → Produce) Model of visually describing the software requirements.
Consume - Does - Produce
Consume - Does - Produce

This model is actually derived from well known IPO (Input → Process → Output ) model of software development, but changed to ( Consume → Does → Produce) to better reflect the nature, characteristics and complexities of software requirements.


So What exactly is CDP ?

CDP stands for : Consume → Does → Produce

All software is designed to perform specific tasks, whether it's as simple as adding two numbers or making a web request to stream a movie. Like anything else, software cannot operate without input and it must also product the output of the actions performed.

In case of summing two numbers, it needs numbers. To stream a movie, it needs the URL of streaming service, name , languages etc.
The working of the software is determined by the output it generates. Therefore, with Produce, we fulfill the intended purpose of the requirement.
The primary benefit of a Visual reference model is its ability to convey information to both software developers and stakeholders with minimal differences in both interpretations.
Here is how the generic CDP visualization shall look like



Illustration of the CDP Model of Requirement Visualization, depicting the flow from consumption to production through a process of transformation.
Illustration of the CDP Model of Requirement Visualization, depicting the flow from consumption to production through a process of transformation.

Okay, let’s see the same with some Examples


Let’s assume that you need to build your house. Here is how you’ll write the same in the form of a text based user story

As a house owner, I want to build my house, so that I can live in that

And here is how it will be represented visually using CDP model



CDP based Visual Requirement : Building a House
CDP based Visual Requirement : Building a House

The obvious and main difference is that in user stories, we can’t specify what all we want to get this done


What looks better ?

I’ll leave the answer to you, but here are a few specific things I’d like to mention


  1. The CDP (Consume → Does → Produce) Clearly explains what will be CONSUMED and what will bePRODUCED as part of the work.


  2. The DOES part can be a Grey box because it depicts WHAT and not HOW part where the development expertise kicks in to do the things in a better way.


  3. The biggest advantage of Consume → Does → Produce is a visual requirement mapping from top to bottom and their relationships which is intuitive and understandable.


INFOGRAPHIC
INFOGRAPHIC

How to generate smaller requirements from a bigger one?

It’s possible to create a hierarchy of requirements based by breaking a big requirement into smaller ones.


To better understand the same, let’s continue with our example of breaking the requirements of building the house using CDP, let’s break the building construction into two separate smaller requirements


  1. Building walls & CeilingS

  2. Painting


Here is how it can be depicted in the CDP Model


CDP Model : Generating smaller requirements from a bigger one
CDP Model : Generating smaller requirements from a bigger one

Here, we can not only connect the placement of requirements and comprehend their necessity, but we can also negotiate two entirely separate contracts: one for Building Walls and Ceiling and another for Painting. The dependencies are also very clear.


Not only that, a visual reference can very well tell what we can expect from the completion of a particular requirement.

If this visual reference model doesn't appeal to you, feel free to skip the remainder of the post :) as I'll be explaining the same concept using a real-world software example involving the creation of a cloud based micro-service(s).



Describing the requirement of Building a Micro-Service using CDP


Problem Statement:-

We have to build a Micro-Service (Let’s call it Date-Time Service) which tells the user about current data and time?

Let’s try depicting this requirements first by writing the same using text based user stories, which may look something like


As a Microservice, I want to provide current date and time so that system components can set the correct date and time

Now, Let’s see how it will look like with CDP based representation


CDP representation of Data Time MicroService
CDP representation of Data Time MicroService

Aren’t the requirement looks absolutely clear? (Yes/No)


By no means text based user stories can indicated so much details about the requirements in a simple picture like


  • How the Date Time MicroService shall be contacted (What it Consumes?)

  • How shall it responds to the request (What it Produces?)

  • And of course What it Does?


Not only this, if the requirement changes later on, It’s extremely easy to identify what is changing.


For example, If we decided to add GraphQL support in Date Time Microservice, we can depict the same easily just adding some color codes as depicted below



CDP of updated requirement in red color
CDP of updated requirement in red color

Unlike user stories, we’re not writing a new requirement, but adding additional info to the existing requirement which correctly depicts what additional things need to be done


Breaking the Microservice requirement into multiple smaller requirements


Similar to constructing a house, it's straightforward and intuitive to divide microservice requirements into several smaller ones. However, for the sake of simplicity, I will discuss just one internal requirement, which is as follows:


To know the current Date and Time, the microservice needs to connect to an NTP (Network Time Protocol) Server and here is how the CDP requirement model for the same shall look like



CDP Sub Requirement → NTP Connect & Fetch
CDP Sub Requirement → NTP Connect & Fetch

Something truly awesome about Consume → Does → Produce model


Imagine a scenario where the team implementing the NTP Connect & Fetch requirement doesn’t have Network & Server Info available at the time of development.


Things like this happens all the time during normal development, isn’t it?

So the team decides to either use local NTP Server or Mock or Stub out the same which allows them to complete all the complex functionalities, but they will have to come back later when the actual NTP server is available for testing the requirement.


Here is how it can be depicted in the CDP model



CDP Model of NTP Connect & Fetch with Mock
CDP Model of NTP Connect & Fetch with Mock

Now anyone who sees this requirement knows that the implementation as of now contains the mocked server and shall need to be removed later on. At a later point of time, when this requirement is picked up again, it will be only to remove the mocking / local server work around.


If I just talk about the transition of requirement, it will look like



CDP Requirement Transition
CDP Requirement Transition

The greatest advantage of the CDP model is that it not only illustrates the flow of implementations in relation to the requirements but also clearly demonstrates what is being done for both developers and stakeholders.


Consider handling these requirements with text based user stories, how easy of difficult will it be?


Try using this model and see if it works for you

If you want to know more or need some help in implementing this visual requirement model. Please do reach out to me.


Thanks for reading..


Daksh


 
 
 

Comments


CONTACT ME

  • Black LinkedIn Icon
  • X
  • GitHub
  • Building Products & Softwares that require Cognitive Intelligence 

  • I Build and Use A.I, not used by it

  • I help People in enhancing their Cognitive Product Development & Programming skills

Email:

© 2025 By Daksh Gupta

bottom of page