Software Design Specification For <Your Project Title> Submitted by <Your Team Name> Copyright (c) 2005, Gregory W. Hislop. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation. Table of Contents 1 Introduction ................................................................................................................. 3 1.1 Purpose................................................................................................................ 3 1.2 Scope ..................................................................Error! Bookmark not defined. 1.4 References ..........................................................Error! Bookmark not defined. 1.5 Overview ............................................................................................................. 3 2 Architectural Description ............................................................................................ 4 2.1 Component <ID 1> Decomposition .................................................................... 4 2.2 Component <ID 2> Decomposition ...................Error! Bookmark not defined. 3 Interface Description ................................................................................................... 4 3.1 User Interface ...................................................................................................... 4 3.2 Data Interface ...................................................................................................... 4 3.3 Programming Interface ....................................................................................... 4 4 Detailed Design ........................................................................................................... 4 4.1 <Entity ID> – <Entity Name> ............................................................................ 4 4.1.1 Type ............................................................................................................ 5 4.1.2 Purpose........................................................................................................ 5 4.1.3 Description .................................................................................................. 5 2 1 Introduction The material here is the same as the corresponding sections in the requirements specification. Copy those sections and expand and update them as needed. Add any new high-level information that you have acquired since construction of the Software Requirements Specification. 1.1 Purpose This section describes the purpose of the software design document, not the project itself. 1.2 Scope This should be a short overview of the product. The audience is people who will use the product. 1.3 Definitions, Acronyms, and Abbreviations Do not define common technical terms. Do spell out all acronyms that you use. 1.4 References Reference any documentation pertaining to this document. Include a reference to the requirements specification. 1.5 Overview This section is about the rest of the Software Design Specification, not about the product. Provide the reader with a brief description as to what the rest of the document contains. 3 2 Architectural Description The goal is to provide a high level view of the design. This high-level design is intended to describe how your project fits into the larger Sahana project. If you are developing a Sahana module, you should describe how this module relates to the larger Sahana project. If your project is contained within a module, you should describe the module in which your project is embedded and how your project impacts the module. If you are working on a breadth application that spans multiple modules, you should describe the modules impacted and the impact. 2.1 Component <ID 1> Decomposition If you are developing a module, a high-level decomposition of the module should be included here. Simply identify the main components or sub-modules in the module. 3 Interface Description This section is used to describe the various interfaces between your product and people or other systems. 3.1 User Interface Describe the user interface. Include a diagram showing screens (if any) and how they relate to each other. Describe the general purpose of each screen. Define messages produced by the product. Do not show specific screen layouts in this section. The specific screens should be presented in Section 4 Detailed Design. The idea for this section is to capture all user interfaces at a high level. 3.2 Data Interface Define files or other data that moves into or out of this system (except via the user interface). 3.3 Programming Interface Define any application programming interfaces available for the product that allow other systems to interact with the product. 4 Detailed Design Repeat subsections as needed. You should provide one or more detailed diagrams of your design that show the subunits, components, or submodules in your design. These diagrams should contain a rectangle for each component and how components are related. 4.1 <Entity ID> – <Entity Name> Uniquely define each entity. Provide a readable name and use it consistently with any diagrams. 4 4.1.1 Type Identify what type of an entity this is (e.g., a class, a screen, a database table, etc). 4.1.2 Purpose Identify the requirement that this entity implements. This ensures traceability, allowing you to check that all requirements can be traced to a design element and that a design element can be traced back to its requirement in the SRS. 4.1.3 Description Provide a detailed description of the entity. This may vary somewhat depending on the entity type. Possible descriptions include interface, processing, and data. For example, if the entity is a screen, this section may include a screen layout, a definition of the data elements, and a description of use. If the entity is an object, the description might include pseudocode or other description of processing and a definition of data. Note that entities may be nested. For example, you could have a database entity (include a description of the table and columns). You could then have separate sub-sections for each table within the database 5