Upload
jaxlondonconference
View
404
Download
0
Tags:
Embed Size (px)
DESCRIPTION
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?
Citation preview
Trisha Gee, Java Driver Developer
#JAXLondon
Design is a Process, not a Document
@trisha_gee
Tuesday, 29 October 13
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.htmlTuesday, 29 October 13
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
Agile Design
<This Page Left Intentionally Blank>
Tuesday, 29 October 13
Design is a Process, not a Document
Tuesday, 29 October 13
The Problem
Tuesday, 29 October 13
Tuesday, 29 October 13
Tuesday, 29 October 13
Tuesday, 29 October 13
Tuesday, 29 October 13
Constraints:
Tuesday, 29 October 13
Backwards Compatibility
Tuesday, 29 October 13
>
>
What do you want to do?_
Tuesday, 29 October 13
>
>
What do you want to do?_
Tuesday, 29 October 13
Design is a Process, not a Document
Tuesday, 29 October 13
Unknown Architecture
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
Tuesday, 29 October 13
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
Tuesday, 29 October 13
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
Tuesday, 29 October 13
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
...and here
...and here
...and here
...and here
...and here
Tuesday, 29 October 13
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
...and here
...and here
...and here
...and here
...and here
Tuesday, 29 October 13
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
...and here
...and here
...and here
...and here
...and here
Tuesday, 29 October 13
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
...and here
...and here
...and here
...and here
...and here
Tuesday, 29 October 13
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
...and here
...and here
...and here
...and here
...and here
Tuesday, 29 October 13
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
...and here
...and here
...and here
...and here
...and here
Tuesday, 29 October 13
Where do I start?
Tuesday, 29 October 13
> 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
Consiste
ncy
Readability
Consistency
Maintainability
Immutability
Testability
Speed
Tuesday, 29 October 13
Design Goals
• Consistency
• Cleaner design
• Intuitive API
• Understandable Exceptions
• Test friendly
• Backwards compatible
Tuesday, 29 October 13
In The North Tower...
Tuesday, 29 October 13
Lack of consistencyTuesday, 29 October 13
>
>
What do you want to do?_
Tuesday, 29 October 13
>
>
What do you want to do?_
Tuesday, 29 October 13
Why bother?
Tuesday, 29 October 13
Our Solution
• Static analysis
• Build tools
• Discipline
Tuesday, 29 October 13
Win!Tuesday, 29 October 13
Meanwhile, in the East...
Tuesday, 29 October 13
Other adventurers!Tuesday, 29 October 13
>
>
What do you want to do?_
Tuesday, 29 October 13
>
>
What do you want to do?_
Tuesday, 29 October 13
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
Lurking All Around...
Tuesday, 29 October 13
Backward CompatibilityTuesday, 29 October 13
>
>
What do you want to do?_
Tuesday, 29 October 13
>
>
What do you want to do?_
Tuesday, 29 October 13
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
On the Southern Front
Tuesday, 29 October 13
The Public APITuesday, 29 October 13
>
>
What do you want to do?_
Tuesday, 29 October 13
>
>
What do you want to do?_
Tuesday, 29 October 13
Our Solution
Tuesday, 29 October 13
Our Solution
• Committees
• Documents / Spreadsheets
• Meetings
• Research
Tuesday, 29 October 13
Our Solution
• Committees
• Documents / Spreadsheets
• Meetings
• Research
• Hack Days
• Conferences
• Early Access
Tuesday, 29 October 13
Retrospective
Tuesday, 29 October 13
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
Conclusion
Tuesday, 29 October 13
Tuesday, 29 October 13
Tools
Tuesday, 29 October 13
Your Inventory
• Your Technical Skills
• Your Domain Knowledge
• Your Life Experience
• Your Questions
Tuesday, 29 October 13
Environmental Inventory
• The Domain
• The People
• The Hardware
• Chosen Technology
• Existing Code / Application / Platform
Tuesday, 29 October 13
Your Inventory Grows
• Skills you learn
• Tools you research
• Team changes
Tuesday, 29 October 13
Some Examples
• Tests. Always a Good Thing
• Static Analysis
• An automated build
• Bug/feature tracker
• Visibility of WIP
Tuesday, 29 October 13
Design is a Process, not a Document
Tuesday, 29 October 13
http://is.gd/java3mongodb
#JAXLondon
Questions
@trisha_gee
Tuesday, 29 October 13