{alias:SWE-110}
{tabsetup:1. The Requirement|2. Rationale|3. Guidance|4. Small Projects|5. Resources|6. Lessons Learned}

{div3:id=tabs-1}

h1. 1. Requirements

5.2.2.1 The Software Data Dictionary shall include: \[SWE-110\]

a. Channelization data (e.g., bus mapping, vehicle wiring mapping, hardware channelization).
b. Input/Output (I/O) variables.
c. Rate group data.
d. Raw and calibrated sensor data.
e. Telemetry format/layout and data.
f. Data recorder format/layout and data.
g. Command definition (e.g., onboard, ground, test specific).
h. Effecter command information.
i. Operational limits (e.g., maximum/minimum values, launch commit criteria information).

h2. {color:#003366}{*}1.1 Notes{*}{color}

NPR 7150.2 does not include any notes for this requirement.

h2. 1.2 Applicability Across Classes

Class B and Class B and safety critical, and Classes C through E and safety critical are labeled with "P (Center) + SO".  This means that the requirement must be met to the extent necessary to satisfy safety critical aspects of the software and an approved Center-defined process which meets a non-empty subset of the full requirement can be used to other aspects of the software.

Class C and not safety critical is labeled with "P (Center)".  This means that an approved Center-defined process which meets a non-empty subset of the full requirement can be used to achieve this requirement.

Classes F and G are labeled with "X (not OTS)".  This means that this requirement does not apply to off-the-shelf software for these classes.

{applicable:asc=1|ansc=1|bsc=*|bnsc=*|csc=*|cnsc=p|dsc=*|dnsc=0|esc=*|ensc=0|f=*|g=*|h=0}
{div3}
{div3:id=tabs-2}

h1. 2. Rationale

The preparation, documentation, and use of a Software Data Dictionary (SDD) enable uniform communication among the team members on a software development project. The SDD provides key information needed for the implementation, testing, and maintenance of the software product. The data dictionary allows developers, maintainers, and analysts to access information about the tables, fields, procedures, processes, and other information in the system.  Customers and users have a ready reference of information about the software work product.
{div3}
{div3:id=tabs-3}

h1. 3. Guidance

The Software Data Dictionary (SDD) may be a standalone project document, it may be included as part of an electronic database, or it may be written as an appendix in one of the project's primary documents, e.g., the systems requirement specification (see [SWE-109|SWE-109]) or the software design description document (see [SWE-112|SWE-112]). Either format (hardcopy or electronic) is compliant with the requirement.

A data dictionary includes a set of meta-data that contain the definition and representation of data elements. A data dictionary lists all data elements but does not say anything about the relationships between elements. It gives a single point of reference for a data repository of an organization.

Some of the typical components of a data dictionary entry are:
* Name of the table
* Name of the fields in each table
* Data type of the field (integer, date, text...)
* Brief description of the expected data for each field
* Length of the field
* Default value for that field
* Is the field Nullable or Not Nullable
* Constraints that apply to each field, if any

{panel}Not all of these fields will apply for every single entry in the data dictionary. {panel}

Designers, programmers, users, maintainers and administrators of a computer system as an administrative resource are the main users of the software data dictionary.  Data dictionaries are used to maintain information on systems hardware and software configurations, documentation, application and users as well as other relevant info.

The software data dictionary can be produced:
* Automatically using a software tool to interrogate the database and to map its content
* Manually by examining the code to determine and record its content
* By a combination of the two

{panel}An electronic data dictionary is said to be active or passive. The term 'passive' applies to the data dictionary that must be updated manually, whereas the term 'active' applies to the data dictionary that is updated automatically by a database manager tool as data in the database is updated.  {panel}

The data in the SDD may be in the form of tables. Typically, the table definitions define the tables in the database, including a brief description of their use, the key fields, the primary key and a list of the fields.

Guidance and examples for the required content of the Software Data Dictionary are included the bullets below:
* *Channelization data* (e.g., bus mapping, vehicle wiring mapping, hardware channelization) provides a description of each data channel and where it maps to.
* *Input/Output (I/O) variables* provide a description of each input/output variable. Specify format, unit of measure, and definition.
* *Rate group data* (e.g., science data is collected at 1000 Hz and health and status data is collected at 1 Hz).
* *Raw and calibrated sensor data* provide a description of the format, units of measure, and definition of each sensor. Specify data reduction for transforming raw data into calibrated data.
* *Telemetry format/layout and data* provide a description of the telemetry mode, format, packetization and definition:
** Specify what types of packets are allowed to be sent for each of the telemetry modes.
** Specify maximum data rate for each mode.
** The telemetry format should include data type, data representation, data size, acceptable range values, unit of measure, and the meaning of the data for each field.

* *Data recorder format/layout and data*
* *Command definition* (e.g., onboard, ground, test specific) provides a description for each of the commands processed by the software work package. Include the purpose, function, the format of the command and its parameters, and any restrictions attendant to the command.
* *Effecter command information* provides information about the setting of names or flags that cause command executions in the software work products.
* *Operational limits* (e.g., maximum/minimum values, launch commit criteria information)
\\
Other candidate information for the software data dictionary includes:
* *Data description
* *Data location
* *Data relationships
* *Data sources and destinations
* *Data structure
* *Data type
* *Data units
* *Data use
* *Data values (e.g., range and calibration data)
* *Database schema and database management systems
* *Object oriented class and method descriptions
* *Entity-relationshuip diagrams
\\

Finally, the SDD includes descriptions of each process carried by the database system, including:
* Where and how the data enters the system
* What is done to the data, at what stage, and why
* What are the outputs(if any) of the system
* How to control, update, and distribute the SDD
\\

Additional guidance related to the production of the SDD may be found in the work products generated by the following related requirements in this handbook:
| *[SWE-103|SWE-103]* | Software Configuration Management Plan |
| *[SWE-104|SWE-104]* | Software Test Plan |
| *[SWE-105|SWE-105]* | Software Maintenance Plan |
| *[SWE-111|SWE-111]* | Software Design Description |
| *[SWE-112|SWE-112]* | Interface Design Description |
| *[SWE-115|SWE-115]* | Software User Manual |
| *[SWE-116|SWE-116]* | Software Version Description |
\\
{div3}
{div3:id=tabs-4}

h1. 4. Small Projects

This requirement is applicable to all projects.  Small projects may be able to leverage Software Data Dictionaries or portions of dictionaries, from previous projects as long as those projects had similar data structures.
{div3}
{div3:id=tabs-5}

h1. 5. Resources

# [NASA Systems Engineering Handbook|http://education.ksc.nasa.gov/esmdspacegrant/Documents/NASA%20SP-2007-6105%20Rev%201%20Final%2031Dec2007.pdf], NASA/SP-2007-6105 Rev1, 2007
# [IEEE Standard for Software Reviews and Audits|http://specs4.ihserc.com/DocViewFrame.aspx?sess=444611800&prod=SPECS4&docid=RWALHCAAAAAAAAAA], IEEE Std 1028-2008
# [Release of NASA Software|http://nodis3.gsfc.nasa.gov/displayDir.cfm?t=NPR&c=2210&s=1C], NPR 2210.1C, 2010
# [NASA Software Assurance Standard|https://standards.nasa.gov/documents/detail/3315130], NASA STD 8739.8, 2005
# ISO/IEC 12207, [Systems and software engineering -- Software life cycle processes|http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4475826], IEEE Std 12207-2008
# [Systems and software engineering \---Content of systems and software lifecycle process information products (Documentation),|http://specs4.ihserc.com/DocViewFrame.aspx?sess=840961521&prod=SPECS4&docid=QGHBJBAAAAAAAAAA] ISO/IEC 15289:2006(E)
\\

{toolstable}
{div3}
{div3:id=tabs-6}

h2. 6. Lessons Learned

*Develop and Test the Launch Procedure Early (1997);* *Lesson Number:* 0609: During the terminal countdown for the first attempted launch of Cassini, spacecraft telemetry channels indicated a false alarm condition that delayed verification of spacecraft readiness for launch, and contributed to a delay on the first launch day. The anomaly was traced to erroneous telemetry documentation. Develop and release the launch procedure early enough for comprehensive testing prior to launch. Rigorously test and verify all telemetry channels and their alarms, and ensure documentation such as telemetry definitions is kept up to-date.
([http://www.nasa.gov/offices/oce/llis/imported_content/lesson_0609.html])
{div3}
{tabclose}