Design Documentation Template

by Joshua Finkler and Audrey Mcloghlin 

I. Essentials

When applicable, each of the following items should receive its own link:

II. Introduction

This section should provide an overview of this system and address at least the following issues: Also worthy of treatment in this section are the following issues: Note that it is entirely possible that a discussion of what a system is not intended to do might differ from a discussion of future improvements from which the system might benefit.
 
 

III. Historical Considerations

When designing a software solution to meet the constraints of a fixed set of design requirements, it is almost always the case that many possible mutually exclusive solutions are given consideration. Although eventually only one solution is implemented, a discussion of those alternative solutions canvassed during the software design process, with special attention paid to the reasons for which these alternative solutions were rejected, should ultimately prove quite helpful to future developers and will help ensure that no time is wasted on the analysis of problems already solved.

IV. Competitive Analysis

Although currently only a few system documentation pages contain a discussion of the features of software which competes with the ACS system at issue (e.g., chat, portals), this should be an essential feature of the documentation for any system for which there exists competing software. Note that such a discussion need not be coextensive with a discussion of a system's potential future improvements.
 
 

V. Design Tradeoffs

No single design solution can optimize every desirable system attribute. For example, an increase in the security of a system will entail a decrease in the simplicity of the system interface, and an increase in a the flexibility of a system typically entails a decrease in the simplicity of the structure of that system. As a result, a developer must decide to put a higher value on some attributes over others. This section should include a discussion of the tradeoffs involved with the design chosen and the reasons for this choice. Some areas of importance to keep in mind are:

VI. Data Model Discussion

The data model discussion should do more than merely display the SQL code for creating the relevant tables and sequences; this information should already be readily accessible via a link in the "essentials" section of the documentation. The discussion should constitute a high-level treatment of the primary entitites and main transactions relevant to the data model.
 
 

VII. Legal Transactions

This section should include a discussion satisfying each each of the following points:

VIII. API

This section should include a discussion of the particulars of the database API used to provide an abstraction barrier between the system code and the underlying core software, typically so as to help minimize unnecessary repetition in the system code. Although this information may be covered in more general detail in other sections of this document, this section is the appropriate place to discuss the details of each of the procs employed in the development of this system, including each of: Historically, the relevant procs have been encapsulated in a TCL file, however the current engineering effort encourages developers to avoid this practice. Also noteworthy is that although the ACS currently utilizes the AOLserver Tcl API, the current drive towards Java is likely to effect a change in the content of these sections in future instantiations.

IX. User Interface

This section should offer a discussion of any user interface considerations relevant to each of the three classes of intended system users: In order that developer documentation be uniform across different system documents, these users should herein be designated as "the developer", "the administrator", "the sub-admin", and "the user", respectively.

 Note that as our templating system becomes more robustly entrenched within the ACS, the details within this section are likely to shift from UI specifics to template interface specifics. Areas of interest to users:

Areas of interest to developers:

X. Configuration/Parameters

This section should discuss the parameters the user will need set in their .ini file in order to successfully employ the system. Discussion should focus on those parameters which may not be entirely perspicuous to a first-time user attempting to employ the system.
 
 

XI. Acceptance Tests

Although this information is available in a more comprehensive ACS installation document, a user new to a system should not be forced to wade through this entire document merely to ensure that they have their implementation of this system up and running. Ideally, this section will contain the relevant information from the larger document enabling acceptance testing of just this system. At a minimum, however, the document should contain a link to this section of the larger acceptance test document.
 
 

XII. Future Improvements/Areas of Likely Change

If the system lacks features which would be advantageous in the long-run, this should be noted here. Also noteworthy herein are ease-of-use considerations (e.g., UI and/or templating issues) not necessarily involving a system feature.

Note that a careful treatment of the earlier section entitled "competitive analysis" greatly facilitates the carrying out of the present section.
 
 

XIII. Authors

Although a system's data model file often contains this information, this does not hold true in general. Furthermore, data model files have often undergone substantial revision, making it difficult to track down the system creator from this information. Complicating matters, system documentation occasionally is authored by people not directly involved in the system creation process. Regardless of whether or not system ownership can be determined by appeal to these files, new system users should not be subjected to such a search simply in order to have access to some basic information about the history of system, such as system origin. Thus a mail link to the following should be included in each developer document:
 
 
jfinkler@arsdigita.com
audrey@arsdigita.com