Issue 8842: Clarify purpose of composite device (swradio-ftf) Source: MITRE (Mr. Kevin Richardson, kwrich(at)mitre.org) Nature: Uncategorized Issue Severity: Summary: The SCA is attempting to move in a direction away from composite, aggregate devices. The SCA approach may not be the wisest, but it has chosen to express the concept in terms of parent and children. If theses are not acceptable terms then whole/part or aggregate/component part may be reasonable alternatives. One reason for doing this is that the terms composite and aggregate have definitions in the UML spec that exceed the intended capabilities of this relationship. Rationale: Clarify composite behavior. Resolution: Revised Text: Section 8.1.6.1 Replace references to AggregatedDevice on diagram with DeviceComposition. Resulting diagram looks as follows Section 8.1.6.1 Replace first paragraph with the following This section defines the modelLibrary resource component interfaces contained in the profile definition as shown in Figure Error! Reference source not found., which are: Device, DeviceComposition, LoadableDevice, and ExecutableDevice that are described in the following subsections. These interfaces provide basic management interfaces for SWRadio physical devices. Section 8.1.6.1.1 Attributes section: Change compositeDevice attribute to read as follows: <<readonly>>compositeDevice: DeviceCompositionComponent The readonly compositeDevice attribute contains a DeviceCompositionComponent component reference. This DeviceCompositionComponent reference refers to the object used by this device (e.g. in this context the parent of the composite) to maintain the composite parts (includes a list of the composite part devices (e.g., children) or is a nil component/object reference if no such composition association exists. Section 8.1.6.1.1 Operations section: Change the releaseObject operation to read as follows: releaseObject(): {raises = (releaseError)} The following behavior is in addition to the LifeCycle releaseObject operation behavior. If the compositeDevice attribute is not nil, the releaseObject operation shall call the releaseObject operation on all of the DeviceComponents managed by the compositeDevice attribute referenced DeviceCompositionComponent (i.e., those DeviceComponents that are contained within the DeviceCompositionComponent's compositeParts attribute). The releaseObject operation shall transition the DeviceComponent's adminState to SHUTTING_DOWN state when the DeviceComponent's adminState is UNLOCKED, and usageState is not IDLE or the compositeDevice attribute is not nil and the referenced DeviceCompositionComponent's compositeParts attribute is not empty of devices.. The releaseObject operation shall transition the DeviceComponent's adminState to LOCKED when the DeviceComponent's adminSate is SHUTTING_DOWN and usageState attribute is IDLE and the compositeDevice attribute is nil or the compositeDevice attribute referenced DeviceCompositionComponent's compositeParts attribute is empty of devices; all composite parts have been removed. The releaseObject operation shall transition the DeviceComponent's adminState to LOCKED when the DeviceComponent's adminState is UNLOCKED, and the usageState is IDLE and the compositeDevice attribute is nil or the referenced DeviceCompositionComponent's compositeParts attribute is empty of devices; all composite parts have been removed. The releaseObject operation shall release the DeviceComponent, when the Device's adminState transitions to LOCKED, ensuring that its usageState is IDLE and any composite parts have been removed. If the DeviceComponent is a composite part or child of another DeviceComponent then the releaseObject operation shall cause the DeviceComponent to remove itself from the DeviceCompositionComponent (using the DeviceComposition reference provided as an execute property at the construction of the DeviceComponent). If the DeviceComponent is registered with a DeviceManager, then the releaseObject operation shall unregister the DeviceComponent from its DeviceManager. Section 8.1.6.1.3 Was 8.1.6.1.3 DeviceAggregation Is 8.1.6.1.3 DeviceComposition Section 8.1.6.1.3 description Was The DeviceAggregation is a component that provides the capability to construct a composite device definition. Is The DeviceComposition is an interface that provides the capability to construct a composite device definition. Section 8.1.6.1.3 attribute section: Replace devices attribute with the following <<readonly>>compositeParts: DeviceComponent [*] The readonly compositeDevices attribute shall contain a list of DeviceComponents that have been added to the DeviceComposition or a zero length sequence if the composition is empty (no devices have been added or all have been removed). Section 8.1.6.1.3 operations section: Replace all occurrences of devices attribute references with compositeDevices reference. Add 'component' on to Device references. Resulting section should look as follows addDevice (in associatedDevice: DeviceComponent): {raises = ( InvalidObjectReference )} The addDevice operation provides the mechanism to associate a DeviceComponent with a DeviceComposition. The addDevice operation shall add the input associatedDevice parameter to the compositeParts attribute when the associatedDevice does not already exist in the compositeParts attribute. The associatedDevice is ignored when duplicated. This operation does not return any value. The addDevice operation shall raise the InvalidObjectReference when the input associatedDevice is a nil DeviceComponent reference. removeDevice (in associatedDevice: DeviceComponent): {raises = ( InvalidObjectReference )} The removeDevice operation provides the mechanism to disassociate a DeviceComponent from a DeviceComposition. The removeDevice operation shall remove the input associatedDevice parameter from the compositeParts attribute. This operation does not return any value. The removeDevice operation shall raise the InvalidObjectReference when the input associatedDevice is a nil DeviceComponent reference or does not exist in the compositeParts attribute. Section 8.1.6.1.3 semantics section: modify to read as follows: The DeviceComposition interface provides composite behavior that can be used to add and remove DeviceComponents from a composite relationship. Composite part DeviceComponents use this interface to introduce or remove an association between themselves and a DeviceComponent that manages the composition. When the DeviceComponent that manages the DeviceComposition changes state or is being released by the releaseObject operation, its associated DeviceComponents are affected (all DeviceComponents added to the DeviceComposition). Section 8.1.6.2 Device Component Stereotypes table : Change DeviceAggregation stereotype entry into DeviceCompositionComponent stereotype entry - simply change name in first column box. Section 8.1.6.2.4 Replace entire section with the following 8.1.6.2.4 DeviceCompositionComponent Description The DeviceCompositionComponent, as shown in Figure DeviceComposition, is a component that provides the capability to construct a composite device definition. Constraints The DeviceCompositionComponent shall realize the DeviceComposition interface. Semantics The DeviceCompositionComponent component provides composite behavior that can be used to add and remove DeviceComponents from a composite relationship. Composite part DeviceComponents are provided with and use a reference to a DeviceCompositionComponent (as an instance of a DeviceComposition interface realization) to introduce or remove an association between themselves and a DeviceComponent that manages the composition. When the DeviceComponent that manages the DeviceComposition changes state or is being released by the releaseObject operation, its associated DeviceComponents are affected (all DeviceComponents added to the DeviceComposition). Section 8.1.6.2.4 Add new diagram as follows Section 8.3.3.2.2.1 Semantics section: modify 4th entry in numbered list as follows: Was DeviceComponents to be aggregated to another DeviceComponent, Is DeviceComponents to be part of another DeviceComponent's composition definition, Section 8.3.4.1.2.3 Constraints section: replace aggregation with composition as follows: 4th paragraph was Composite Device Component Reference - The ID is "Composite_DEVICE_IOR" and the value is a string that is an IDeviceAggregation component reference. 4th paragraph is Composite Device Component Reference - The ID is "Composite_DEVICE_IOR" and the value is a string that is a DeviceCompositionComponent reference. 6th paragraph was The LogicalDeviceExecutableCode shall add the DeviceComponent manifested by the process to the aggregated device using the Composite Device Component Reference executable parameter when specified. 6th paragraph is The LogicalDeviceExecutableCode shall add the DeviceComponent manifested by the process to the device composition using the Composite Device Component Reference executable parameter when specified. CFDevices.idl file: modify IDL to adopt name change to DeviceComposition as follows: Line 14 was: interface DeviceAggregation; Line 14 is: interface DeviceComposition; Line 19 and 20 was: interface DeviceAggregation { readonly attribute DeviceSequence devices; Lines 19 and 20 is: interface DeviceComposition { readonly attribute DeviceSequence compositeParts; Line 46 was: readonly attribute DeviceAggregation compositeDevice; Line 46 is: readonly attribute DeviceComposition compositeDevice; Disposition: Resolved Actions taken: May 31, 2005: received issue March 8, 2006: closed issue Discussion: The basic resolution is to replace the term Aggregate Device with Device Composition. The behavior specified throughout the profile and PIM is consistent with a Composite association. Wording, diagrams, and associated component sections should be updated to reflect this renaming. Introduce the term composite part to qualify the device components that are added to the composition. Rename the Device Aggregation component section to identify a Device Composition Component stereotype to reflect the composition behavior. Add an associated diagram for this component. Update the IDL to reflect the name change as well. End of Annotations:===== m: "Kevin Richardson" To: Subject: PIM and PSM for Software Radio issue Date: Tue, 31 May 2005 17:30:12 -0400 X-Mailer: Microsoft Office Outlook, Build 11.0.6353 Thread-Index: AcVmDXNxrxcjox3SSwCjoPmZT4rpmAAAE1bAAABXr5AAAMsv4AAAKVXQAAUbWlA= Source: MITRE (Mr. Kevin Richardson kwrich@mitre.org) Nature: Uncategorized Issue Severity: Summary: Clarify purpose of composite device The SCA is attempting to move in a direction away from composite, aggregate devices. The SCA approach may not be the wisest, but it has chosen to express the concept in terms of parent and children. If theses are not acceptable terms then whole/part or aggregate/component part may be reasonable alternatives. One reason for doing this is that the terms composite and aggregate have definitions in the UML spec that exceed the intended capabilities of this relationship. Rationale: Clarify composite behavior.