| |
Project: design paper
This page provides details on assignment 1-2-3.
It is assigned in week 4 and
due in week 9.
It is worth 150 points. It is a group assignment.
Your design paper must cover at least the following
(of course you can say more if you want to):
- General
- What patterns, if any, are you using to guide
your design?
- What are your guiding principles?
- Module decomposition
- List the major Java packages you will have,
and their responsibilities
- What are the inter-module dependencies?
- How will your architecture keep secondary
copies of notebooks in synch with the primary copy?
- At runtime: implementation of major use cases
- Describe the interaction among your major
packages to support creating a notebook
- Describe the interaction among your major
packages to support adding a note to a notebook with
secondary copies
- Shared data - at any given time, the notebook
service may be processing requests from
multiple concurrent clients
- What are the major data structures that will be
shared across the threads that handle concurrent requests? This list
must include at least the list of notebooks, and the content of each
notebook.
- How will you protect those data structures
from corruption?
- Testability
- How will you test your notebook service?
- How will you test that secondary copies are
kept up-to-date?
- How will you test your directory service?
- What automated tests will you write?
- What modules, if any, will be testable outside the app
server?
- What aspects of your design support
outside-the-app-server testing?
- Scalability
- Estimate the load on the directory service,
assuming the capacity
requirements (in the Value for a real system column)
- What changes, if any, would you have to make
in your design in order to support that load and/or reduce it to a
manageable level?
|