CSCI 240 - Design Document

Due Tues Oct 2 at the beginning of class
(bring draft to class Fri 9/28)

The Assignment

To aid in designing the Vir-Char system across multiple divisions, each group will produce a Software Design Document for their division's product. This document will detail both the high level architecture and the design of individual models, including the software interfaces for those modules. Make sure to also specify the components and functionality of any third-party packages you may be using.

Although your document will not exactly follow the standard, you may be interested in the IEEE Standard 1016 for SSDs. Diverging from this standard, your document should have the following sections:

  1. Cover Page: Include a cover page with the name of the project, your division, and the names of all your team members.
  2. Introduction: You should briefly describe the product that this document describes, including its overall purpose and goals and use context.
  3. Architecture Design: Detail the high-level architecture of your division's particular product. Be sure to include a diagram of the architecture to help explain it. You should also include a description of the overall system's architecture to explain how your division's project fits into the whole. Thoughout the document, define any terms used in conceptual classes, attributes, or associations that might not be clear to a lay person. Be sure to include a description of any interfaces provided or required by your product, so that other groups may know what they need to offer or use!
  4. Module Design: Detail each individual module that makes of your product's architecture. Each module should include:
    • An appropriate name
    • Description (a short description of the module and its internal architecture, if any)
    • Purpose statement (a couple sentences detailing the responsibilities of this module)
    • Provided interface (the functionality that the module provides; this does not need to be in code, but can just be a set of "hooks")
    • Required interface (the functionality that the module requires; e.g., what "hooks" it needs to be able to call on)
  5. Other Design Views: You may need to model the design of other views of your system--for example, the design of the data model if you have a complex database. Include whatever is needed to explain how your product is going to be designed and will integrate with the rest of the Vir-Char system.
  6. Design Rationale: Describe the rationale for your design decisions--why you choose a particular architecture and any notable details for particular modules. Basically, you want to argue that your design will effectively meet the requirements set out in your Requirements Document.
  7. Implementation Notes: Finally, include a discussion reflecting on your plans to implement this design. Are there certain programming languages or packages you will use for particular modules? How will you be able to implement the module interfaces you describe? What tools will you use to complete this implementation (e.g., for version control, project management, code documentation, etc.)
  8. Glossary and References: As always, be sure to define any technical terms you use, and to include links and pointers to any tools, packages, or systems that you mention in your document. Always cite others' work!

Submitting

Upload a pdf copy of your document through Moodle.