Skip to main content
Back to basics
                  hands-on




            Italian Agile Day 2011

Antonio Carpentieri             Paolo Polce
Basic doesn’t mean
      simple
Basics are
advanced topics
Let’s define good
      software
High cohesion
Coincidental
  cohesion
    (Worst)
Functional
 cohesion
   (best)
Low coupling
Content coupling
      (worst)
Message coupling
 (lowest before No coupling)
How to get there?
The principles
S.O.L.I.D.
S.O.L.I.D.
S.O.L.I.D.
S.O.L.I.D.
S.O.L.I.D.
S.O.L.I.D.
Patterns should
 emerge from
  refactoring
Composition
   over
inheritance
Decorator
Composite
Adapter
Tell don’t ask
No getters
   rule
User stories
Landing on Go
As a player, when I land on go I get
$200 as my salary for staying in the
game


Acceptance criteria:
•During a turn a Player lands on Go and their balance
increases by $200

•During a turn a Player lands on some "normal" location and
their balance does not change
Passing over Go
As a player, I receive $200 when I
pass over Go
Acceptance criteria:
•Player starts before Go near the end of the Board, rolls
enough to pass Go. The Player's balance increases by $200

•Player starts on Go, takes a turn where the Player does not
additionally land on or pass over Go. Their balance remains

unchanged.

•Player passes go twice during a turn. Their balance increases by
$200 each time for a total change of $400
Landing on Go To Jail
As a Player, when I land on Go To
Jail during a turn I move directly to
Just Visiting
Acceptance criteria:
•Player starts before Go To Jail, lands on Go To Jail, ends up
on Just Visiting and their balance is unchanged

•Player starts before Go To Jail, rolls enough to pass over Go
To Jail but not enough to land on or pass over go. Their balance

is unchanged and they end up where the should based on what

they rolled
Landing on Income Tax
As a Player, landing on Income Tax
forces me to pay the smaller of 10%
of my total worth or $200
Acceptance criteria:
•During a turn, a Player with an initial total worth of $1800
lands on Income Tax. The balance decreases by $180

•During a turn, a Player with an initial total worth of $2200
lands on Income Tax. The balance decreases by $200

•During a turn, a Player with an initial total worth of $0 lands
on Income Tax. The balance decreases by $0
Landing on Income Tax
Acceptance criteria (continued):
•During a turn, a Player with an initial total worth of $2000
lands on Income Tax. The balance decreases by $200

•During a turn, a Player passes over Income Tax. Nothing
happens
Landing on Luxury Tax
As a Player, when I land on Luxury
Tax, I pay $75.


Acceptance criteria:
•Player takes a turn and lands on Luxury tax. Their balance
decreases by $75

•Player passes Luxury Tax during a turn. Their balance is
unchanged
Player Buys Property
As a player, I can buy an unowned
property when I land on it during a
turn

Acceptance criteria:
• Land on a Property that is not owned. After turn, property is
owned and balance decreases by cost of property

• Land on a Property that I own, nothing happens
• Pass over an unowned Property, nothing happens
Player Pays Rent
As a player, I pay rent when I land
on a Property that is owned by
someone else
Acceptance criteria:
• Land on a Property owned by other player, player pays rent to
owner. Player's balance decreases by rent amount. Owners balance

increases by rent amount.

• If landing on Real Estate and not all in the same Property
Group are owned, rent is stated rent value

• If landing on Real Estate and Owner owns all in the same
Property Group, rent is 2 times stated rent value
Player Pays Rent (Railroad)
As a player, I pay special rent when I
land on a Railroad that is owned by
someone else


Acceptance criteria:
• If landing on Railroad, rent is 25, 50, 100, 200 depending on
how many are owned by owner (1 - 4)
Player Pays Rent (Utility)
As a player, I pay special rent when I
land on a Utility that is owned by
someone else


Acceptance criteria:
• If landing on Utility and only one Utility owned, rent is 4
times current value on Dice

• If landing on Utility and both owned (not necessarily by same
Player), rent is 10 times current value on Dice
Grazie per l’attenzione


a.carpe@gmail.com                   paolo@webshell.it


            @acarpe                 @paolopolce

feedback on: http://joind.in/4520
     source: http://github.com/acarpe/back-to-basics-hands-on
     credits: Monopoly kata by schuchert
              ( http://goo.gl/OuovG )