Design is a process, not a Document
-
Upload
trisha-gee -
Category
Technology
-
view
4.257 -
download
3
description
Transcript of Design is a process, not a Document
Trisha Gee, Java Driver Developer
#vJUG
Design is a Process, not a Document
@trisha_gee
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
Managing the Development of Large Software Systems - Dr Winston Royce
http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
Agile Design
<This Page Left Intentionally Blank>
Design is a Process, not a Document
The Problem
Constraints:
Backwards Compatibility
>
>
What do you want to do?_
Design is a Process, not a Document
Unknown Architecture
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
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
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
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
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
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
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
Where do I start?
> 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?
> _
Consiste
ncy
Readability
Consistency
Maintainability
Immutability
Testability
Speed
Design Goals
• Consistency
• Cleaner design
• Intuitive API
• Understandable Exceptions
• Test friendly
• Backwards compatible
In The North Tower...
Lack of consistency
>
>
What do you want to do?_
Why bother?
Our Solution
• Static analysis
• Build tools
• Discipline
Win!
Meanwhile, in the East...
Other adventurers!
>
>
What do you want to do?_
Our Solution
• Get them onboard
• Use the Scala driver as the guinea pig
• Give Morphia some love
• Talk to Spring
• Tests are your friends
Lurking All Around...
Backward Compatibility
>
>
What do you want to do?_
Our Solution
• An architecture
• Supports both APIs
• ...bonus of supporting other APIs too
• Tests tell us if we’ve done it right
On the Southern Front
The Public API
>
>
What do you want to do?_
Our Solution
Our Solution
• Committees
• Documents / Spreadsheets
• Meetings
• Research
Our Solution
• Committees
• Documents / Spreadsheets
• Meetings
• Research
• Hack Days
• Conferences
• Early Access
Retrospective
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
Conclusion
Tools
Your Inventory
• Your Technical Skills
• Your Domain Knowledge
• Your Life Experience
• Your Questions
Environmental Inventory
• The Domain
• The People
• The Hardware
• Chosen Technology
• Existing Code / Application / Platform
Your Inventory Grows
• Skills you learn
• Tools you research
• Team changes
Some Examples
• Tests. Always a Good Thing
• Static Analysis
• An automated build
• Bug/feature tracker
• Visibility of WIP
Design is a Process, not a Document
http://is.gd/java3mongodb
#vJUG
Questions
@trisha_gee