Presented at JAX London 2013
Agile methodologies have had us moving away from Big Up Front Design to evolutionary, emergent design. But how does that work in the real world? Using experiences gained when creating the new Java driver for MongoDB, Trisha takes us on a design journey, where the answer to every question is "It Depends", the users of the system and their use cases are unknown, and lurking at the back of every decision is the question “but will it be backwards compatible?” We’ve all been there, trying to work out how to implement requirements, but have we really thought about the process of design?
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Design is a Process, not an Artefact - Trisha Gee (MongoDB)
1. #JAXLondon
Design is a Process, not a
Document
Trisha Gee, Java Driver Developer
@trisha_gee
Tuesday, 29 October 13
2. Design: translate the
requirements in a
specification that describes
the global architecture and
the functionality of the
system.
http://homepages.cwi.nl/~paulk/patents/isnot/node4.html
Tuesday, 29 October 13
3. Managing the Development of Large
Software Systems - Dr Winston Royce
http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
Tuesday, 29 October 13
4. <This Page Left Intentionally Blank>
Agile Design
Tuesday, 29 October 13
5. Design is a Process, not
a Document
Tuesday, 29 October 13
19. Bugs and
Defects
...and here
New Features
Unknown
Architecture
...and here
On Time and
Under Budget
...and here
Inconsistencies
You Are Here
...and here
Unclear
Objectives
Lack of
Experience
...and here
Tuesday, 29 October 13
20. Bugs and
Defects
...and here
New Features
Unknown
Architecture
...and here
On Time and
Under Budget
...and here
Inconsistencies
You Are Here
...and here
Unclear
Objectives
Lack of
Experience
...and here
Tuesday, 29 October 13
21. Bugs and
Defects
...and here
New Features
Unknown
Architecture
...and here
On Time and
Under Budget
...and here
Inconsistencies
You Are Here
...and here
Unclear
Objectives
Lack of
Experience
...and here
Tuesday, 29 October 13
22. Bugs and
Defects
...and here
New Features
Unknown
Architecture
...and here
On Time and
Under Budget
...and here
Inconsistencies
You Are Here
...and here
Unclear
Objectives
Lack of
Experience
...and here
Tuesday, 29 October 13
23. Bugs and
Defects
...and here
New Features
Unknown
Architecture
...and here
On Time and
Under Budget
...and here
Inconsistencies
You Are Here
...and here
Unclear
Objectives
Lack of
Experience
...and here
Tuesday, 29 October 13
24. Bugs and
Defects
...and here
New Features
Unknown
Architecture
...and here
On Time and
Under Budget
...and here
Inconsistencies
You Are Here
...and here
Unclear
Objectives
Lack of
Experience
...and here
Tuesday, 29 October 13
26. > You are in a cluttered code base.
Everywhere you turn you see
different people’s styles.
> There are bugs to be fixed, and
new features that must be
implemented.
> Some users suggest improvements to
your product, others will kill you
if you change a thing.
> What do you want to do?
> _
Tuesday, 29 October 13
38. > What do you want
to do?
>_
Tuesday, 29 October 13
39. > What do you want
to do?
>_
Tuesday, 29 October 13
40. Our Solution
• Get them onboard
• Use the Scala driver as the guinea pig
• Give Morphia some love
• Talk to Spring
• Tests are your friends
Tuesday, 29 October 13
43. > What do you want
to do?
>_
Tuesday, 29 October 13
44. > What do you want
to do?
>_
Tuesday, 29 October 13
45. Our Solution
• An architecture
• Supports both APIs
• ...bonus of supporting other APIs too
• Tests tell us if we’ve done it right
Tuesday, 29 October 13
54. I wish...
• I had asked more questions.
• Particularly “why”
• I better understood my priorities
• We could use the whiteboard more
• I had focussed on tests even more
Tuesday, 29 October 13