Technical Design Documents
A technical design document (TDD) describes an approach to a specific technical problem. In the context of software engineering, it serves as the blueprint and specification for a software program or feature. TDDs are useful in both communicating and organizing your approach, while also being dynamic drafts that encompass the abstract details of the project.
You will be using design documents for Projects 4 and 5.
It may be useful to include snippits of psuedocode or other portions of plain-text outlining your ideas. Don’t get too carried away with this. If you find yourself writing every method line-for-line in psuedocode, you’re likely straying away from the high-level brainstorming process that a TDD is meant for.
Design Document Format
For this class, TDDs will consist of the following components:
- Data
- Data Structures
- Algorithms
- Complexity
- Questions
- Diagram
Data
What data will you be using? What does the data consist of and how will you parse it for your program? How will your program use the data?
Data Structures
What data structures will you be using? How will your data structures use the data? How will your program use the data structures?
Algorithms
What algorithms will you be using? How will your algorithms use the data structures and data? How will your program use the algorithms?
Complexity
What is the input? How does the time and space complexity change with the input? What are the bounds?
Questions
Open Questions
What questions have come up while brainstorming your design? Consider asking them in assignment section or office hours!
Closed Questions
Move questions here once you’ve found an answer. Logging your decision-making process provides essential context for others wishing to understand/contribute to your work.
Diagram
Visualize your data structures and algorithms into a diagram, such that someone seeing your document for the first time could instantly get a general idea of your implementation. You can use any drawing tool you like, but if you are unsure and looking for one, you can use draw.io