Part I- Behaviour Driven Development
Part II - Small Changes Big Impacts
Part III - Higgs Boson , The Goddam Particle.
PART I: Behaviour Driven Development
A Software Development Methodology
Software Development Methodologies
Definition: A Framework used for planning and controlling the process of developing a software
Waterfall
Software Development Methodologies
Iterative
Software Development Methodologies
Software Development Methodologies
doing extensive code review
requirements as time passes
Software Development Methodologies
Scrum is an iterative and incremental agile software development method.More definitive sprint commitments than XP
Why Re-Discover?
Quality Software - Give what is wanted and what is asked for
Test Driven Development (TDD)
TDD
Advantages of TDD
TDD
Tools for TDD - Junit,NUnit,TestNG
Sample
public void testAddTwoNumbers(){
int result = Addition.add(1,2);
Assert.asserEquals(3,result);
}
Addition.java
public static int add(int a,int b){
return -1;
}
User Stories are Awesome
TDD expects rather DEMANDS that a developer understand the requirements better to write better tests by which in turn drives development
Imagine this....
Developer: Hi BA, we are doing this TDD, can you write tests explaining the requirements as units in unit tests using Junit
BA: What the @#@$? Why should I !!!? I
can give you great documents explaining them all
Developer: Ok ..Sounds good.I will read them write tests and do the development
A month later...
User Stories are Awesome
"This is not what i asked for" says BA and the developer says "but this is what i understood"
User Stories are Awesome
As a <who>
I need <what>
So that <what i can do> and
Acceptance Criteria.
Example:
As a user closing the application,
I want to be prompted to save anything that has changed since the last save
so that I can preserve useful work and discard erroneous work.
Acceptance Criteria
The user exits and the unsaved information is saved.
Is this the Holy Grail ?
HOLY GRAIL ? sadly NO.
Doesn't test the feature as a whole but only in Units.Doesn't actually test the story
Takes a developer to understand a failure because the test names are method names
Doesn't really fill all the gaps in understanding the requirement it just shortens the gap.
Behaviour Driven Development by Dan North
Simple Definition: Behavior - driven development is about implementing an application by describing its behaviour from the perspective of its stakeholders
A bit more complex one: BDD is a second-generation, outside–in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.
Definition in the current context:BDD is a software development methodology based on test-driven development (TDD).It combines the general techniques and principles of TDD with ideas from domain-driven design and object-oriented analysis and design to provide software developers and business analysts with shared tools and a shared process to collaborate on software development.
Behaviour Driven Development
BDD is a second-generation, outside–in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.
You are doing second generation development process if you use:
- TDD
- Acceptance Driven Test Planning
- Continuous Integration
Side kick- DDD
Wiki Definition: Domain-driven design (DDD) is an approach to developing software for complex needs by deeply connecting the implementation to an evolving model of the core business concepts. The premise of domain-driven design is the following
Core pieces:
Behaviour Driven Development
BDD is a second-generation, outside–in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.
Development delivers runnable tested features - software that matters
Stories describing Features from Stakeholders point of view.
Behaviour Driven Development
BDD is a second-generation, outside–in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.
pull-based - like scrum where developer volunteers to take a task not voluntold
multiple-stakeholder, multiple-scale - Multiple stakeholders must define an application's behaviour which means a user story written should have inputs ranging from PDM,Sales,Accounting,Security,DataCenter,Legal,Customer Support,Web Design etc
BDD - Lets Dive in
It starts with the change to the User Story format.
BDD Mandates..
Stakeholders describe features and outcomes in 1st draft
Blend terms from multiple domains to create a ubiquitous language and use that to write stories (DDD)
QA identifies testable context , dev provides the estimates and feasibility to fit that story in a sprint,Web design maps user interaction onto UI elements
BDD Story Format
Title(one line describing the story)
Narrative: Described as a user Story
In order to [benefit] :uses a ubiquitous language developed by the team
As a [role] :Benefit is the rationale , might be testable
I want to [feature] : Should fit in a sprint , otherwise break up into smaller stories
Acceptance Criteria:
Scenario: Title : Describes the outcome of an event or behaviour
Given[context] : Context the event is gonna happen
And[some more context]: Must be testable
When[event] : Not always simple
Then [outcome]
And [another outcome]
Scenario:.....
BDD Story Format
Scenario : Payor has no sufficient funds...
Applying TDD to BDD
Now that we have BDD format story , the next step is to apply TDD to the this Story. After all, BDD is TDD applied to the behaviour of the application rather than specification.
Traditional TDD
Applying TDD to BDD
The BDD Cycle
BDD Tooling
JBehave
EasyB
Cucumber
BDD Tooling - JBehave
It will seem difficult and we might think why to go through all this pain but
TESTING THE BEHAVIOUR OF THE APP DURING DEV IS EVEN BETTER
BDD - Summary
Pros:
Cons:
End of the day it is another step in the direction of producing a quality software.
PART - II
Small things.Big impacts
We are Sorry Sea Turtles
Lays eggs on the seashore
After hatching in the night , the newborn's evolutionary instincts push it to move towards the brightest light in view, which naturally would be the sun or the moon, leading them toward the ocean horizon and into their new ecosystem, they got to reach the sea at least within a minute.
Unfortunately the city lights misguide them towards the cities instead of the sea and they eventually die
Old Age Homes and Orphanage Together - Smart
Don't throw , RePair - Welcome to Repair Café
"The raw materials to make things you use are not going to last forever so you better reuse what you have" - Says a self motivated community in Amsterdam.
People from various walks of life meet at a place (Repair Café) say one knows electronics , the other knows vessels , the other knows toys ..etc and they all roll the sleeves up for repairing.
Philosophy:
You fix what you know to fix .
You get yours fixed from who knows to fix.
PART - III
Higgs Boson - Goddamn Particle
Periodic table
Every one of us at some point in our life must have seen this. Some Hated it and Some Loved it.
Standard Model of Particles
Quantum Physics: This is relatively new and yes there are people out there who love even this.
Fundamental Forces of Nature
Gravity
The gravitational force is weak, but very long ranged. Furthermore, it is always attractive, and acts between any two pieces of matter in the Universe since mass is its source.
A childs play can defeat gravity, thats why it is the weakest.
Electromagnetic Force
Strong Force
Weak Force
Link between Standard Model and Forces of Nature
Bosons(Force carriers) - Forces link
What is Higgs Boson and what does it do ?
Higgs Boson
How to verify its existence ?
Ok it exists so What's in it for me ?
Happy Scientists
Thank You
for your patience.