Author | Date Proposed | Last Updated |
---|---|---|
Your Name | 1/1/1970 | 1/1/1970 |
Brief explanation of the problem context (why is this a problem?)
A succinct (one-sentence) statement of the problem (what actually is the problem?)
Where does the problem start and end?
- First goal
- Second goal
- First non-goal
- Second non-goal
A brief, high-level explanation of the proposed design. It's probably best to avoid subsections here, or it can quickly devolve into a detailed design. Often this is headlined by an overall system diagram. Important new or changed APIs with examples should definitely be included here.
Skip this section in your first draft
Component-by-component sections, data, etc., as relevant to the particular system. These should include sketches of credible implementation plans mentioning specific technologies. They don't need to be so detailed that they are equivalent to writing the code.
Skip this section in your first draft
What new machines, people, money, etc. are needed to complete implementation?
Skip this section in your first draft
How your design affects other teams or parts of the software. Very project-specific. This includes API changes you might need, disruptions of others' work, etc.
Two or three credible alternatives to your proposal in "Design Overview" covered in equivalent detail.
These should be different in relevant dimensions (i.e. 3rd party vs 1st party, complexity vs performance). This should almost always include the dumbest/simplest possible way of solving the problem as a baseline, regardless of whether you consider that to be a practical choice. "Do nothing" is also an excellent scenario to consider for most design changes, though not super relevant to this particular design.