Slide 1

Slide 1 text

BUILD THE RIGHT THING @konrad_126

Slide 2

Slide 2 text

CAN YOU BUILD THIS? SURE!

Slide 3

Slide 3 text

HMM... !? HERE YOU GO

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

BEHAVIOUR DRIVEN DEVELOPMENT

Slide 6

Slide 6 text

IT'S USING EXAMPLES TO TALK THROUGH HOW AN APPLICATION BEHAVES... AND HAVING CONVERSATIONS ABOUT THOSE EXAMPLES. DAN NORTH

Slide 7

Slide 7 text

IT'S USING EXAMPLES TO TALK THROUGH HOW AN APPLICATION BEHAVES... AND HAVING CONVERSATIONS ABOUT THOSE EXAMPLES. DAN NORTH

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

USER STORY WORKING SOFTWARE BEHAVIOUR DRIVEN DEVELOPMENT

Slide 11

Slide 11 text

DISCOVERY

Slide 12

Slide 12 text

DISCOVERY FORMULATION

Slide 13

Slide 13 text

DISCOVERY FORMULATION AUTOMATION

Slide 14

Slide 14 text

THE HARDEST SINGLE PART OF BUILDING A SOFTWARE SYSTEM IS DECIDING PRECISELY WHAT TO BUILD. FRED BROOKS DISCOVERY

Slide 15

Slide 15 text

DISCOVERY

Slide 16

Slide 16 text

DISCOVERY

Slide 17

Slide 17 text

FORMULATION

Slide 18

Slide 18 text

AUTOMATION

Slide 19

Slide 19 text

BEHAT

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

Feature: Real time update of Parking Lot occupancy In order to have accurate availability value for a parking lot, occupancy must be updated every time a driver enters a parking lot Scenario: Entering with First Come First Serve access type Given "Brussels Nord" parking lot has 53 available spots When a car enters "Brussels Nord" parking lot using "FCFS" access Then there are 52 available spots in "Brussels Nord" parking lot 1 2 3 4 5 6 7 8

Slide 26

Slide 26 text

Given "Brussels Nord" parking lot has 53 available spots 1 When a car enters "Brussels Nord" parking lot using "FCFS" access 2 Then there are 52 available spots in "Brussels Nord" parking lot 3 /** * @Given :arg1 parking lot has :arg2 available spots * @param mixed $arg1 * @param mixed $arg2 */ public function parkingLotHasAvailableSpots($arg1, $arg2) { throw new PendingException(); } 1 2 3 4 5 6 7 8 9

Slide 27

Slide 27 text

Given "Brussels Nord" parking lot has 53 available spots 1 When a car enters "Brussels Nord" parking lot using "FCFS" access 2 Then there are 52 available spots in "Brussels Nord" parking lot 3 /** * @Given :arg1 parking lot has :arg2 available spots * @param mixed $arg1 * @param mixed $arg2 */ public function parkingLotHasAvailableSpots($arg1, $arg2) { $parkingLot = new ParkingLot($arg1,$arg2); $this->parkingLots->save($parkingLot); } 1 2 3 4 5 6 7 8 9 10

Slide 28

Slide 28 text

When a car enters "Brussels Nord" parking lot using "FCFS" access Given "Brussels Nord" parking lot has 53 available spots 1 2 Then there are 52 available spots in "Brussels Nord" parking lot 3 /** * @When a car enters :arg1 parking lot using :arg2 access */ public function aCarEntersParkingLotUsingAccess($arg1, $arg2) { throw new PendingException(); } 1 2 3 4 5 6 7

Slide 29

Slide 29 text

When a car enters "Brussels Nord" parking lot using "FCFS" access Given "Brussels Nord" parking lot has 53 available spots 1 2 Then there are 52 available spots in "Brussels Nord" parking lot 3 /** * @When a car enters :arg1 parking lot using :arg2 access */ public function aCarEntersParkingLotUsingAccess($arg1, $arg2) { $this->bus->dispatch(new EnterParkingLot($arg1,$arg2))); } 1 2 3 4 5 6 7

Slide 30

Slide 30 text

Then there are 52 available spots in "Brussels Nord" parking lot Given "Brussels Nord" parking lot has 53 available spots 1 When a car enters "Brussels Nord" parking lot using "FCFS" access 2 3 /** * @Then there are :arg2 available spots in :arg1 parking lot */ public function thereAreAvailableSpotsInParkingLot2($arg1, $arg2) { throw new PendingException(); } 1 2 3 4 5 6 7

Slide 31

Slide 31 text

Then there are 52 available spots in "Brussels Nord" parking lot Given "Brussels Nord" parking lot has 53 available spots 1 When a car enters "Brussels Nord" parking lot using "FCFS" access 2 3 /** * @Then there are :arg2 available spots in :arg1 parking lot */ public function thereAreAvailableSpotsInParkingLot($arg1, $arg2) { $parkingLot = $this->parkingLots->findByName($arg2); Assert::equals($arg1, $parkingLot->capacity()); } 1 2 3 4 5 6 7 8

Slide 32

Slide 32 text

WHAT?

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

USER INTERFACE BUSINESS LOGIC

Slide 35

Slide 35 text

USER INTERFACE BUSINESS LOGIC

Slide 36

Slide 36 text

WHY?

Slide 37

Slide 37 text

EARLY LEARNING/FEEDBACK SHARED UNDERSTANDING LIVING DOCUMENTATION LESS RE-WORK

Slide 38

Slide 38 text

THANK YOU @konrad_126