The following is an example of the Architectural Design Document from a previous CMSI 401 project, which you can use as an example of the level of detail expected. Notice that the diagrams at the bottom of the document are very high-level, as are the class explanations. However, there are sections for every class and method that are expected to be included in the entire project.

Remember: this is an iterative process. All software engineers are expected to "re-visit" their documentation during development to make sure it is correct, meaning it matches the current implementation. If your project ends up not needing one of the classes or methods you have documented, it is extremely unhelpful to later maintainersc if the documentation still shows that method as part of the project. This is one of the reasons that modern projects use some form of automated documentation generator, like javadocs, autodoc, or doxygen.



6.0  RAPID Architectural Design

6.1  Introduction

This document presents the Architectural Design for the RAPID project. RAPID is an integrated, GUI-driven, Product database management system, allowing users to query a database, determine if a product is available for sale, the quantity, price, and status of all products and components, coupled with an automated entry system using a barcode scanner. Multiple client connections to the database are supported, along with client account validation via a login and password.

6.1.1  System Objectives

The goals of this project are to provide a user-friendly, comprehensive system for inventory management. As a model, the project uses a small bottling plant enterprise. Products in the system are comprised of various components, so each product has a specific list of components which must all be present in the inventory in sufficient quantity to create the desired amount of product for any order. Components may belong to more than one product. If a component for a product is out of stock, or is back-ordered, the entire product is considered to have the same status – thus products are inter-related.

6.1.2  Hardware, Software, and Human Interfaces

The hardware interfaces for this project consist of a TCP/IP network, such as the internet or a LAN. Also, a bar-code reader and it's appropriate interface (usually either a serial port or a USB port are required) will be needed to scan incoming and outgoing products and their components. Networking between clients and the server is accomplished via standard Berkeley Socket interfacing. Wireless networking is not directly supported, but is not precluded in the design. The server is threaded to handle multiple connections, and uses a system of "callbacks" to handle functions for all buttons and indicators.

6.2  CSCI Descriptions

Three CSCs compose the RAPID system CSCI, as follows:

6.2.1  Concept of Execution

The RAPID system execution begins with starting the Microsoft Access Database. Once this part of the application is active, the RAPID server can be started. Server initialization will automatically connect to the database, and will display a GUI to the user to allow monitoring of up to ten client connections. At this point, a client may connect to the system from any terminal capable of running a Java application.

The client initialization requires logging in to the system, via a log in screen which appears at startup. Successful access validation will cause the appropriate level client GUI screen for that user to be displayed. Client accounts are assigned their access levels by the system administrator, who also must have an account on the system. The GUI screens for accounts thus differ by the level of account access assigned. Once the client has connected, any function which is available on the screen can be used to access the database. Queries for products are available, using drop down lists. When a product is selected, all remaining fields of the display are filled in with lists of components for that product, availability for the product and all components, and backorder status where applicable. The client screen can also be used to track an order by order number, or to submit an entirely new order. In the latter case, if insufficient quantities of any component are available to complete the order, the operator is notified and provided an opportunity to modify or cancel the order.

6.2.2  Interface Design

The following sections provide detail of the different interfaces between the segments of the RAPID project. (This example is minimal, just to give you an idea, and as this project didn't use UML for its diagrams, it's not technically correct; you get the idea.)

6.2.2.1  Interface Identification and Diagrams

6.2.2.1.1  Client Class and Function Modules



Figure 9.1: RAPID Client Class and Functional Diagrams



6.2.2.1.2  Server and Database API Modules



Figure 9.2: RAPID Server and Database API Functional Diagrams



6.2.2.2  Project Interactions

A proprietary messaging format is developed for use in communications within the RAPID project. The message format consists of a stream of bytes, which are defined as follows:

  1. A 4-byte integer value containing the message type
  2. A 4-byte integer value containing the message length
  3. An n-byte message string which is the length of the value of the second field

The various message formats are contained in the message field and will be interpreted based on the value of the first field. The method is to read the first two integers for every message, interpret the number of bytes to read after that, and read that many bytes from the socket. when all bytes have been successfully read, the message is interpreted by "casting" it to the proper structure internal to the client or server.

6.3  Preliminary User Manual

Actually, I'll leave this to your imagination — I won't do all the work for you!


Next Document