How then to document the patterns I'm uncovering in my archeological digs?
This is the issue with which I'm currently struggling. This is yet another incremental and iterative activity: I won't feel comfortable until after I've documented all of the architectural patterns I've discovered. For now, however, I'm studying these other sources, extracting a canonical form for documenting patterns, and trying to document a few new patterns against this form.
In the meantime, for your reading pleasure while I munch on these issues, here's the structure of a few of these forms:
- Beck and Johnson
- form, aliases, problem, context, forces, solution, resulting context, rationale, known uses, related patterns, sketch, author, date, references, keywords, example
- preconditions, problem, constraints, solution
- description, example, context, problem, solution, structure, dynamics, implementation, variants, example resolved, known uses, consequences, see also, credits
- problem, forces, solution
- how it works, when to use it, example
- name, kind, intent, also known as, motivation, applicability, structure, participants, collaborations, consequences, implementation, sample code, known uses, related patterns
- synopsis, context, forces, solution, consequences, implementation, code example, related patterns,
- motivation, mechanics, example
- view, role, aspect, summary, context, problem, solution, related patterns, publication, attribution
- problem, solution, context, forces
- context, problem, background, scoluion, hardware resource implications, reliability and safety implications, portability, overall strengths and weaknesses, related patterns and alternative solutions, example, further reading
- forces, solution, name, part of
- title, abstract, intent, motivation, solution, trade-offs
- context, problem, forces, solution, approach, design considerations, example, resulting context, benefits, liabilities, testing considerations, security considerations, operational considerations, known uses, related patterns
Please feel free to email me if you have a particular form you've found useful.