Colour Modelling 
Modelling with the 3rd dimension 
by Doug English 
Co-founder & Head of Engineering @ Culture Amp
Object Oriented Modelling asks us 
to focus on ‘real world objects’ 
Aeroplane Passenger 
Flight Plan Airport
and their relationships 
* 
* 
Aeroplane Passenger 
* 
1 
* 
* 
Flight Plan Airport
but temporality causes us issues 
* 
* 
Aeroplane Passenger 
current historical 
* 
1 
* * 
1 
1 
Flight Plan Airport
but temporality causes us issues 
* 
* 
? 
Aeroplane Passenger 
current historical 
* 
1 
* 
* 
1 
1 
Flight Plan Airport
and the more concepts we add the 
messier things get 
AirHost Pilot 
Customs 
Aeroplane Passenger 
Flight Plan Airport 
Luggage 
Hanger Airline Itinerary 
Country 
Ticket 
RunWay 
(Admit it, we’ve all seen domain models worse than this!)
my background 
Consulted as a Domain Modeller 
with large scale industry models (eg IFW, OFX) 
at multinationals (NAB, ANZ) 
Mentored by Jeff De Luca 
(Architect of Feature Driven Development) 
5 years of experience applying and adapting 
my learnings to startups
what I’ve learned 
You can’t model a domain you don’t understand. 
It’s critical to work hand-in-hand with domain experts!! 
Don’t try and model the “entire” domain. 
Model only what your solution needs to care about. 
Your domain model must be the share language between 
all stakeholders - and used to name classes in the code!!
Colour Modelling categorises 
everything into one of 4 archetypes 
<< party, place, thing >> 
<< party, place, thing >> << description >> 
Description 
Party, Place, 
Thing 
<< role >> << << moment-moment-interval interval >> 
>> 
Moment- 
Role Interval 
(They’re all ‘real world’ just some are ‘concepts’, not ‘objects’)
that tend to connect consistently 
<< party, place, thing >> 
<< party, place, thing >> << description >> 
Description 
0.. * 1 
Party, Place, 
Thing 
1 
0.. 1 
<< role >> << << moment-moment-interval interval >> 
>> 
Moment- 
0.. * 
1 
Role Interval
and tend to have similar attributes 
<< party, place, thing >> Description << description >> 
<< moment-interval >> 
Party, Place, Thing 
Moment-Interval 
0.. * 
<< party, place, thing >> 
identityNumber 
name 
customValue 
getCustomValueOrDefault 
listRoles 
accessAcrossRoles 
<< << role role >> 
>> << moment-interval >> 
Role 
1 description 
itemNumber 
defaultValue 
listPPTs 
findAvailable 
calculateTotalFor 
assignedNumber 
status 
isAvailable 
listMIs 
assessAcrossMIs 
referenceNumber 
dateOrDateTimeOrInterval 
status 
addRemoveDetail 
calculateTotal 
complete 
0.. 1 
0.. * 
1 
1 
<< moment-interval >> 
<< mi-detail >> 
<< momentM-inI-tDerevtaali l>> 
quantity 
calculateTotal 
0.. *
the Domain Neutral Component 
PlaceDescription << description >> PartyDescription << description >> 
0.. * 0.. * 
Party <<party>> 1 0.. 1 << Role role >> 
<< Role role >> 0.. 1 
Place <<place>> 1 1 
0.. * 0.. * 
<< moment-interval >> 
PriorMI << moment-interval >> NextMI 
ThingDescription << description >> 
1 
<< role >> T<<thhiinng>g> 
Role << role >> 
0.. * 1 
MI-Detail << mi-detail >> 
<< moment-interval >> 
Moment-Interval 
0.. * 
0.. * 
0.. * 1 
0.. * 
1 
1 
1 
1 
1 
0.. 1
<<party>> 
0.. 1 
1 
Culture Amp’s core domain 
0.. * 0.. * 
0.. * 1 Account << moment-interval >> Response 
Question <<thing>> 
<< moment-interval >> 
SurveyType << description >> 
Person 
Participant << role >> 
0.. * 
0.. * 
1 
1 
1 
Answer 
<< moment-interval >> 
Survey 
<< mi-detail >> 0.. * QuestionInSurvey << mi-detail >> 
0.. * 0.. * 
1 1 
<< party >>
Granting access to Administrators 
Account 0.. * 
0.. 1 
1 
SurveyAdministrator << role >> 
1 
0.. * 
<< moment-interval >> 
Person 
0.. * 
AccountAdministrator << role >> 
1 
AccountAdminGrant << moment-interval >> 
<< moment-interval >> SurveyAdminGrant 
Survey << moment-interval >> 
0.. * 
1 
0.. 1 
1 
0.. * 
<<party>> 
1 1
<< description >> 
resources 
Java Modeling In Color With UML: 
Enterprise Components and Process 
by Peter Coad, Jeff de Luca and Eric Lefebvre 
www.petercoad.com/download/bookpdfs/jmcuch01.pdf 
by Peter Coad 
http://www.step-10.com/SoftwareDesign/ModellingInColour/index.html 
by Peter Coad 
http://bit.ly/fdd-presentation 
by Daniel Vacanti
<< description >> 
Questions? 
Culture Amp is hiring! 
Interested in playing with 
Colour Modelling in the real world? 
! 
Come and talk to us! 
doug@cultureamp.com

Colour Modelling - domain modelling with the 3rd dimension

  • 1.
    Colour Modelling Modellingwith the 3rd dimension by Doug English Co-founder & Head of Engineering @ Culture Amp
  • 2.
    Object Oriented Modellingasks us to focus on ‘real world objects’ Aeroplane Passenger Flight Plan Airport
  • 3.
    and their relationships * * Aeroplane Passenger * 1 * * Flight Plan Airport
  • 4.
    but temporality causesus issues * * Aeroplane Passenger current historical * 1 * * 1 1 Flight Plan Airport
  • 5.
    but temporality causesus issues * * ? Aeroplane Passenger current historical * 1 * * 1 1 Flight Plan Airport
  • 6.
    and the moreconcepts we add the messier things get AirHost Pilot Customs Aeroplane Passenger Flight Plan Airport Luggage Hanger Airline Itinerary Country Ticket RunWay (Admit it, we’ve all seen domain models worse than this!)
  • 7.
    my background Consultedas a Domain Modeller with large scale industry models (eg IFW, OFX) at multinationals (NAB, ANZ) Mentored by Jeff De Luca (Architect of Feature Driven Development) 5 years of experience applying and adapting my learnings to startups
  • 8.
    what I’ve learned You can’t model a domain you don’t understand. It’s critical to work hand-in-hand with domain experts!! Don’t try and model the “entire” domain. Model only what your solution needs to care about. Your domain model must be the share language between all stakeholders - and used to name classes in the code!!
  • 9.
    Colour Modelling categorises everything into one of 4 archetypes << party, place, thing >> << party, place, thing >> << description >> Description Party, Place, Thing << role >> << << moment-moment-interval interval >> >> Moment- Role Interval (They’re all ‘real world’ just some are ‘concepts’, not ‘objects’)
  • 10.
    that tend toconnect consistently << party, place, thing >> << party, place, thing >> << description >> Description 0.. * 1 Party, Place, Thing 1 0.. 1 << role >> << << moment-moment-interval interval >> >> Moment- 0.. * 1 Role Interval
  • 11.
    and tend tohave similar attributes << party, place, thing >> Description << description >> << moment-interval >> Party, Place, Thing Moment-Interval 0.. * << party, place, thing >> identityNumber name customValue getCustomValueOrDefault listRoles accessAcrossRoles << << role role >> >> << moment-interval >> Role 1 description itemNumber defaultValue listPPTs findAvailable calculateTotalFor assignedNumber status isAvailable listMIs assessAcrossMIs referenceNumber dateOrDateTimeOrInterval status addRemoveDetail calculateTotal complete 0.. 1 0.. * 1 1 << moment-interval >> << mi-detail >> << momentM-inI-tDerevtaali l>> quantity calculateTotal 0.. *
  • 12.
    the Domain NeutralComponent PlaceDescription << description >> PartyDescription << description >> 0.. * 0.. * Party <<party>> 1 0.. 1 << Role role >> << Role role >> 0.. 1 Place <<place>> 1 1 0.. * 0.. * << moment-interval >> PriorMI << moment-interval >> NextMI ThingDescription << description >> 1 << role >> T<<thhiinng>g> Role << role >> 0.. * 1 MI-Detail << mi-detail >> << moment-interval >> Moment-Interval 0.. * 0.. * 0.. * 1 0.. * 1 1 1 1 1 0.. 1
  • 13.
    <<party>> 0.. 1 1 Culture Amp’s core domain 0.. * 0.. * 0.. * 1 Account << moment-interval >> Response Question <<thing>> << moment-interval >> SurveyType << description >> Person Participant << role >> 0.. * 0.. * 1 1 1 Answer << moment-interval >> Survey << mi-detail >> 0.. * QuestionInSurvey << mi-detail >> 0.. * 0.. * 1 1 << party >>
  • 14.
    Granting access toAdministrators Account 0.. * 0.. 1 1 SurveyAdministrator << role >> 1 0.. * << moment-interval >> Person 0.. * AccountAdministrator << role >> 1 AccountAdminGrant << moment-interval >> << moment-interval >> SurveyAdminGrant Survey << moment-interval >> 0.. * 1 0.. 1 1 0.. * <<party>> 1 1
  • 15.
    << description >> resources Java Modeling In Color With UML: Enterprise Components and Process by Peter Coad, Jeff de Luca and Eric Lefebvre www.petercoad.com/download/bookpdfs/jmcuch01.pdf by Peter Coad http://www.step-10.com/SoftwareDesign/ModellingInColour/index.html by Peter Coad http://bit.ly/fdd-presentation by Daniel Vacanti
  • 16.
    << description >> Questions? Culture Amp is hiring! Interested in playing with Colour Modelling in the real world? ! Come and talk to us! doug@cultureamp.com