A module has a public part and a part that must be hidden. The public part is the view of the outside world onto the module. It is the combination of a kind of user manual and a reference manual. In order to build the module, the designers and implementers of that module use both the public part and the hidden part of the module specification.
Both the public part and the hidden part of the specification contain information on the static configuration of the module and information on the dynamic behavior of the module.
The public part of the specification of the configuration is specified for the whole module class. It contains the specifications of
· An ordered and non-empty set of references to specifications of normal interfaces
· For each of these references some initial values of characteristics of the interface class are given.
· An ordered set of require interfaces
· With each require interface a set of connection requests
· A set of method disclosures
· A set of references to specifications of hardware interfaces
· For each of these references some initial values of characteristics of the hardware interface class are given.
· A set of references to specifications of streaming interfaces
· For each of these references some initial values of characteristics of the streaming interface class are given.
· A set of notification interfaces
· A ordered set of late settable assets
· A unique instance name
· A class-wide prefix
· A globally unique class identifier
· An optional short description
· An optional URI to a more extensive descriptive document
· An URI to the location of the original specification
· An optional URI to the location where the specification document was retrieved
· An optional URI to the specification of the parent class
· Optional extra include-file names
During system configuration the toolkit adds a reference to the containing package. The toolkit may also add an optional placeholder for the index of the instance.
Other assets may support the specification of the dynamic behavior of instances. The corresponding placeholders will be given a name and a type. Examples are:
· The number of the critical sections that must be reserved for this class
· The number of locations where software interrupts can be generated in this class
For each instance that must be initialized after its creation, the corresponding initialization values must be specified.
The hidden part of the specification of a module consists of;
· An ordered set of private attributes. The first member is a reference counter.
· A set of private methods
· Each of these private methods may have an alias that is used in method disclosures
Both the private attributes and the private methods provide indicators that state whether these design items may be published. This is used when the module is published as freeware.
The specification of the higher-level design elements may imply simpler design elements that are not explicitly mentioned above.
· A set of attributes that are introduced by the get and set-methods of the interfaces
· A set of attributes that are introduced by the hardware interfaces
· A set of attributes that are introduced by the require interfaces. These attributes are accessible by a configuration tool
· A set of attributes that are introduced by connection-requests. These attributes are accessible by a configuration tool
· A set of attributes that are introduced by the notification interfaces
· A set of attributes that are introduced by the streaming interfaces
· A set of methods that correspond to the methods that always come with one or more of the interfaces
Together, all attributes of a module form an ordered set. Only in this way the combination of system-configuration tool and package manager can handle late settable assets. Only in this way the infrastructure can make use of the placeholders for require interfaces and connection requests.