School of Computing Internal Design
Document
CISC 498
Information Technology Project
[Home
| Projects
| Resources
| Details]
The purpose of a system's internal design document is to communicate to implementers how the system should be built. The internal design document should specify the system's architecture, deployment information, algorithms of note, special plans for addressing noteworthy quality requirements, and programming tools to be used.
Internal design is iterative; plan to revise and rethink aspects of your design as you work through implementation, and as you continue to work with your customer to refine your understanding of the system's requirements.
The contents of an internal design document are influenced by the kind of software being developed. A simple web application will typically have a less stringent level of document than that of a safety-critical system such as control code for a nuclear reactor or software controlling brakes in a car. You may adapt the following template as necessary to suit the software you are developing.
Your external design document should be about 20 pages in length, and should contain the following sections:
Introduction Remind the reader of the goals of your
system, and give an overview of the structure and contents
of the internal design document. Programming environment Detail the programming tools and
languages that you will use to create the system. Specify,
for example, your IDE, programming language(s), compilers
(and versions), database system, source control system, UML
tool, etc. Software architecture This will most likely be the largest
section of the document. See details below. Data design If your system may interact with
persistent data, for example, input/output files or a
database, specify the format of this data. Useful ways of
specifying your data might include BNF specification of data
files, XML Schema specification of XML formats, and ER
diagrams and relational schemas for databases. API design If your system provides an API to
application programmers, provide a clear and detailed
specification of the API. Algorithms Specify any complex algorithms used in
your system. If the algorithm is standard, provide a
reference to where the reader can learn about it. If the
algorithm is non-standard, provide pseudo-code or other
appropriate description. Notable tradeoffs You may have had to make design
tradeoffs to meet the system's quality requirements (e.g.,
related to availability, security, performance, etc.)
Discuss these tradeoffs, with specific reference to your
system's design as discussed in the above
sections. Notable risks Discuss any areas where you
potentially risk failing to meet the system's requirements.
Relate these risks to specific aspects of the internal
design. Specify how you plan to address and ameliorate these
risks. Milestones Update the milestones from your
project plan to cover the weeks from Nov. 18, 2008 to Feb
24, 2009, your system presentation.
Note in the above that different systems will place more or less emphasis on different parts. Some systems will provide no API, therefore will require no API specification. Other systems will have no complex algorithms to discuss. Other systems may have little or no persistent data. Adapt this structure to best suit your application.
The description of your software architecture will consist of:
In general, the goal of the architectural description is to be sufficiently detailed, precise and clear that a design team can use the document as the basis for implementation.