Colour Modelling - domain modelling with the 3rd dimension

Preview:

DESCRIPTION

This is the slide pack that I presented at the Melbourne Ruby meetup on September 24, 2014 - http://www.meetup.com/Ruby-On-Rails-Oceania-Melbourne/events/195632942/ Hope you enjoy! Any questions, my email is doug@cultureamp.com

Citation preview

Colour ModellingModelling 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

AirportFlight Plan

Aeroplane Passenger

AirportFlight Plan

**

*

1

*

and their relationships

*

Aeroplane Passenger

AirportFlight Plan

**

*

1

* *

but temporality causes us issues

1

1current historical

Aeroplane Passenger

AirportFlight Plan

**

*

1

*

but temporality causes us issues

*

1

1current historical

?

Aeroplane Passenger

AirportFlight Plan

PilotAirHost

Luggage

ItineraryAirlineHanger

Country

Ticket

Customs

RunWay

(Admit it, we’ve all seen domain models worse than this!)

and the more concepts we add the messier things get

Mentored by Jeff De Luca (Architect of Feature Driven Development)

Consulted as a Domain Modeller with large scale industry models (eg IFW, OFX)

at multinationals (NAB, ANZ)

5 years of experience applying and adapting my learnings to startups

my background

Don’t try and model the “entire” domain. Model only what your solution needs to care about.

You can’t model a domain you don’t understand. It’s critical to work hand-in-hand with domain experts!!

Your domain model must be the share language between all stakeholders - and used to name classes in the code!!

what I’ve learned

Colour Modelling categorises everything into one of 4 archetypes

<< party, place, thing >> << description >>

<< moment-interval >><< role >>

Description

Moment-IntervalRole

<< description >>

<< moment-interval >><< role >>

Party, Place, Thing

<< party, place, thing >>

(They’re all ‘real world’ just some are ‘concepts’, not ‘objects’)

<< party, place, thing >> << description >>

<< moment-interval >><< role >>

Description

Moment-IntervalRole

0.. * 1

0.. 1

0.. *

1

1

<< description >>

<< moment-interval >><< role >>

Party, Place, Thing

<< party, place, thing >>

that tend to connect consistently

Description<< party, place, thing >> << description >>

<< moment-interval >>

Party, Place, Thing

Moment-Interval

0.. *

<< party, place, thing >>

<< moment-interval >><< role >>Role

<< role >>

identityNumbernamecustomValue

getCustomValueOrDefaultlistRoles accessAcrossRoles

1 descriptionitemNumberdefaultValue

listPPTs findAvailable calculateTotalFor

assignedNumber status

isAvailable listMIs assessAcrossMIs

referenceNumber dateOrDateTimeOrInterval status

addRemoveDetail calculateTotalcomplete

0.. 1

0.. *

1

1<< moment-interval >>MI-Detail

<< moment-interval >>

calculateTotal

quantity

<< mi-detail >>

0.. *

and tend to have similar attributes

ThingDescription<< description >>

Thing<<thing>><< role >>

Role<< role >>

0.. *1

MI-Detail<< mi-detail >>

PriorMI<< moment-interval >>

NextMI << moment-interval >>

Moment-Interval<< moment-interval >>

PlaceDescription<< description >>

PartyDescription<< description >>

Place<<place>>

Party<<party>>

Role<< role >>

Role<< role >>

0.. *

0.. *0.. * 0.. *

0.. *0.. *

0.. * 0.. *

0.. 1 0.. 11

1 1

1

1

1

1

11

1

0.. 1

the Domain Neutral Component

Question<<thing>>

0.. *1Account<< moment-interval >>

Response<< moment-interval >>

SurveyType<< description >>

Person<<party>>

Participant<< role >>

0.. *

0.. *

0.. * 0.. *

0.. 1

1

1

1

1

Answer

Survey

<< mi-detail >>0.. *QuestionInSurvey

<< mi-detail >>

<< moment-interval >>

0.. * 0.. *1 1

Culture Amp’s core domain<< party >>

0.. *Account<< moment-interval >>

SurveyAdminGrant<< moment-interval >>

Person

SurveyAdministrator<< role >>

0.. *0.. *

0.. 1

1

1

Survey<< moment-interval >>

AccountAdminGrant<< moment-interval >>

AccountAdministrator<< role >>

0.. *1

0.. 1

1

0.. *1

<<party>>

Granting access to Administrators

1 1

<< description >>

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

http://www.step-10.com/SoftwareDesign/ModellingInColour/index.html

http://bit.ly/fdd-presentationby Daniel Vacanti

by Peter Coad

by Peter Coad

resources

<< description >>

Interested in playing with Colour Modelling in the real world?

!

Come and talk to us! doug@cultureamp.com

Culture Amp is hiring!

Questions?

Recommended