Warning: There is a lot of flexibility in the way this document can be completed. We have discussed this flexibility in class. What that means is that you as a team are going to have to decide what information ultimately becomes part of your design document. The basic heuristic you should apply here is that the design document is to be used by the programming team to directly implement the prototype. Another high-level heuristic is to understand that the design document needs to:
Use this template to complete your design document.
From the Project Milestones we have that a Design document is
A detailed description of how the system will be built, including, for example any object-oriented analysis and design to show the system structure.
-->Cut Here<--
Spring Quarter 1996 Document Author: Name of author Project Sponsors: Sushil Louis |
[Project Name] Team: Name (Manager)
|
Figure 1: Sample architecture drawing (WWW)
In this section, I want you to provide a high-level decomposition of your architecture in the form of a box-and-line diagram accompanied by a natural language description of the dynamic behavior. A sample of the kind of description I am looking for is the following used to describe the architecture in Figure 1:
The Web is a distributed hypermedia system organized as a loosely connected set of clients and servers that share a common set of communication protocols and markup languages. Servers make Internet resources available to a community of clients that speak a common protocol. In addition, WWW clients typically understand a number of other protocols. Figure 1 depicts the WWW software architecture. In this example, we only consider the connection between a WWW client and WWW server, even though it is possible for a WWW client to natively speak to other IISs (Gopher, FTP, etc.).WWW clients provide a User Interface Manager. This manager can be graphical or character based. The User Interface Manager captures user's request for information retrieval in the form of a Uniform Resource Locator (URL) and passes the information to the Access Manager. The Access Manager determines if the requested URL exists in cache and also interprets history-based navigation, e.g. `back'. If the file is cached, it is retrieved from the Cache Manager and passed to the Presentation Manager for display to either the User Interface or an external viewer. If the file is not cached, the Protocol Manager determines the type of request and invokes the appropriate protocol suite to service the request. This protocol is used by the client Stream Manager for communicating the request to the server. Once the client Stream Manager receives a response from the server in the form of a document, this information is passed to the Presentation Manager for appropriate display. The Presentation Manager consults a static View Control configuration file (mimerc, mailcap, etc.) that aids in the mapping of document types to external viewers.
Currently, the WWW servers available implement a subset of defined HTTP requests. This subset allows for: the retrieval of documents; the retrieval of document meta-information; and server-side program execution via the Common Gateway Interface (CGI).
When a request is received by the server Stream Manager, the type of request is determined and the path of the URL is resolved via the Path Resolver. The HTTP Server consults an Access List to determine if the requesting client is authorized to access the data pointed to by the URL. The HTTP Server might initiate a password authentication session with the client to permit access to secured data. Assuming authentication succeeds, the HTTP Server accesses the File System (which is outside the WWW Server boundary) and writes the requested information to stream. If a program is to be executed, a process is made available (either new or polled) through the CGI and the program is executed, with the output written by the server Stream Manager back to the WWW Client.
If you are not doing an object-oriented approach, then you can still further subdivide the units of your architecture from the previous section to describe various compilation units of your system. Each compilation unit will have a set of defined operations or procedures that it defines and provides as a programming interface to other units in the system. Each compilation unit should be clearly defined in terms of some design template which lists the name of the procedure, its arguments (and their types) and gives a brief description of what that procedure should do (pseudocode is fine).
For those doing Java implementations, find out about the javadoc utility to automatically create HTML documentation of Java classes.