CMS System Design Document
CMS System Design Document
Document Number: <documents configuration item control number> Contract Number: <current contract number of company maintaining document>
1.3
2/11/2010
2.0
11/4/2010
When using this template, follow these steps: 1) Replace all text enclosed in angle brackets (e.g., <System Name (Acronym)>) with the appropriate information for the specific project. These angle brackets appear in both the body of the document and in headers and footers. 2) Modify any boilerplate text as appropriate to the specific project. 3) To add any new sections to the document, ensure that the appropriate header and body text styles are maintained. Styles used for the section headings are Heading 1 (Times New Roman 16 pt) and section sub-headings are Heading 2 (Times New Roman 14 pt). The style used for boilerplate and body text is Body Text (Times New Roman 12 pt). 4) To update the Table of Contents, right-click and select Update field and choose the option Update entire table. Ensure that sub-headings at each level in the Table of Contents are appropriately indented for improved readability. 5) Delete this Notes to the Author page and all instructions to the author (i.e., all blue italicized text enclosed in square brackets) before finalizing the initial draft of the SDD.]
_____________________________________________________________________________________________ System Design Document <Version # / Date> ii
APPROVALS
[Obtain signature approval of the final document from the delivering organizations Project Manager and the primary CMS recipient (i.e., generally the Government Task Leader (GTL)). Signature approval must also be obtained from the CMS Business Owner and the CMS Records Officer. Additional signature lines may be added as needed.] The undersigned acknowledge that they have reviewed the System Design Document and agree with the information presented within this document. Changes to this System Design Document will be coordinated with, and approved by, the undersigned, or their designated representatives. Signature: Print Name: Title: Role: Date:
Date:
Date:
Date:
REVISION HISTORY
[Use the table below to record information regarding changes made to the document over time.] Version Date Organization/Point of Contact Description of Changes 1.0 <mm/dd/yy> <Organization Identifier / Point-of- Baseline Version Contact Name>
TABLE OF CONTENTS
1. 2. 3. 4. INTRODUCTION ..................................................................................................................1 REFERENCED DOCUMENTS ............................................................................................1 OVERVIEW ............................................................................................................................2 ASSUMPTIONS/CONSTRAINTS/RISKS ..........................................................................2
4.1. 4.2. 4.3. ASSUMPTIONS ............................................................................................................................. 2 CONSTRAINTS ............................................................................................................................. 2 RISKS .......................................................................................................................................... 3 GOALS AND GUIDELINES ............................................................................................................ 3 DEVELOPMENT METHODS AND CONTINGENCIES ....................................................................... 3 ARCHITECTURAL STRATEGIES .................................................................................................... 4 HARDWARE ARCHITECTURE ....................................................................................................... 5 INTERNAL COMMUNICATIONS ARCHITECTURE .......................................................................... 7 SOFTWARE ARCHITECTURE ........................................................................................................ 6 SYSTEM ARCHITECTURE DIAGRAM ............................................................................................ 7 DATA OBJECTS AND RESULTANT DATA STRUCTURES ............................................................... 8 FILE AND DATABASE STRUCTURES ............................................................................................ 8 7.2.1 Database Management System Files .............................................................................. 8 7.2.2 Non-Database Management System Files ...................................................................... 8 INPUTS......................................................................................................................................... 9 OUTPUTS ................................................................................................................................... 10
5.
DESIGN CONSIDERATIONS..............................................................................................3
5.1. 5.2. 5.3.
6.
7.
8.
9.
LIST OF FIGURES
[Insert a List of Figures appearing within the SDD along with a page reference for each identified figure as appropriate. Labels of Figure titles and descriptions are to be placed centered, above the figure within the main body of the document. All figures must have an associated tag providing appropriate alternative text for Section 508 compliance.] <Figure #: Figure Title or DescriptionPage Number>
LIST OF TABLES
[Insert a List of Tables appearing within the SDD along with a page reference for each identified table as appropriate. Labels of Table titles and descriptions are to be placed centered, above the table within the main body of the document.] Table 1: Referenced Documents .................................................................................................... 2
1. INTRODUCTION
[Provide identifying information for the existing and/or proposed automated system or situation for which the SDD applies (e.g., the full names and acronyms for the development project, the existing system or situation, and the proposed system or situation, as applicable), the intended audience for the document, and expected evolution of the document. Also describe any security or privacy considerations associated with use of this document.] The System Design Document (SDD) describes how (1) the functional and nonfunctional requirements recorded in the Requirements Document, (2) the preliminary user-oriented functional design recorded in the High Level Technical Design Concept/Alternatives document, and (3) the preliminary data design documented in the Logical Data Model (LDM) are transformed into more technical system design specifications from which the system will be built. The SDD is used to document both high-level system design and low-level detailed design specifications. The SDD describes design goals and considerations, provides a high-level overview of the system architecture, and describes the data design associated with the system, as well as the human-machine interface and operational scenarios. The high-level system design is further decomposed into low-level detailed design specifications for each of the systems components, including hardware, internal communications, software, system integrity controls, and external interfaces. The high-level system design serves as primary input to the Preliminary Design Review (PDR). The low-level detailed design serves as input to the Detailed Design Review (DDR).
2. REFERENCED DOCUMENTS
[Summarize the relationship of this document to other relevant documents (e.g., the Requirements Document, High-Level Technical Design, Logical Data Model, Interface Control Document (ICD), Database Design Document (DDD), Data Conversion Plan, and Release Plan, if they exist). Identify if there are multiple ICDs. Provide identifying information for all documents used to arrive at and/or referenced within this document (e.g., related and/or companion documents, prerequisite documents, relevant technical documentation, etc.).]
<System Name and/or Acronym> Table 1: Referenced Documents Document Name <document name> Document Number <documents configuration item control number> Issuance Date <Month Day, Year>
3. OVERVIEW
[Briefly introduce the system context and the basic design approach or organization, and discuss the background to the project. Provide a brief overview of the system and software architectures and the design goals. Explain what the proposed system will do (and not do, if necessary). Describe the relevant benefits, objectives and goals as precisely as possible. Include the highlevel context diagram(s) for the system and subsystems previously provided in the High-Level Technical Design Concept/Alternatives and/or Requirements Document, updated as necessary to reflect any changes that have been made based on more current information or understanding. If the high-level context diagram has been updated, identify the changes that were made and why.]
4. ASSUMPTIONS/CONSTRAINTS/RISKS
4.1. Assumptions
[Describe any assumptions or dependencies regarding the system, software and its use. These may concern such issues as: related software or hardware, operating systems, end-user characteristics, and possible and/or probable changes in functionality.]
4.2. Constraints
[Describe any global limitations or constraints that have a significant impact on the design of the systems hardware, software and/or communications, and describe the associated impact. Such constraints may be imposed by any of the following (the list is not exhaustive): a) Hardware or software environment b) End-user environment c) Availability or volatility of resources d) Standards compliance e) Interoperability requirements f) Interface/protocol requirements g) Licensing requirements h) Data repository and distribution requirements
_____________________________________________________________________________________________ System Design Document <Version # / Date> 2 of <max pages>
<System Name and/or Acronym> i) j) k) l) m) n) o) Security requirements (or other such regulations) Memory or other capacity limitations Performance requirements Network communications Verification and validation requirements (testing) Other means of addressing quality goals Other requirements described in the Requirements Document]
4.3. Risks
[Describe any risks associated with the system design and proposed mitigation strategies.]
5. DESIGN CONSIDERATIONS
[Describe issues which need to be addressed or resolved before attempting to devise a complete design solution.]
6. SYSTEM ARCHITECTURE
[Provide an overview of how the functionality and responsibilities of the system were partitioned and then assigned to subsystems or components. Dont go into too much detail about the individual components themselves in this section. A subsequent section of the SDD will provide the detailed component descriptions. The main purpose here is to gain a general understanding of how and why the system was decomposed, and how the individual parts work together to provide the desired functionality.
<System Name and/or Acronym> At the top-most level, describe the major responsibilities that the software must undertake and the various roles that the system (or portion of the system) must play. Describe how the system was broken down into its components/subsystems (identifying each top-level component/subsystem and the roles/responsibilities assigned to it). Describe how the higherlevel components collaborate with each other in order to achieve the required results. Provide some sort of rationale for choosing this particular decomposition of the system (perhaps discussing other proposed decompositions and why they were rejected). Make use of design patterns whenever possible, either in describing parts of the architecture (in pattern format), or for referring to elements of the architecture that employ them. Provide rationale for choosing a particular algorithm or programming idiom (or design pattern) to implement portions of the systems functionality.]
6.1.1
[Describe the hardware components and configuration supporting the security and privacy of the system. Specify the architecture for (1) authentication to validate user identity before allowing access to the system, including the use of IACS/EUA or other type of Identity Vetting & Authentication system;(2) authorization of users to perform functional activity once logged into the system, (3) encryption protocol to support the business risks and the nature of information, and (4) logging and auditing design, if required. The design should be based on the designated system security level and provide adequate protection against threats and vulnerabilities.]
6.1.2
[Describe the hardware components and configuration supporting the performance and reliability of the system. Identify single points of failure and, if relevant, describe high availability design (e.g., clustering).]
6.2.1
[Describe the software components and configuration supporting the security and privacy of the system. Specify the architecture for (1) authentication to validate user identity before allowing access to the system, including the use of IACS/EUA or other type of Identity Vetting & Authentication system;(2) authorization of users to perform functional activity once logged into the system, (3) encryption protocol to support the business risks and the nature of information, and (4) logging and auditing design, if required. The design should be based on the designated system security level and provide adequate protection against threats and vulnerabilities.]
6.2.2
[Describe the software components and configuration supporting the performance and reliability of the system. Identify single points of failure and, if relevant, describe high availability design (e.g., clustering).]
6.3.1
Records Management
Federal regulations issued by NARA are outlined at 36 CFR Subchapter B Records Management. Business Owners must contact OSORA to initiate the records management process. 6.3.1.1 6.3.1.2 6.3.1.3 [Identify all data (as well as the format of the datapaper, manual input, electronic data) supplied to the system as well as who/what is supplying the data.] [Provide instructions on what happens to the manual/electronic inputs after they are entered into the master file/database and are verified.] [Master Files Provide a detailed description of the data maintained in the system/database.]
7. DATA DESIGN
[Describe the design of all database management system (DBMS) files and non-DBMS files associated with the system. Provide a comprehensive data dictionary showing data element name, type, length, source, validation rules, maintenance (create, read, update, delete (CRUD) capability), data stores, outputs, aliases, and description. The Data Design information can be included as an appendix or recorded in a separate Database Design Document (DDD), as appropriate, which would be referenced here. A template for a DDD is available from the CMS Integrated IT Investment & System Life Cycle Framework website located at http://www.cms.hhs.gov/SystemLifecycleFramework/]
7.2.1
[Provide the detailed design of the DBMS files. Generally, this information should be documented in a separate DDD that should be referenced within this section. A template for a DDD is available from the CMS Integrated IT Investment & System Life Cycle Framework website located at http://www.cms.hhs.gov/SystemLifecycleFramework/ .]
7.2.2
[Provide the detailed description of all non-DBMS files and include a narrative description of the usage of each file that identifies if the file is used for input, output, or both, and if the file is a temporary file. Also provide an indication of which modules read and write the file and include file structures (refer to the data dictionary). As appropriate, the file structure information should include the following: a) Record structures, record keys or indexes, and data elements referenced within the records
_____________________________________________________________________________________________ System Design Document <Version # / Date> 8 of <max pages>
<System Name and/or Acronym> b) Record length (fixed or maximum variable length) and blocking factors c) Access method (e.g., index sequential, virtual sequential, random access, etc.) d) Estimate of the file size or volume of data within the file, including overhead resulting from file access methods e) Definition of the update frequency of the file (If the file is part of an online transactionbased system, provide the estimated number of transactions per unit of time, and the statistical mean, mode, and distribution of those transactions.) f) Backup and recovery specifications]
8.1. Inputs
[Provide a description of the input media used by the user/operator for providing information to the system. Show a mapping to the high-level data flows (e.g., data entry screens, optical character readers, bar scanners, etc.). If appropriate, the input record types, file structures, and database structures provided in Section 7, Data Design, may be referenced. Include data element definitions, or refer to the data dictionary. Provide the layout of all input data screens or graphical user interfaces (GUIs) (e.g., windows). Define all data elements associated with each screen or GUI, or reference the data dictionary. Provide edit criteria for the data elements, including specific values, range of values, mandatory/optional, alphanumeric values, and length. Also address data entry controls to prevent edit bypassing. Discuss the miscellaneous messages associated with user/operator inputs, including (but not limited to) the following: a) Copies of form(s) if the input data are keyed or scanned for data entry from printed forms b) Description of any access restrictions or security considerations c) Each transaction name, code, and definition, if the system is a transaction-based processing system d) Incorporation of the Privacy Act statement into the screen flow, if the system is covered by the Privacy Act e) Description of accessibility provisions to comply with Section 508 of the Rehabilitation Act]
_____________________________________________________________________________________________ System Design Document <Version # / Date> 9 of <max pages>
8.2. Outputs
[Describe the system output design relative to the user/operator. Show a mapping to the highlevel data flows. System outputs include reports, data display screens and GUIs, query results, etc. The output files described in Section 7, Data Design, may be referenced. The following should be provided, if appropriate: a) Identification of codes and names for reports and data display screens b) Description of report and screen contents (provide a graphical representation of each layout and define all data elements associated with the layout or reference the data dictionary) c) Description of the purpose of the output, including identification of the primary users d) Report distribution requirements, if any (include frequency for periodic reports) e) Description of any access restrictions or security considerations f) Description of accessibility provisions to comply with Section 508 of the Rehabilitation Act]
9. OPERATIONAL SCENARIOS
[Describe the general functionality of the system from the users perspectives and provide an execution or operational flow of the system via operational scenarios that provide step-by-step descriptions of how the proposed system should operate and interact with its users and its external interfaces under a given set of circumstances. The scenarios tie together all parts of the system, the users, and other entities by describing how they interact, and may also be used to describe what the system should not do. Operational scenarios should be described for all operational modes, transactions, and all classes of users identified for the proposed system. For each transaction, provide an estimate of the size (use maximum, if variable) and frequency (e.g., average number per session). Identify if there any transactional peak periods and include an estimate of frequency during those periods. Each scenario should include events, actions, stimuli, information, and interactions as appropriate to provide a comprehensive understanding of the operational aspects of the proposed system. The scenarios can be presented in several different ways: 1) for each major processing function of the proposed system, or 2) thread-based, where each scenario follows one type of transaction type through the proposed system, or 3) following the information flow through the system for each user capability, following the control flows, or focusing on the objects and events in the system. The number of scenarios and level of detail specified will be proportional to the perceived risk and the criticality of the project.]
<System Name and/or Acronym> Classification the kind of Service (e.g., application, data service, etc.) Definition the specific purpose and semantic meaning of the Service. Requirements the specific functional or nonfunctional requirements that the Service satisfies. Internal Data Structures the internal data structures for the Service. Constraints any relevant, assumptions, limitations, or constraints for the Service. This should include constraints on timing, storage, or Service state, and might include rules for interacting with the Service (encompassing pre-conditions, post-conditions, invariants, other constraints on input or output values and local or global values, data formats and data access, synchronization, exceptions, etc.) Composition a description of the use and meaning of the subServices that are a part of the Service. Users/Interactions a description of the Services collaborations with other Services. What other Services is this entity used by? What other Services does this entity use (including any side-effects this Service might have on other parts of the system)? This includes the method of interaction, as well as the interaction itself. Object-oriented designs should include a description of any known or anticipated sub-classes, super-classes, and meta-classes. Processing a description of precisely how the Service goes about performing the duties necessary to fulfill its responsibilities. This should encompass a description of any algorithms used; changes or state; relevant time or space complexity; concurrency; methods of creation, initialization, and cleanup; and handling of exceptional conditions. Interfaces/Exports the set of services (resources, data types, constants, subroutines, and exceptions) that are provided by the Service. The precise definition or declaration of each such element should be present, along with comments or annotations describing the meanings of values, parameters, etc. For each service element described, include or provide a reference in its discussion to a description of its important software Service attributes (Component Identifier, Classification, Language, SLOC Estimate, Definition, Responsibilities, Requirements, Internal Data Structures, Constraints, Composition, Uses/Interactions, Resources, Processing, and Interfaces/Exports). Reporting Design and Integration if built in, provide details on data traffic and volumes.]
13. GLOSSARY
[Provide clear and concise definitions for terms used in the SDD that may be unfamiliar to readers of the document. Terms are to be listed in alphabetical order.] <Term Name> <Term definition> <Term Name> <Term definition>
14. ACROYNYMS
[Provide a list of acronyms and associated literal translations used within the document. List the acronyms in alphabetical order utilizing a tabular format as depicted below.] <ACRONYM> CMS COTS DBMS DDD EA GUI ICD LAN LDM SDD <Literal Translation> Centers for Medicare & Medicaid Services Commercial Off-the-Shelf Database Management System Database Design Document Enterprise Architecture Graphical User Interface Interface Control Document Local Area Network Logical Data Model System Design Document
<System Name and/or Acronym> SLOC WAN Source Lines of Code Wide Area Network
15. APPENDICES
[Utilize appendices to facilitate ease of use and maintenance of the SDD document. Each appendix should be referenced in the main body of the document where that information would normally have been provided. Suggested appendices include (but are not limited to): a) Software Architecture Diagrams provide the functional hierarchy diagrams, structured organization diagrams, or object-oriented diagrams that show the various segmentation levels of the software architecture down to the lowest level. b) Data Dictionary provide definitions of all processes, data flows, data elements, and data stores. c) Requirements Traceability Matrix demonstrate backward traceability of the system and software architectural designs to the functional and nonfunctional requirements documented in the Requirements Document. d) CMS Section 508 Product Assessment demonstrate compliance or non-compliance with accessibility standards provided in Section 508 of the Rehabilitation Act of 1973, as amended effective June 20, 2001 The template for this appendix is available at http://www.cms.hhs.gov/InfoTechGenInfo/03_Section508.asp#TopOfPage.]