SlideShare a Scribd company logo
1 of 111
Download to read offline
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Behaviour-Driven Architecture
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Jan Molak
consultant, trainer, lead dev of Serenity/JS
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Behaviour-Driven Architecture
BDD
UCD
XPDDD
EA
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Full-Stack JavaScript
=
new opportunities
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Full-Stack JavaScript
=
new Challenges
serenity-js.org#SerenityJS #FullStackCon @JanMolak
JavaScript !== toy
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Web development in 1998.
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal?ā€Ø
Make the machine obey ;-)
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Testability?ā€Ø
It works on my machine!
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Maintainability?
Iā€™ll just write a new one,
itā€™s fun!
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Team work?
Nah, theyā€™d slow me down!
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Fast forward to 2018ā€¦
serenity-js.org#SerenityJS #FullStackCon @JanMolak
We need Architecture!
serenity-js.org#SerenityJS #FullStackCon @JanMolak
What is architecture?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
ā€œ ā€Highest-level breakdown of a system into partsā€Ø
and the decisions that are hard to changeā€Ø
- Martin Fowler
serenity-js.org#SerenityJS #FullStackCon @JanMolak
ā€œ ā€The shared understanding of expert developers
working on a project.ā€Ø
- Ralph E. Johnson
serenity-js.org#SerenityJS #FullStackCon @JanMolak
ā€œ ā€An evolutionary architecture supports guided,
incremental change across multiple dimensions.ā€Ø
- Neal Ford, Rebecca Parsons, Patrick Kua
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Architecture is about:
- decomposition
- shared understanding
- guided evolution
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Decomposition
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How do you decompose a problem?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How do you decompose a problem?
- I look at the requirements
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How do you decompose a problem?
- I look at the requirements
- OK, then what?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How do you decompose a problem?
- I look at the requirements
- OK, then what?
- I use my experienceā€¦
serenity-js.org#SerenityJS #FullStackCon @JanMolak
n developers => n2 designs*
* I made this one up, but I bet itā€™s pretty close
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How do you build a shared understanding?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How do you build a shared understanding?
- We agree on how to Build it Right:ā€Ø
coding standards,ā€Ø
design patterns,ā€Ø
architectural patterns,ā€Ø
test coverageā€¦
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How do you build a shared understanding?
- We agree on how to Build it Right:ā€Ø
coding standards,ā€Ø
design patterns,ā€Ø
architectural patterns,ā€Ø
test coverageā€¦
- ok, but how do you know youā€™re buildingā€Ø
The Right Thing?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
ā€œ ā€On average some 45% of the features delivered ā€Ø
into production are never used.ā€Ø
- The Standish Groupā€™s CHAOS Report 2002
serenity-js.org#SerenityJS #FullStackCon @JanMolak
The Three Pillars of
Architecture
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Image credit: Benh LIEU SONGĀ 
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Form
- structure made of stone
- Organised into arches
- Implements a 3-tier architecture
- Top tier supports a water conduit
- Bottom tier integrates with the river
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Function
- continuously delivers fresh water
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Context
- who are the users?
- how much water are we talking?
- what if the spring dries out?
- how do we support it when it goes live?
- ā€¦ does it have to be an aqueduct?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Context
Function
Form
The Three Pillars of Architecture
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Informs
Drives
Influences
Context
Function
Form
The Three Pillars of Architecture
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Behaviour-Driven Development
serenity-js.org#SerenityJS #FullStackCon @JanMolak
ā€œ ā€Behaviour-Driven Developmentā€Ø
BDD is a practice of using Cucumber to writeā€Ø
slow and ļ¬‚aky automated tests, ā€Ø
driving the fully-assembled system through its UI.
serenity-js.org#SerenityJS #FullStackCon @JanMolak
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Strategic BDD
Tactical BDD
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Impact Mapping
serenity-js.org#SerenityJS #FullStackCon @JanMolak
ā€œ ā€Impact Mapping is a collaborative way to help us
understand the bigger picture, describe roadmaps
and ļ¬gure out how weā€™re going to haveā€Ø
a huge impact with our software and achieve
something great instead of just shipping features.ā€Ø
- Gojko Adzic
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Measurable, clear goal

with a speciļ¬c time scale
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Measurable, clear goal

with a speciļ¬c time scale
People who can help usā€Ø
achieve the goal
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Measurable, clear goal

with a speciļ¬c time scale
People who can help usā€Ø
achieve the goal
Personas Market segments
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Measurable, clear goal

with a speciļ¬c time scale
People who can help usā€Ø
achieve the goal
Personas Market segments
How should peopleā€™s

behaviour change?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Measurable, clear goal

with a speciļ¬c time scale
People who can help usā€Ø
achieve the goal
Personas Market segments
How should peopleā€™s

behaviour change?
What can we do?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Concrete Example
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digitalā€Ø
documentsā€Ø
only
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digitalā€Ø
documentsā€Ø
only
Customers
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digitalā€Ø
documentsā€Ø
only
Customers
Come back more frequently
Donā€™t lose their documents
Read their documents
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digitalā€Ø
documentsā€Ø
only
Contentā€Ø
Editors
Customers
Come back more frequently
Donā€™t lose their documents
Read their documents
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digitalā€Ø
documentsā€Ø
only
Contentā€Ø
Editors
Customers
Come back more frequently
Donā€™t lose their documents
Manage all templatesā€Ø
in one place
Read their documents
Automate documentā€Ø
delivery
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digitalā€Ø
documentsā€Ø
only
Contentā€Ø
Editors
Customers
Documentā€Ø
Library
Come back more frequently
Donā€™t lose their documents
Manage all templatesā€Ø
in one place
Read their documents
Automate documentā€Ø
delivery
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digitalā€Ø
documentsā€Ø
only
Contentā€Ø
Editors
Customers
Documentā€Ø
Library
Notifications
Come back more frequently
Donā€™t lose their documents
Manage all templatesā€Ø
in one place
Read their documents
Automate documentā€Ø
delivery
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digitalā€Ø
documentsā€Ø
only
Contentā€Ø
Editors
Customers
Documentā€Ø
Library
Notifications
Come back more frequently
Donā€™t lose their documents
Manage all templatesā€Ø
in one place
Read their documents
Documentā€Ø
GeneratorAutomate documentā€Ø
delivery
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digitalā€Ø
documentsā€Ø
only
Contentā€Ø
Editors
Customers
Documentā€Ø
Library
Notifications
Enterprise CMS
Come back more frequently
Donā€™t lose their documents
Manage all templatesā€Ø
in one place
Read their documents
Documentā€Ø
GeneratorAutomate documentā€Ø
delivery
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Impact Mappingā€Ø
and Architecture
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digitalā€Ø
documentsā€Ø
only
Contentā€Ø
Editors
Customers
Documentā€Ø
Library
Notifications
Enterprise CMS
Come back more frequently
Donā€™t lose their documents
Manage all templatesā€Ø
in one place
Read their documents
Documentā€Ø
GeneratorAutomate documentā€Ø
generation
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
System Context
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Deliverables
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Automated Document Delivery
In order to reduce cost and environmental impact
As a responsible financial company
Weā€™d like the customer documents
to be generated automatically
And delivered in a digital format
When specified business events occur
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Feature Mapping
serenity-js.org#SerenityJS #FullStackCon @JanMolak
ā€œ ā€
Feature Mapping is a light-weight, outcome-focused,
highly collaborative requirements discovery practice
that helps build a deep collective understanding of
customer needs, and that provides a smooth path to
high quality executable speciļ¬cations.

- John Ferguson Smart
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Automated Document Delivery
In order to reduce cost and environmental impact
As a responsible financial company
Weā€™d like the customer documents
to be generated automatically
And delivered in a digital format
When specified business events occur
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- Could you give me an example of that?
- Service Agreement should be deliveredā€Ø
when the Customer registers with our service
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Connie Registersā€Ø
with our service
Actors: Connie the Customer
Service Agreementā€Ø
Upon registration
Examples: Tasks: Consequences:
Connie sees the
Service Agreement
in her Library
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- Whatā€™s the role of the Content Editor ā€Ø
in that process then?
- Content editors prepare the templates ā€Ø
based on which the documents should be
generated
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Connie Registersā€Ø
with our service
Actors: Connie the Customer, Edna the Editor
Service Agreementā€Ø
Upon registration
Examples: Tasks: Consequences:
Connie sees the
Service Agreement
in her Library
Edna prepares the
template for the
Service Agreement
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How is the Service Agreement connectedā€Ø
with the registration event?
- Edna will have to configure thisā€¦ somehow.ā€Ø
It would be nice if she could ā€Ø
use the CMS for that.
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Connie Registersā€Ø
with our service
Actors: Connie the Customer, Edna the Editor
Service Agreementā€Ø
Upon registration
Examples: Tasks: Consequences:
Connie sees the
Service Agreement
in her Library
Edna prepares the
template for the
Service Agreement
Edna configures
Service Agreement
to be delivered
upon customer
registration
How is she going
to do that?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- We seem to be relying on that CMS quite a lot.
What if it goes down?
- We should retry the process when itā€™s back upā€Ø
and notify the customer when the document is
delivered
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Connie Registersā€Ø
with our service
Actors: Connie the Customer, Edna the Editor
Service Agreementā€Ø
Upon registration
Examples: Tasks: Consequences:
Connie sees the
Service Agreement
in her Library
Edna prepares the
template for the
Service Agreement
Edna configures
Service Agreement
to be delivered
upon customer
registration
CMS is down
Connie is notifiedā€Ø
when the documentā€Ø
is ready
- || - - || -- || -
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- Should connie be notified when any document is
delivered, or just in this case?
- Well, some of the documents will be triggered
without her action.ā€Ø
Thatā€™s the case with monthly, quarterly and
annual statements.ā€Ø
So yes, she should be notified when any
document is delivered.
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Connie Registersā€Ø
with our service
Actors: Connie the Customer, Edna the Editor
Service Agreementā€Ø
Upon registration
Examples: Tasks: Consequences:
Connie sees the
Service Agreement
in her Library
Edna prepares the
template for the
Service Agreement
Edna configures
Service Agreement
to be delivered
upon customer
registration
Customer ā€Ø
is notified whenā€Ø
the Documentā€Ø
is delivered
Connie is notifiedā€Ø
when the documentā€Ø
is ready
- || - - || -- || -
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Making specifications
executable
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Connie Registersā€Ø
with our service
Service Agreementā€Ø
Upon registration
Examples: Tasks: Consequences:
Connie sees the
Service Agreement
in her Library
Edna prepares the
template for the
Service Agreement
Edna configures
Service Agreement
to be delivered
upon customer
registration
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Connie Registersā€Ø
with our service
Service Agreementā€Ø
Upon registration
Examples: Tasks: Consequences:
Connie sees the
Service Agreement
in her Library
Edna prepares the
template for the
Service Agreement
Edna configures
Service Agreement
to be delivered
upon customer
registration
Scenario:	Service	Agreement	is	delivered	upon	customer	registration	
Given	Edna	has	prepared	a	template	for	the	Service	Agreement	
		And	configured	the	Service	Agreement	to	be	delivered	upon	customer	registration	
	When	Connie	registers	with	our	service	
	Then	she	should	see	the	Service	Agreement	in	her	Library
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Testing at the right level
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Scenario:	Service	Agreement	is	delivered	upon	customer	registration	
Given	Edna	has	prepared	a	template	for	the	Service	Agreement	
		And	configured	the	Service	Agreement	to	be	delivered	upon	customer	registration	
	When	Connie	registers	with	our	service	
	Then	she	should	see	the	Service	Agreement	in	her	Library
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Given	Edna	has	prepared	a	template	for	the	Service	Agreement
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Given	Edna	has	prepared	a	template	for	the	Service	Agreement
Browser
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Given	Edna	has	prepared	a	template	for	the	Service	Agreement
API
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Given	Edna	has	prepared	a	template	for	the	Service	Agreement
MOCK SERVER
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Given	Edna	has	prepared	a	template	for	the	Service	Agreement
Test CLIENT
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
When	Connie	registers	with	our	service
Customer
Accounts
Registers
an account
Emits
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
When	Connie	registers	with	our	service
Customer
Accounts
Registers
an account
Emits
Browser
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
When	Connie	registers	with	our	service
Customer
Accounts
Registers
an account
Emits
API
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
When	Connie	registers	with	our	service
Customer
Accounts
Registers
an account
Emits
Emit Event
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
When	Connie	registers	with	our	service
Customer
Accounts
Registers
an account
Emits
Test Event Emitter
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Then	she	should	see	the	Service	Agreement	in	her	Library
Customer
Accounts
Registers
an account
Emits
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Then	she	should	see	the	Service	Agreement	in	her	Library
Customer
Accounts
Registers
an account
Emits
Browser
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Then	she	should	see	the	Service	Agreement	in	her	Library
Customer
Accounts
Registers
an account
Emits
API
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Then	she	should	see	the	Service	Agreement	in	her	Library
Customer
Accounts
Registers
an account
Emits
Test Client
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Test scope can be managed!
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Customer
Accounts
Registers
an account
Emits
Test Scope
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Customer
Accounts
Registers
an account
Emits
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Customer
Accounts
Registers
an account
Emits
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise
CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Customer
Accounts
Registers
an account
Emits
serenity-js.org#SerenityJS #FullStackCon @JanMolak
How do you implement it?
const	Edna			=	Actor.named(ā€˜Ednaā€™),ā€Ø
						Connie	=	Actor.named(ā€˜Connieā€™);
Scenario:	Service	Agreement	is	delivered	upon	customer	registration	
Given	Edna	has	prepared	a	template	for	the	Service	Agreement	
		And	configured	the	Service	Agreement	to	be	delivered	upon	customer	registration	
	When	Connie	registers	with	our	service	
	Then	she	should	see	the	Service	Agreement	in	her	Library
const	Edna			=	Actor.named(ā€˜Ednaā€™).whoCan(ControlTheMockServer()),ā€Ø
						Connie	=	Actor.named(ā€˜Connieā€™).whoCan(BrowseTheWeb.using(browser));
Scenario:	Service	Agreement	is	delivered	upon	customer	registration	
Given	Edna	has	prepared	a	template	for	the	Service	Agreement	
		And	configured	the	Service	Agreement	to	be	delivered	upon	customer	registration	
	When	Connie	registers	with	our	service	
	Then	she	should	see	the	Service	Agreement	in	her	Library
const	Edna			=	Actor.named(ā€˜Ednaā€™).whoCan(ControlTheMockServer()),ā€Ø
						Connie	=	Actor.named(ā€˜Connieā€™).whoCan(BrowseTheWeb.using(browser));	
Edna.attemptsTo(	
		PrepareDocumentTemplate.for(ā€˜Service	Agreementā€™),	
		SetDocumentDeliveryTrigger.for(ā€˜Service	Agreementā€™).to(CustomerRegistered),	
);
Scenario:	Service	Agreement	is	delivered	upon	customer	registration	
Given	Edna	has	prepared	a	template	for	the	Service	Agreement	
		And	configured	the	Service	Agreement	to	be	delivered	upon	customer	registration	
	When	Connie	registers	with	our	service	
	Then	she	should	see	the	Service	Agreement	in	her	Library
const	Edna			=	Actor.named(ā€˜Ednaā€™).whoCan(ControlTheMockServer()),ā€Ø
						Connie	=	Actor.named(ā€˜Connieā€™).whoCan(BrowseTheWeb.using(browser));	
Edna.attemptsTo(	
		PrepareDocumentTemplate.for(ā€˜Service	Agreementā€™),	
		SetDocumentDeliveryTrigger.for(ā€˜Service	Agreementā€™).to(CustomerRegistered),	
);	
Connie.attemptsTo(	
		RegisterWithTheService.as(ā€™Connieā€™).withEmail(ā€˜ā€¦ā€™).withPassword(ā€˜ā€¦ā€™),	
		See.if(DocumentLibrary.documents(),	contain(ā€˜Service	Agreementā€™),	
);
Scenario:	Service	Agreement	is	delivered	upon	customer	registration	
Given	Edna	has	prepared	a	template	for	the	Service	Agreement	
		And	configured	the	Service	Agreement	to	be	delivered	upon	customer	registration	
	When	Connie	registers	with	our	service	
	Then	she	should	see	the	Service	Agreement	in	her	Library
serenity-js.org#SerenityJS #FullStackCon @JanMolak
RegisterWithTheService.as(ā€™Connieā€™).withEmail(ā€˜ā€¦ā€™).withPassword(ā€˜ā€¦ā€™)
const	RegisterViaUI	=	(details)	=>	Task.where(`#actor	registers	via	UI`,	ā€Ø
		Open.browserOn(`https://myservice.com`),	
		Enter.theValue(details.username).into(RegisterAccountWidget.Username_Field),	
		Enter.theValue(details.email).into(RegisterAccountWidget.Email_Field),	
		Enter.theValue(details.password).into(RegisterAccountWidget.Password_Field),ā€Ø
		Click.on(RegisterAccountWidget.Submit_Button),ā€Ø
);
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Customer Accounts Registers an
account
Emits
Browser
serenity-js.org#SerenityJS #FullStackCon @JanMolak
RegisterWithTheService.as(ā€™Connieā€™).withEmail(ā€˜ā€¦ā€™).withPassword(ā€˜ā€¦ā€™)
const	RegisterViaAPI	=	(details)	=>	Task.where(`#actor	registers	via	REST	API`,	ā€Ø
		Post.item(details).on(`https://myservice.com/api/accounts`),ā€Ø
);
Documentā€Ø
Library
Notificationsā€Ø
System
Enterprise CMS
Documentā€Ø
Generator
Customer
Contentā€Ø
Editor
Editsā€Ø
documentā€Ø
templates
Sends email Reads documents
ā€œPrintsā€ā€Ø
documents
Delivers documents
Notifies aboutā€Ø
new documents
Triggers
Business Event
Customer Accounts Registers an
account
Emits
API
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Living Documentation
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Closing thoughts
serenity-js.org#SerenityJS #FullStackCon @JanMolak
When working on a new feature ask:
- Whatā€™s the business goal? Why is this needed?
- Whatā€™s the context? Who are the ā€œusersā€?
- What If something doesnā€™t go according to plan?
- How are we going to test it? support it? ā€Ø
measure the impact of our work?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Thanks!
@JanMolak

janmolak.com

serenity-js.org

More Related Content

What's hot

Charlie Talk - JQL In A Nutshell
Charlie Talk - JQL In A NutshellCharlie Talk - JQL In A Nutshell
Charlie Talk - JQL In A NutshellAtlassian
Ā 
Node Architecture and Getting Started with Express
Node Architecture and Getting Started with ExpressNode Architecture and Getting Started with Express
Node Architecture and Getting Started with Expressjguerrero999
Ā 
APIsecure 2023 - Android Applications and API Hacking, Gabrielle Botbol
APIsecure 2023 - Android Applications and API Hacking, Gabrielle BotbolAPIsecure 2023 - Android Applications and API Hacking, Gabrielle Botbol
APIsecure 2023 - Android Applications and API Hacking, Gabrielle Botbolapidays
Ā 
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)Roman Kharkovski
Ā 
How to create a business case for expanding your AppSec program
How to create a business case for expanding your AppSec programHow to create a business case for expanding your AppSec program
How to create a business case for expanding your AppSec programColin Domoney
Ā 
iOS Application Testing
iOS Application TestingiOS Application Testing
iOS Application TestingMreetyunjaya Daas
Ā 
Track code quality with SonarQube - short version
Track code quality with SonarQube - short versionTrack code quality with SonarQube - short version
Track code quality with SonarQube - short versionDmytro Patserkovskyi
Ā 

What's hot (7)

Charlie Talk - JQL In A Nutshell
Charlie Talk - JQL In A NutshellCharlie Talk - JQL In A Nutshell
Charlie Talk - JQL In A Nutshell
Ā 
Node Architecture and Getting Started with Express
Node Architecture and Getting Started with ExpressNode Architecture and Getting Started with Express
Node Architecture and Getting Started with Express
Ā 
APIsecure 2023 - Android Applications and API Hacking, Gabrielle Botbol
APIsecure 2023 - Android Applications and API Hacking, Gabrielle BotbolAPIsecure 2023 - Android Applications and API Hacking, Gabrielle Botbol
APIsecure 2023 - Android Applications and API Hacking, Gabrielle Botbol
Ā 
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
Ā 
How to create a business case for expanding your AppSec program
How to create a business case for expanding your AppSec programHow to create a business case for expanding your AppSec program
How to create a business case for expanding your AppSec program
Ā 
iOS Application Testing
iOS Application TestingiOS Application Testing
iOS Application Testing
Ā 
Track code quality with SonarQube - short version
Track code quality with SonarQube - short versionTrack code quality with SonarQube - short version
Track code quality with SonarQube - short version
Ā 

Similar to Behaviour driven architecture

Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileEngineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileKenAtIndeed
Ā 
The GE Design System and thoughts about craft at scale
The GE Design System and thoughts about craft at scaleThe GE Design System and thoughts about craft at scale
The GE Design System and thoughts about craft at scaleDavid Cronin
Ā 
Co-creating_UX_Software_DevoxxBE.pdf
Co-creating_UX_Software_DevoxxBE.pdfCo-creating_UX_Software_DevoxxBE.pdf
Co-creating_UX_Software_DevoxxBE.pdfSimonedeGijt
Ā 
Co-creating_UX_Software_VoxxedDaysIasi.pdf
Co-creating_UX_Software_VoxxedDaysIasi.pdfCo-creating_UX_Software_VoxxedDaysIasi.pdf
Co-creating_UX_Software_VoxxedDaysIasi.pdfSimonedeGijt
Ā 
Serenity/JS - next generation acceptance testing for modern web applications
Serenity/JS - next generation acceptance testing for modern web applicationsSerenity/JS - next generation acceptance testing for modern web applications
Serenity/JS - next generation acceptance testing for modern web applicationsJan Molak
Ā 
Progress of JavaScript Architecture
Progress of JavaScript ArchitectureProgress of JavaScript Architecture
Progress of JavaScript ArchitectureTonya Mork
Ā 
Epistemological Problem of Application Security
Epistemological Problem of Application SecurityEpistemological Problem of Application Security
Epistemological Problem of Application SecurityJames Wickett
Ā 
Building Web Hack Interfaces
Building Web Hack InterfacesBuilding Web Hack Interfaces
Building Web Hack InterfacesChristian Heilmann
Ā 
TechSEO Boost 2019: Research Competition
TechSEO Boost 2019: Research CompetitionTechSEO Boost 2019: Research Competition
TechSEO Boost 2019: Research CompetitionCatalyst
Ā 
Co-creating_UX_Software_JFALL.pdf
Co-creating_UX_Software_JFALL.pdfCo-creating_UX_Software_JFALL.pdf
Co-creating_UX_Software_JFALL.pdfSimonedeGijt
Ā 
NextJS - Online Summit for Frontend Developers September 2020
NextJS - Online Summit for Frontend Developers September 2020NextJS - Online Summit for Frontend Developers September 2020
NextJS - Online Summit for Frontend Developers September 2020Milad Heydari
Ā 
Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...
Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...
Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...Sasa Djolic
Ā 
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]Link-Assistant.Com
Ā 
Rendering strategies: Measuring the devil's details in core web vitals - Jam...
Rendering strategies:  Measuring the devil's details in core web vitals - Jam...Rendering strategies:  Measuring the devil's details in core web vitals - Jam...
Rendering strategies: Measuring the devil's details in core web vitals - Jam...Jamie Indigo
Ā 
Data Driven DevOps
Data Driven DevOpsData Driven DevOps
Data Driven DevOpsLeon Stigter
Ā 
What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]
What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]
What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]Mikhail Asavkin
Ā 
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...indeedeng
Ā 

Similar to Behaviour driven architecture (20)

Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileEngineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Ā 
The GE Design System and thoughts about craft at scale
The GE Design System and thoughts about craft at scaleThe GE Design System and thoughts about craft at scale
The GE Design System and thoughts about craft at scale
Ā 
React introduction
React introductionReact introduction
React introduction
Ā 
Co-creating_UX_Software_DevoxxBE.pdf
Co-creating_UX_Software_DevoxxBE.pdfCo-creating_UX_Software_DevoxxBE.pdf
Co-creating_UX_Software_DevoxxBE.pdf
Ā 
Co-creating_UX_Software_VoxxedDaysIasi.pdf
Co-creating_UX_Software_VoxxedDaysIasi.pdfCo-creating_UX_Software_VoxxedDaysIasi.pdf
Co-creating_UX_Software_VoxxedDaysIasi.pdf
Ā 
Serenity/JS - next generation acceptance testing for modern web applications
Serenity/JS - next generation acceptance testing for modern web applicationsSerenity/JS - next generation acceptance testing for modern web applications
Serenity/JS - next generation acceptance testing for modern web applications
Ā 
Progress of JavaScript Architecture
Progress of JavaScript ArchitectureProgress of JavaScript Architecture
Progress of JavaScript Architecture
Ā 
Epistemological Problem of Application Security
Epistemological Problem of Application SecurityEpistemological Problem of Application Security
Epistemological Problem of Application Security
Ā 
Building Web Hack Interfaces
Building Web Hack InterfacesBuilding Web Hack Interfaces
Building Web Hack Interfaces
Ā 
Going web native
Going web nativeGoing web native
Going web native
Ā 
TechSEO Boost 2019: Research Competition
TechSEO Boost 2019: Research CompetitionTechSEO Boost 2019: Research Competition
TechSEO Boost 2019: Research Competition
Ā 
Co-creating_UX_Software_JFALL.pdf
Co-creating_UX_Software_JFALL.pdfCo-creating_UX_Software_JFALL.pdf
Co-creating_UX_Software_JFALL.pdf
Ā 
NextJS - Online Summit for Frontend Developers September 2020
NextJS - Online Summit for Frontend Developers September 2020NextJS - Online Summit for Frontend Developers September 2020
NextJS - Online Summit for Frontend Developers September 2020
Ā 
Web performance tuning
Web performance tuning Web performance tuning
Web performance tuning
Ā 
Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...
Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...
Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...
Ā 
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
Ā 
Rendering strategies: Measuring the devil's details in core web vitals - Jam...
Rendering strategies:  Measuring the devil's details in core web vitals - Jam...Rendering strategies:  Measuring the devil's details in core web vitals - Jam...
Rendering strategies: Measuring the devil's details in core web vitals - Jam...
Ā 
Data Driven DevOps
Data Driven DevOpsData Driven DevOps
Data Driven DevOps
Ā 
What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]
What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]
What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]
Ā 
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
Ā 

Recently uploaded

Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
Ā 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
Ā 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
Ā 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
Ā 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
Ā 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
Ā 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
Ā 
(Genuine) Escort Service Lucknow | Starting ā‚¹,5K To @25k with A/C šŸ§‘šŸ½ā€ā¤ļøā€šŸ§‘šŸ» 89...
(Genuine) Escort Service Lucknow | Starting ā‚¹,5K To @25k with A/C šŸ§‘šŸ½ā€ā¤ļøā€šŸ§‘šŸ» 89...(Genuine) Escort Service Lucknow | Starting ā‚¹,5K To @25k with A/C šŸ§‘šŸ½ā€ā¤ļøā€šŸ§‘šŸ» 89...
(Genuine) Escort Service Lucknow | Starting ā‚¹,5K To @25k with A/C šŸ§‘šŸ½ā€ā¤ļøā€šŸ§‘šŸ» 89...gurkirankumar98700
Ā 
GOING AOT WITH GRAALVM ā€“ DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM ā€“ DEVOXX GREECE.pdfGOING AOT WITH GRAALVM ā€“ DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM ā€“ DEVOXX GREECE.pdfAlina Yurenko
Ā 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
Ā 
办ē†å­¦ä½čƁ(UQę–‡å‡­čƁ书)ę˜†å£«å…°å¤§å­¦ęƕäøščÆęˆē»©å•åŽŸē‰ˆäø€ęØ”äø€ę ·
办ē†å­¦ä½čƁ(UQę–‡å‡­čƁ书)ę˜†å£«å…°å¤§å­¦ęƕäøščÆęˆē»©å•åŽŸē‰ˆäø€ęØ”äø€ę ·åŠžē†å­¦ä½čƁ(UQę–‡å‡­čƁ书)ę˜†å£«å…°å¤§å­¦ęƕäøščÆęˆē»©å•åŽŸē‰ˆäø€ęØ”äø€ę ·
办ē†å­¦ä½čƁ(UQę–‡å‡­čƁ书)ę˜†å£«å…°å¤§å­¦ęƕäøščÆęˆē»©å•åŽŸē‰ˆäø€ęØ”äø€ę ·umasea
Ā 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
Ā 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
Ā 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
Ā 
Russian Call Girls in Karol Bagh Aasnvi āž”ļø 8264348440 šŸ’‹šŸ“ž Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi āž”ļø 8264348440 šŸ’‹šŸ“ž Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi āž”ļø 8264348440 šŸ’‹šŸ“ž Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi āž”ļø 8264348440 šŸ’‹šŸ“ž Independent Escort S...soniya singh
Ā 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
Ā 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxnada99848
Ā 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
Ā 

Recently uploaded (20)

Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
Ā 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Ā 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
Ā 
Hot Sexy call girls in Patel NagaršŸ” 9953056974 šŸ” escort Service
Hot Sexy call girls in Patel NagaršŸ” 9953056974 šŸ” escort ServiceHot Sexy call girls in Patel NagaršŸ” 9953056974 šŸ” escort Service
Hot Sexy call girls in Patel NagaršŸ” 9953056974 šŸ” escort Service
Ā 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
Ā 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
Ā 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
Ā 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
Ā 
(Genuine) Escort Service Lucknow | Starting ā‚¹,5K To @25k with A/C šŸ§‘šŸ½ā€ā¤ļøā€šŸ§‘šŸ» 89...
(Genuine) Escort Service Lucknow | Starting ā‚¹,5K To @25k with A/C šŸ§‘šŸ½ā€ā¤ļøā€šŸ§‘šŸ» 89...(Genuine) Escort Service Lucknow | Starting ā‚¹,5K To @25k with A/C šŸ§‘šŸ½ā€ā¤ļøā€šŸ§‘šŸ» 89...
(Genuine) Escort Service Lucknow | Starting ā‚¹,5K To @25k with A/C šŸ§‘šŸ½ā€ā¤ļøā€šŸ§‘šŸ» 89...
Ā 
GOING AOT WITH GRAALVM ā€“ DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM ā€“ DEVOXX GREECE.pdfGOING AOT WITH GRAALVM ā€“ DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM ā€“ DEVOXX GREECE.pdf
Ā 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Ā 
办ē†å­¦ä½čƁ(UQę–‡å‡­čƁ书)ę˜†å£«å…°å¤§å­¦ęƕäøščÆęˆē»©å•åŽŸē‰ˆäø€ęØ”äø€ę ·
办ē†å­¦ä½čƁ(UQę–‡å‡­čƁ书)ę˜†å£«å…°å¤§å­¦ęƕäøščÆęˆē»©å•åŽŸē‰ˆäø€ęØ”äø€ę ·åŠžē†å­¦ä½čƁ(UQę–‡å‡­čƁ书)ę˜†å£«å…°å¤§å­¦ęƕäøščÆęˆē»©å•åŽŸē‰ˆäø€ęØ”äø€ę ·
办ē†å­¦ä½čƁ(UQę–‡å‡­čƁ书)ę˜†å£«å…°å¤§å­¦ęƕäøščÆęˆē»©å•åŽŸē‰ˆäø€ęØ”äø€ę ·
Ā 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
Ā 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
Ā 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
Ā 
Russian Call Girls in Karol Bagh Aasnvi āž”ļø 8264348440 šŸ’‹šŸ“ž Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi āž”ļø 8264348440 šŸ’‹šŸ“ž Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi āž”ļø 8264348440 šŸ’‹šŸ“ž Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi āž”ļø 8264348440 šŸ’‹šŸ“ž Independent Escort S...
Ā 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Ā 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptx
Ā 
Call Girls In Mukherjee Nagar šŸ“± 9999965857 šŸ¤© Delhi šŸ«¦ HOT AND SEXY VVIP šŸŽ SE...
Call Girls In Mukherjee Nagar šŸ“±  9999965857  šŸ¤© Delhi šŸ«¦ HOT AND SEXY VVIP šŸŽ SE...Call Girls In Mukherjee Nagar šŸ“±  9999965857  šŸ¤© Delhi šŸ«¦ HOT AND SEXY VVIP šŸŽ SE...
Call Girls In Mukherjee Nagar šŸ“± 9999965857 šŸ¤© Delhi šŸ«¦ HOT AND SEXY VVIP šŸŽ SE...
Ā 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Ā 

Behaviour driven architecture