Motr  M0
DLD Functional Specification Template

Mandatory. This page describes the external interfaces of the component. The section has mandatory sub-divisions created using the Doxygen @section command. It is required that there be Table of Contents at the top of the page that illustrates the sectioning of the page.

The Functional Specification section of the DLD shall be placed in a separate Doxygen page, identified as a @subpage of the main specification document through the table of contents in the main document page. The purpose of this separation is to co-locate the Functional Specification in the same source file as the Detailed Functional Specification.

A table of contents should be created for the major sections in this page, as illustrated above. It should also contain references to other external Detailed Functional Specification sections, which even though may be present in the same source file, would not be visibly linked in the Doxygen output.

Data Structures

Mandatory for programmatic interfaces. Components with programming interfaces should provide an enumeration and brief description of the major externally visible data structures defined by this component. No details of the data structure are required here, just the salient points.

For example:

           The dld_sample_ds1 structure tracks the density of the electro-magnetic field with the following:
...
...
};
The value of this field is inversely proportional to the square of the number of lines of comments in the DLD.

Note the indentation above, accomplished by means of an HTML table is purely for visual effect in the Doxygen output of the style guide. A real DLD should not use such constructs.

Simple lists can also suffice:

The section could also describe what use it makes of data structures described elsewhere.

Note that data structures are defined in the Detailed Functional Specification so do not duplicate the definitions! Do not describe internal data structures here either - they can be described in the Logical Specification if necessary.

Subroutines

Mandatory for programmatic interfaces. Components with programming interfaces should provide an enumeration and brief description of the externally visible programming interfaces.

Externally visible interfaces should be enumerated and categorized by function. Do not provide details. They will be fully documented in the Detailed Functional Specification. Do not describe internal interfaces - they can be described in the Logical Specification if necessary.

Constructors and Destructors

Accessors and Invariants

Operational Interfaces

Command Usage

Mandatory for command line programs. Components that provide programs would provide a specification of the command line invocation arguments. In addition, the format of any any structured file consumed or produced by the interface must be described in this section.

Recipes

This section could briefly explain what sequence of interface calls or what program invocation flags are required to solve specific usage scenarios. It would be very nice if these examples can be linked back to the HLD for the component.

Note the following references to the Detailed Functional Specification sections at the end of these Functional Specifications, created using the Doxygen @see command:

See also
Sample Detailed Functional Specification