BDD-Behavior driven development is not a development methodology or not a direct replacement of scrum,RUP,RAD. It is a model to design our software. It also does not depend on any technology.
BDD is all about implementing an application by describing its behaviors from the perspective of its stakeholders.It focuses on obtaining a clear understanding of desired software behavior through discussion with stakeholders. It is also a communication and collaboration framework for developers,QA and non technical business participants in the software projects.
BDD can be further refined into
- TDD- Test driven development
- DDD- Domain driven development
- ATDD- Acceptance test driven development.
BDD tries to resolve two core issues of software development
- Not building a correct software
- Not building the software correct.
Most projects has its vision in a sort format. Only the management knows it. Sometimes they have it in back of their mind. As a result team does not know the real objective on which they are working/testing. This unclear way of articulating of vision leads to a poorly designed software that results bad code and delivers lot of bugs. It reduces the ability to scale up with the growing volume of requirements. With such system in place, it is very tough for implementing new features and even fixing bug. Developers will be busy to fix bug rather implementing new feature. After such costly development process, a lengthy development process follows. As a result the features get implemented very late. Product will also be late in market.
Such kind of system does not deliver at all or does give a little value to the business. That becomes a risk factor for business.
A vision statement is undoubtedly an anchor point for a business strategy plan. This vision statement gives a clear idea of the way company is moving . It is said when employees are more attached to company’s vision and goal, they are more productive. Here is a list of guideline to write a vision statement.
- It should be short ,simple and for a limited time frame (max 3 to 5 years)
- Very specific to business and stress on the unique outcome and the success factors.
- The words used must not be open in understanding and must be in present tense.
- This can be aligned to values
- Nowadays business scenario try to quantify the outcome.So vision statement can be quantified. (high level)
- Vision statement should be related to human or real world aspect.
- A graphical representation (may not be as perfect as drawn with graphical tool) is a plus.
On the contrary, BDD produces a clean code ,living documentation with CI and provides very fast feedback.As a result implementing new feature and bug fixes become easy.In BDD ,key stakeholders knows the business goals that helps the team to deliver effectively.To start for an effective software, we need have vision statement correct in BDD. Even though Vision statement is governed by values, it should be clear ,simple and concise in nature.It solely focuses on the objective rather the way it will be implemented.
There is no sort of strict template to write a vision statement as long as the statement carries out the message to the team and they understand to broader aspect to why business wants something.
I prefer to use Geoffrey A Moore’s template to write Vision statement:
It covers everything starting from product info to target to customer to key benefits and what best we offer.
The template is as follows for a good vision statement…
- FOR <Whom-the target customer>
- WHO < needs something or what they need>
- THE <Product name > is a <product category> basically what are the things we are providing.
- THAT <key benefit ,compelling reason to uptake our product> what is so good about the product.
- UNLIKE <primarily the competitive alternative > what other competitors are going
OUR PRODUCT <main differentiation statement>
- Why should customer buy our product or take our solution
Now lets take a live example :
XYZ bank wants to maximize their Credit card usage and they have come up with unique solution of credit points. User can use the credit points to buy something . It is kind of added advantages for customer.
To implement this feature the vision statement could be as follows:
FOR Credit card Users of xyz bank
WHO wants to be rewarded for spending money with XYZ credit card
THE xyz bank’s credit card usage will be a loyalty program
THAT lets the members easily and conveniently spend their accumulated points in real times to purchase some real things from XYZ bank’s gift site
UNLIKE other bank’s loyalty program
OUR PRODUCT lets them accumulate their point upon purchase of anything using our bank’s credit card and allows them to shop online real things.
However there is another version is also available:
it is as follows:
THE OUTPUT -What customer is going to get.
THE TWIST- What condition
THE QUANTIFICATION- What amount of value customers will get
THE HUMAN CONNECTION- Human relatable connection statement
If we place xyz bank’s vision statement in this format, It can be something below:
THE OUTPUT -Customers get reward points by which they can purchase something new and real
THE TWIST- When they spend xyz bank’s Credit card in any transaction
THE QUANTIFICATION- The reward is 2X as they spend
THE HUMAN CONNECTION- That makes every customer special and delightful.
A big scenario is often divided into smaller pats called stories /tasks. A story or task should have an acceptance criteria and they are expressed in a simple formal BDD style. They acts as an entry point for the development team to start . A low level BDD tool spock to help in design document and verify implementation,while working with all stakeholders like-Business owners,customers,Business analyst. It gives a concise vision of the requirements that propagates a value. The team will have a major connect and can determine what exactly they need to build.Based on the discussion the essential features like skeleton can be made.
The structure of a valid BDD..
In order to <do something>—mainly the business outcome
As a <stakeholder>—Who needs it
I need to do <Something>—The exact process to get it
and <other outcomes>