#Documenting Software Architecture Neal Ford
The presentation started out talking about architecture but ended up primarily discussing presentation patterns and styles. Not a bad talk but not what I was expecting or hoping for.
How do you balance architecture and working software.
Who uses UML? A couple of people raised their hands half heartedly.
Fowler's "UML Distilled" ignores most of UML so it is the best book.
- Titles - keep them short and meaningful
- Arrows - use unidirectional arrows (double headed almost always a bad idea, ambiguous)
- Layout - sticky notes and index cards, if it took you days to make the diagram you won't change it
- Colors - add an extra dimension
- Shapes - don't expect people know what a shape means, be consistent
Simon Brown created it based on 4+1
- Context - who and what interacts with the system
- Container - deployable pieces
- Components - these are all the things in the system that do actual work
- Class - lowest level design things
Structerizer creates diagrams from a DSL. https://github.com/structurizr/java
Probably more structure than it is worth.
Don't change scale or abstraction within a diagram.
Architecture needs to be kept up to date. Current and archeology.
'Current' are things being kept up to date. 'Archeology' are things you no longer keep up to date.
We keep a collection of records of 'Architectural Significance' so we can look up why architectural decisions were made.
A small file kept in with your source code.
/doc/arch/adr-NNN.md
mxd/architecture/archive/ mxd/architecture/archive/
- Title a descriptive title
- Context forces as play
- Decision: what decision was made
- Status: proposed, accepted, superceeded
https://github.com/npryce/adr-tools
Neal emphasized AsciiDoctor tool.
You make the object of the action the subject.
"Why did the chicken cross the road" --passive--> "Why was the road crossed by the chicken" --> "Why was the road crossed."
Passive voice makes it easy to hide information which may be picked up on if you are hiding it or not.
- Any use of 'to be' - using 'is' instead
When you ARE trying to hide something.
- "Mistakes were made" when you want to avoid blame
Revise the stuff that you write.
When you are an architect you need to realize you have to communicate with people who are not developers.
- simple, declarative sentances
- draft & rewrite
- spell, grammar check
- use a trusted first reader
When I present slides I control when you see it. Documents allow the reader to see it.
Ford's book "Presentation Patterns"
Avoid:
- hard transitions
- too much text
- don't use auto-resizing
- "Bullet Riddled Corpse"
An infodeck is used for passing around by email for communication.
Presentation is used to control exposition rate.
A slideument is you are trying to use a duel purpose document.
Speaker notes can be used for details.
- introduction
- exposition
- climax
- resolution
A pattern
- problem
- solution
- problem
- solution
- exposition
- problem
- solution
- exposition
- ...
- overall summary
People lose track after 3 or so.
"Expansion Joists"
Implicit Expansion Joists - practice skipping slides gracefully
Explicit Expansion Joists
Adds another dimension to your presentation
Magic Move in Keynote
Transparency Shift
Backtracking to emphasize continuity
Cave Painting - Prezi - a slide layout with a huge canvas
- you can use magic move in keynote
Cookie Cutter
Charred Trail fades out the previous points