Introduction

This year, you are required to write and submit a design document for every check-point. A design document provides a high-level overview of your web server. It is a means for you to communicate to us, what your design decisions are and why those decisions are good decisions. In the industry, it is highly likely that you will be required to write a design document or specification as your responsibilities grow. By asking for a design document early, we hope you will think about the structure of your final P1 project submission before you start coding. This can save time by minimizing the need to restructure or rewrite code for the later checkpoints.

Guidelines

The design document should describe the structure of your code as a set of modules that communicate through interfaces. This is best done using a flow diagram that is described in the text. Feel free to consult open source references such as BESS. Specifically we want you do document:

  • What are the key data structures? Why did you choose them?
  • What components (modules) constitute your web server? Why did you decide to have them?
  • What is the high-level objective of each component (module)?
  • How does individual components (modules) interact with each other?
  • What are the important APIs?
  • We understand that you may not be able to present a detailed design for the full server at initial stages. What we hope to see for the first checkpoint is your best guess at what modules you will need in the final design and how they are connected. You should include more detail for both the modules and interfaces that you have implemented, for example by briefly describing key data structure.

    Grading

    The design document will constitute 5% of the P1 project weightage. At each checkpoint, we expect you to have the design document turned in reflecting the current state of implementation. Even in the event that your code does not pass all the test cases for some reason, it is likely that you will still get partial credit points for it if we find your solution design very convincing. Hence, treat this document as seriously as your actual code.

    Submission

    We require you to submit a pdf file titled design.pdf along with your source code as directed in the handout. The file must be short and concise and we expect you to have 2 pages of solid contents (11 pt font or higher). Anything more than that will simply not be read.