<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE Project [ <!ELEMENT Project (Description?, Task*, Domain*, Bridge*, ModelPopulation*, MetamodelPopulation*, DomainChart?, Configuration*)> <!ATTLIST Project Name CDATA #REQUIRED Notation (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor" Location CDATA "" LocationFormat CDATA #FIXED "OOA Interchange Format 0.04"> <!ELEMENT Description (#PCDATA)> <!ATTLIST Description TextFormat (Plain | HTML) "Plain"> <!ELEMENT Task (Description?)> <!ATTLIST Task Name CDATA #REQUIRED> <!ELEMENT Domain (MissionStatement?, InformationModel?, Activity*)> <!ATTLIST Domain Name CDATA #REQUIRED DomainCategory (Application | Service | Architectural | Implementation) "Service"> <!ELEMENT MissionStatement (#PCDATA)> <!ATTLIST MissionStatement TextFormat (Plain | HTML) "Plain"> <!ELEMENT InformationModel (Description?, (BooleanType | EnumeratedType | SymbolicType | NumericType | ArbitraryIDType)*, Object*, (SimpleRelationship | AssociativeRelationship | ComposedRelationship | MathematicallyDependentRelationship | SubtypeSupertypeRelationship)*, Subsystem*, (LifecycleModel | SingleAssignerModel | MultipleAssignerModel | Terminator | PolymorphicDestination)*, ((SubsystemRelationshipModel?, SubsystemCommunicationModel?) | (ObjectInformationModel?, ObjectCommunicationModel?, Report?)), PatternFile*)> <!ATTLIST InformationModel Name CDATA #REQUIRED ManualObjectNumbering (False | True) "False" ManualRelationshipNumbering (False | True) "False"> <!ELEMENT BooleanType (Description?)> <!ATTLIST BooleanType Name CDATA #REQUIRED Predefined (False | True) "False" FalseAlias CDATA "FALSE" TrueAlias CDATA "TRUE" DefaultValue CDATA #IMPLIED> <!ELEMENT EnumeratedType (Description?, LegalValue+)> <!ATTLIST EnumeratedType Name CDATA #REQUIRED Predefined (False | True) "False" DefaultValue CDATA #IMPLIED> <!ELEMENT LegalValue (Description?)> <!ATTLIST LegalValue Name CDATA #REQUIRED> <!ELEMENT SymbolicType (Description?, Pattern?)> <!ATTLIST SymbolicType Name CDATA #REQUIRED Predefined (False | True) "False" MinimumLength CDATA "0" MaximumLength CDATA #IMPLIED DefaultValue CDATA #IMPLIED> <!ELEMENT Pattern (#PCDATA)> <!ELEMENT NumericType (Description?)> <!ATTLIST NumericType Name CDATA #REQUIRED Predefined (False | True) "False" ValueFormat (Binary | Octal | Decimal | Hexadecimal | Time) "Decimal" Unit CDATA "" TimeUnit (Year | Month | Day | Hour | Minute | Second | Millisecond | Microsecond | Nanosecond) #IMPLIED MinimumValue CDATA #IMPLIED MaximumValue CDATA #IMPLIED PreferredDecimalPlaces CDATA "0" MaximumDecimalPlaces CDATA #IMPLIED Precision CDATA #IMPLIED DefaultValue CDATA #IMPLIED> <!ELEMENT ArbitraryIDType (Description?)> <!ATTLIST ArbitraryIDType Name CDATA #REQUIRED Predefined (False | True) "False" Ordinal (False | True) "False" IdentifiedObject CDATA "" ChildParentRelationship CDATA "" ChildMappedToParent (False | True) #IMPLIED MinimumValue CDATA "0" MaximumValue CDATA #IMPLIED UnallocatedPercentageBeforeReallocation CDATA #IMPLIED MinimumUnallocatedBeforeReallocation CDATA "1"> <!ELEMENT Object (Description?, (SimpleAttribute | ArbitraryIDAttribute | MathematicallyDependentAttribute | ReferentialAttribute | PolymorphicAttribute)*, Identifier*)> <!ATTLIST Object Name CDATA #REQUIRED FirstLetters CDATA #IMPLIED CustomLetters CDATA "" KeyLetters CDATA #IMPLIED ManualNumber CDATA "" Number CDATA #IMPLIED ObjectCategory (TangibleThing | Role | Incident | Interaction | Specification) #IMPLIED Prominent (False | True) "False"> <!ELEMENT SimpleAttribute (Description?, ValueDomain?)> <!ATTLIST SimpleAttribute Name CDATA #REQUIRED Naming (False | True) "False" IdentifyingSuffix CDATA #IMPLIED ManualDataType CDATA "" DataType CDATA #IMPLIED DataTypeAcceptable (False | True) #IMPLIED InitialValue CDATA #IMPLIED Final (False | True) "False" ManualConditional (False | True) "False" Conditional (False | True) #IMPLIED> <!ELEMENT ValueDomain (#PCDATA)> <!ATTLIST ValueDomain TextFormat (Plain | HTML) "Plain"> <!ELEMENT ArbitraryIDAttribute (Description?, ValueDomain?)> <!ATTLIST ArbitraryIDAttribute Name CDATA #REQUIRED IdentifyingSuffix CDATA #IMPLIED ManualDataType CDATA "" DataType CDATA #IMPLIED DataTypeAcceptable (False | True) #IMPLIED ManualConditional (False | True) "False" Conditional (False | True) #IMPLIED> <!ELEMENT MathematicallyDependentAttribute (Description?, ValueDomain?)> <!ATTLIST MathematicallyDependentAttribute Name CDATA #REQUIRED IdentifyingSuffix CDATA #IMPLIED ManualDataType CDATA "" DataType CDATA #IMPLIED DataTypeAcceptable (False | True) #IMPLIED ManualConditional (False | True) "False" Conditional (False | True) #IMPLIED> <!ELEMENT ReferentialAttribute (Description?)> <!ATTLIST ReferentialAttribute Name CDATA #REQUIRED IdentifyingSuffix CDATA #IMPLIED ReferentialSuffix CDATA #IMPLIED BaseObject CDATA #IMPLIED BaseAttribute CDATA #IMPLIED BaseAttributeStatus (Unresolved | PartiallyResolved | FullyResolved | Incompatible | MultipleBaseAttributes | OnlyCircularReferences) #IMPLIED ManualDataType CDATA "" DataType CDATA #IMPLIED DataTypeAcceptable (False | True) #IMPLIED LiteralValue CDATA #IMPLIED ManualConditional (False | True) "False" NavigationConditional (False | True) #IMPLIED Conditional (False | True) #IMPLIED> <!ELEMENT PolymorphicAttribute (PolymorphicAttributeMapping*, Description?)> <!ATTLIST PolymorphicAttribute Name CDATA #REQUIRED IdentifyingSuffix CDATA #IMPLIED SubtypeSupertypeRelationship CDATA "" MappingComplete (False | True) #IMPLIED MappingCompatible (False | True) #IMPLIED ManualDataType CDATA "" DataType CDATA #IMPLIED DataTypeAcceptable (False | True) #IMPLIED ManualConditional (False | True) "False" Conditional (False | True) #IMPLIED> <!ELEMENT PolymorphicAttributeMapping EMPTY> <!ATTLIST PolymorphicAttributeMapping SubtypeObject CDATA #REQUIRED SubtypeAttribute CDATA #REQUIRED> <!ELEMENT Identifier (IdentifyingAttribute+)> <!ATTLIST Identifier IdentifierID CDATA #IMPLIED Preferred (False | True) "False"> <!ELEMENT IdentifyingAttribute EMPTY> <!ATTLIST IdentifyingAttribute Attribute CDATA #REQUIRED> <!ELEMENT SimpleRelationship (Description?, ((FirstParticipant, SecondParticipant) | (SecondParticipant, FirstParticipant)), LoopTraversalMapping*)> <!ATTLIST SimpleRelationship ManualNumber CDATA "" Number CDATA #IMPLIED RelationshipID CDATA #REQUIRED> <!ELEMENT FirstParticipant (FirstToSecondMapping?)> <!ATTLIST FirstParticipant Object CDATA #REQUIRED Role CDATA "FIRST" VerbPhrase CDATA "" Many (False | True) "False" Conditional (False | True) "False"> <!ELEMENT FirstToSecondMapping (ReferentialAttributeMapping+)> <!ATTLIST FirstToSecondMapping TargetIdentifier CDATA #REQUIRED> <!ELEMENT ReferentialAttributeMapping EMPTY> <!ATTLIST ReferentialAttributeMapping ReferentialAttribute CDATA #REQUIRED IdentifyingAttribute CDATA #REQUIRED Constrained (False | True) "False" LoopConstrained (False | True) #IMPLIED> <!ELEMENT SecondParticipant (SecondToFirstMapping?)> <!ATTLIST SecondParticipant Object CDATA #REQUIRED Role CDATA "SECOND" VerbPhrase CDATA "" Many (False | True) "False" Conditional (False | True) "False"> <!ELEMENT SecondToFirstMapping (ReferentialAttributeMapping+)> <!ATTLIST SecondToFirstMapping TargetIdentifier CDATA #REQUIRED> <!ELEMENT LoopTraversalMapping EMPTY> <!ATTLIST LoopTraversalMapping TraversedRelationship CDATA #REQUIRED SourceObject CDATA #IMPLIED SourceRole CDATA #IMPLIED SourceRoleRequired CDATA #IMPLIED TargetObject CDATA #REQUIRED TargetRole CDATA #IMPLIED TargetRoleRequired CDATA #IMPLIED> <!ELEMENT AssociativeRelationship (Description?, FirstParticipant, SecondParticipant, AssociativeParticipant, LoopTraversalMapping*)> <!ATTLIST AssociativeRelationship ManualNumber CDATA "" Number CDATA #IMPLIED RelationshipID CDATA #REQUIRED> <!ELEMENT AssociativeParticipant (AssociativeToFirstMapping?, AssociativeToSecondMapping?)> <!ATTLIST AssociativeParticipant Object CDATA #REQUIRED Role CDATA #FIXED "ASSOCIATIVE" VerbPhrase CDATA "" ConnectorPhrase CDATA "" Many (False | True) "False" Conditional (False | True) "False"> <!ELEMENT AssociativeToFirstMapping (ReferentialAttributeMapping+)> <!ATTLIST AssociativeToFirstMapping TargetIdentifier CDATA #REQUIRED> <!ELEMENT AssociativeToSecondMapping (ReferentialAttributeMapping+)> <!ATTLIST AssociativeToSecondMapping TargetIdentifier CDATA #REQUIRED> <!ELEMENT ComposedRelationship (Description?, ((FirstParticipant, SecondParticipant) | (SecondParticipant, FirstParticipant)), LoopTraversalMapping, LoopTraversalMapping+)> <!ATTLIST ComposedRelationship ManualNumber CDATA "" Number CDATA #IMPLIED RelationshipID CDATA #REQUIRED> <!ELEMENT MathematicallyDependentRelationship (Description?, FirstParticipant, SecondParticipant, LoopTraversalMapping*)> <!ATTLIST MathematicallyDependentRelationship ManualNumber CDATA "" Number CDATA #IMPLIED RelationshipID CDATA #REQUIRED> <!ELEMENT SubtypeSupertypeRelationship (Description?, SupertypeParticipant, SubtypeParticipant, SubtypeParticipant+)> <!ATTLIST SubtypeSupertypeRelationship ManualNumber CDATA "" Number CDATA #IMPLIED RelationshipID CDATA #REQUIRED> <!ELEMENT SupertypeParticipant EMPTY> <!ATTLIST SupertypeParticipant Object CDATA #REQUIRED Role CDATA #FIXED "SUPERTYPE"> <!ELEMENT SubtypeParticipant (SubtypeToSupertypeMapping?)> <!ATTLIST SubtypeParticipant Object CDATA #REQUIRED Role CDATA #FIXED "SUBTYPE"> <!ELEMENT SubtypeToSupertypeMapping (ReferentialAttributeMapping+)> <!ATTLIST SubtypeToSupertypeMapping TargetIdentifier CDATA #REQUIRED> <!ELEMENT Subsystem (Description?, AssignedObject*, AssignedRelationship*, Activity*, ObjectInformationModel?, ObjectCommunicationModel?, Report?)> <!ATTLIST Subsystem Name CDATA #REQUIRED PrefixLetters CDATA "" ManualLowestNumber CDATA "" ManualHighestNumber CDATA "" LowestNumber CDATA #IMPLIED HighestNumber CDATA #IMPLIED> <!ELEMENT AssignedObject EMPTY> <!ATTLIST AssignedObject Object CDATA #REQUIRED> <!ELEMENT AssignedRelationship EMPTY> <!ATTLIST AssignedRelationship Relationship CDATA #REQUIRED> <!ELEMENT Activity (ShortNote?, LongNote?)> <!ATTLIST Activity Task CDATA #REQUIRED Row CDATA #IMPLIED Column CDATA #IMPLIED> <!ELEMENT ShortNote (#PCDATA)> <!ATTLIST ShortNote TextFormat (Plain | HTML) "Plain"> <!ELEMENT LongNote (#PCDATA)> <!ATTLIST LongNote TextFormat (Plain | HTML) "Plain"> <!ELEMENT LifecycleModel (Description?, (AttributeDataItem | TransientDataItem)*, (CreationEvent | TransitionEvent)*, TransitionNote*, (SimpleState | CreationState | DeletionState)*, StateTransitionDiagram?)> <!ATTLIST LifecycleModel ActiveObject CDATA #REQUIRED ManualEventNumbering (False | True) "False" LabelPrefix CDATA #IMPLIED ManualStateNumbering (False | True) "False"> <!ELEMENT AttributeDataItem (Description?)> <!ATTLIST AttributeDataItem Name CDATA #REQUIRED Object CDATA #REQUIRED Attribute CDATA #REQUIRED Many (False | True) "False" Conditional (False | True) "False"> <!ELEMENT TransientDataItem (Description?)> <!ATTLIST TransientDataItem Name CDATA #REQUIRED DataType CDATA "" Many (False | True) "False" Conditional (False | True) "False"> <!ELEMENT CreationEvent (CarriedDataItem*, Description?)> <!ATTLIST CreationEvent Meaning CDATA #REQUIRED ManualNumber CDATA "" Number CDATA #IMPLIED Label CDATA #IMPLIED> <!ELEMENT CarriedDataItem EMPTY> <!ATTLIST CarriedDataItem SupplementalDataItem CDATA #REQUIRED> <!ELEMENT TransitionEvent (CarriedDataItem*, Description?)> <!ATTLIST TransitionEvent Meaning CDATA #REQUIRED ManualNumber CDATA "" Number CDATA #IMPLIED Label CDATA #IMPLIED> <!ELEMENT TransitionNote (Description?)> <!ATTLIST TransitionNote TransitionNoteID CDATA #IMPLIED> <!ELEMENT SimpleState (Description?, ReceivedDataItem*, SimpleAction?, InternalEvent*, (NewStateTransition | EventIgnoredTransition | CannotHappenTransition)*)> <!ATTLIST SimpleState Name CDATA #REQUIRED ManualNumber CDATA "" Number CDATA #IMPLIED InitialState (False | True) "False" FinalState (False | True) #IMPLIED WaitState (False | True) #IMPLIED TransitionEventsCompatible (False | True) #IMPLIED> <!ELEMENT ReceivedDataItem EMPTY> <!ATTLIST ReceivedDataItem SupplementalDataItem CDATA #REQUIRED> <!ELEMENT SimpleAction (StatementBlock?)> <!ATTLIST SimpleAction MaximumVisibleLOC CDATA ""> <!ELEMENT StatementBlock (#PCDATA)> <!ELEMENT InternalEvent EMPTY> <!ATTLIST InternalEvent Event CDATA #REQUIRED> <!ELEMENT NewStateTransition EMPTY> <!ATTLIST NewStateTransition TransitionEvent CDATA #REQUIRED NewState CDATA #REQUIRED NewStateCompatible (False | True) #IMPLIED TransferOfControl (False | True) "False" TransitionNote CDATA ""> <!ELEMENT EventIgnoredTransition EMPTY> <!ATTLIST EventIgnoredTransition TransitionEvent CDATA #REQUIRED TransitionNote CDATA ""> <!ELEMENT CannotHappenTransition EMPTY> <!ATTLIST CannotHappenTransition TransitionEvent CDATA #REQUIRED TransitionNote CDATA ""> <!ELEMENT CreationState (Description?, ReceivedDataItem*, SimpleAction?, InternalEvent*, (NewStateTransition | EventIgnoredTransition | CannotHappenTransition)*)> <!ATTLIST CreationState Name CDATA #REQUIRED ManualNumber CDATA "" Number CDATA #IMPLIED CreationEvent CDATA #REQUIRED CreationEventCompatible (False | True) #IMPLIED InitialState (False | True) "False" FinalState (False | True) #IMPLIED WaitState (False | True) #IMPLIED> <!ELEMENT DeletionState (Description?, ReceivedDataItem*, SimpleAction?, InternalEvent*)> <!ATTLIST DeletionState Name CDATA #REQUIRED ManualNumber CDATA "" Number CDATA #IMPLIED TransitionEventsCompatible (False | True) #IMPLIED> <!ELEMENT SingleAssignerModel (Description?, (AttributeDataItem | TransientDataItem)*, TransitionEvent*, TransitionNote*, SimpleState*, StateTransitionDiagram?)> <!ATTLIST SingleAssignerModel CompetitiveRelationship CDATA #REQUIRED ManualEventNumbering (False | True) "False" LabelPrefix CDATA #IMPLIED ManualStateNumbering (False | True) "False"> <!ELEMENT MultipleAssignerModel (Description?, (AttributeDataItem | TransientDataItem)*, TransitionEvent*, TransitionNote*, SimpleState*, StateTransitionDiagram?)> <!ATTLIST MultipleAssignerModel CompetitiveRelationship CDATA #REQUIRED PartitioningObject CDATA #REQUIRED ManualEventNumbering (False | True) "False" LabelPrefix CDATA #IMPLIED ManualStateNumbering (False | True) "False"> <!ELEMENT Terminator (Description?, (AttributeDataItem | TransientDataItem)*, DomainCrossingEvent*, ExternalEvent*)> <!ATTLIST Terminator Name CDATA #REQUIRED FirstLetters CDATA #IMPLIED CustomLetters CDATA "" KeyLetters CDATA #IMPLIED ManualEventNumbering (False | True) "False" LabelPrefix CDATA #IMPLIED> <!ELEMENT DomainCrossingEvent (CarriedDataItem*, Description?)> <!ATTLIST DomainCrossingEvent Meaning CDATA #REQUIRED ManualNumber CDATA "" Number CDATA #IMPLIED Label CDATA #IMPLIED> <!ELEMENT ExternalEvent EMPTY> <!ATTLIST ExternalEvent Event CDATA #REQUIRED> <!ELEMENT PolymorphicDestination (Description?, (AttributeDataItem | TransientDataItem)*, PolymorphicEvent*)> <!ATTLIST PolymorphicDestination SubtypeSupertypeRelationship CDATA #REQUIRED ManualEventNumbering (False | True) "False" LabelPrefix CDATA #IMPLIED> <!ELEMENT PolymorphicEvent (CarriedDataItem*, Description?, PolymorphicEventMapping*)> <!ATTLIST PolymorphicEvent Meaning CDATA #REQUIRED ManualNumber CDATA "" Number CDATA #IMPLIED Label CDATA #IMPLIED MappingComplete CDATA #IMPLIED MappingCompatible CDATA #IMPLIED> <!ELEMENT PolymorphicEventMapping EMPTY> <!ATTLIST PolymorphicEventMapping SubtypeEvent CDATA #REQUIRED> <!ELEMENT PatternFile (#PCDATA)> <!ATTLIST PatternFile Path CDATA #IMPLIED RelativePath CDATA #IMPLIED Cached (False | True) "False" RuleSetName CDATA #REQUIRED> <!ELEMENT Bridge (ClientAssumptions?, ServerRequirements?)> <!ATTLIST Bridge ClientDomain CDATA #REQUIRED ServerDomain CDATA #REQUIRED> <!ELEMENT ClientAssumptions (#PCDATA)> <!ATTLIST ClientAssumptions TextFormat (Plain | HTML) "Plain"> <!ELEMENT ServerRequirements (#PCDATA)> <!ATTLIST ServerRequirements TextFormat (Plain | HTML) "Plain"> <!ELEMENT ModelPopulation (Description?, DomainPopulation*)> <!ATTLIST ModelPopulation Name CDATA #REQUIRED> <!ELEMENT DomainPopulation (ObjectInstanceTable*, RelationshipInstanceTable*)> <!ATTLIST DomainPopulation Domain CDATA #REQUIRED> <!ELEMENT ObjectInstanceTable (ObjectInstance*)> <!ATTLIST ObjectInstanceTable Object CDATA #REQUIRED> <!ELEMENT ObjectInstance (AttributeInstance*)> <!ATTLIST ObjectInstance ObjectInstanceID CDATA #IMPLIED> <!ELEMENT AttributeInstance EMPTY> <!ATTLIST AttributeInstance Attribute CDATA #REQUIRED AttributeValue CDATA #IMPLIED> <!ELEMENT RelationshipInstanceTable (RelationshipInstance*)> <!ATTLIST RelationshipInstanceTable Relationship CDATA #REQUIRED> <!ELEMENT RelationshipInstance (ParticipantInstance, ParticipantInstance, ParticipantInstance?)> <!ELEMENT ParticipantInstance EMPTY> <!ATTLIST ParticipantInstance Object CDATA #REQUIRED Role CDATA #IMPLIED ObjectInstance CDATA #REQUIRED> <!ELEMENT MetamodelPopulation EMPTY> <!ATTLIST MetamodelPopulation MetamodelVersion CDATA #REQUIRED> <!ELEMENT Configuration (Description?, ArchetypeFile*, Translation*)> <!ATTLIST Configuration Name CDATA #REQUIRED> <!ELEMENT ArchetypeFile (#PCDATA)> <!ATTLIST ArchetypeFile Path CDATA #IMPLIED RelativePath CDATA #IMPLIED Cached (False | True) "False"> <!ELEMENT Translation (ErrorMessages?, GeneratedFile*, Notes?)> <!ATTLIST Translation ArchetypeFile CDATA #REQUIRED StartTime CDATA #REQUIRED Duration CDATA #REQUIRED ExitStatus CDATA #REQUIRED> <!ELEMENT ErrorMessages (#PCDATA)> <!ATTLIST ErrorMessages TextFormat (Plain | HTML) "Plain"> <!ELEMENT GeneratedFile (#PCDATA)> <!ATTLIST GeneratedFile Path CDATA #IMPLIED RelativePath CDATA #IMPLIED Cached (False | True) "False"> <!ELEMENT Notes (#PCDATA)> <!ATTLIST Notes TextFormat (Plain | HTML) "Plain"> <!ELEMENT DomainChart (Shape*, BinaryLink*)> <!ATTLIST DomainChart Path CDATA #IMPLIED RelativePath CDATA #IMPLIED Width CDATA #REQUIRED Height CDATA #REQUIRED Font CDATA #REQUIRED Notation (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor"> <!ELEMENT SubsystemRelationshipModel (Shape*, BinaryLink*)> <!ATTLIST SubsystemRelationshipModel Path CDATA #IMPLIED RelativePath CDATA #IMPLIED Width CDATA #REQUIRED Height CDATA #REQUIRED Font CDATA #REQUIRED Notation (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor"> <!ELEMENT SubsystemCommunicationModel (Shape*, BinaryLink*)> <!ATTLIST SubsystemCommunicationModel Path CDATA #IMPLIED RelativePath CDATA #IMPLIED Width CDATA #REQUIRED Height CDATA #REQUIRED Font CDATA #REQUIRED Notation (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor"> <!ELEMENT ObjectInformationModel (Shape*, (BinaryLink | SpurLink | ParentLink | ChildLink)*)> <!ATTLIST ObjectInformationModel Path CDATA #IMPLIED RelativePath CDATA #IMPLIED Width CDATA #REQUIRED Height CDATA #REQUIRED Font CDATA #REQUIRED Notation (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor"> <!ELEMENT ObjectCommunicationModel (Shape*, BinaryLink*)> <!ATTLIST ObjectCommunicationModel Path CDATA #IMPLIED RelativePath CDATA #IMPLIED Width CDATA #REQUIRED Height CDATA #REQUIRED Font CDATA #REQUIRED Notation (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor"> <!ELEMENT StateTransitionDiagram (Shape*, (BinaryLink | SimpleUnaryLink)*)> <!ATTLIST StateTransitionDiagram Path CDATA #IMPLIED RelativePath CDATA #IMPLIED Width CDATA #REQUIRED Height CDATA #REQUIRED Font CDATA #REQUIRED Notation (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor"> <!ELEMENT Shape EMPTY> <!ATTLIST Shape Name CDATA #REQUIRED X CDATA #REQUIRED Y CDATA #REQUIRED Width CDATA #REQUIRED Height CDATA #REQUIRED PreferredSizeUsage (None | UseAsSize | UseAsMinimumSize | UseAsMaximumSize) "UseAsSize"> <!ELEMENT BinaryLink (WayPoint*)> <!ATTLIST BinaryLink LinkID CDATA #REQUIRED SourceShape CDATA #REQUIRED TargetShape CDATA #REQUIRED LabelAnchorFlipped (False | True) "False"> <!ELEMENT WayPoint EMPTY> <!ATTLIST WayPoint X CDATA #REQUIRED Y CDATA #REQUIRED> <!ELEMENT SimpleUnaryLink (WayPoint*, TargetPoint)> <!ATTLIST SimpleUnaryLink LinkID CDATA #REQUIRED SourceShape CDATA #REQUIRED> <!ELEMENT TargetPoint EMPTY> <!ATTLIST TargetPoint X CDATA #REQUIRED Y CDATA #REQUIRED> <!ELEMENT SpurLink (WayPoint*, TargetPoint)> <!ATTLIST SpurLink LinkID CDATA #REQUIRED SourceShape CDATA #REQUIRED> <!ELEMENT ParentLink (WayPoint*, TargetPoint)> <!ATTLIST ParentLink LinkID CDATA #REQUIRED SourceShape CDATA #REQUIRED> <!ELEMENT ChildLink (WayPoint*)> <!ATTLIST ChildLink LinkID CDATA #REQUIRED SourceShape CDATA #REQUIRED> <!ELEMENT Report (Attachment*)> <!ATTLIST Report Path CDATA #IMPLIED RelativePath CDATA #IMPLIED Id CDATA #REQUIRED> <!ELEMENT Attachment EMPTY> <!ATTLIST Attachment Path CDATA #IMPLIED RelativePath CDATA #IMPLIED Id CDATA #REQUIRED> ]> <Project Name="OOA88 Appendix A" Location="file:///C:/DataFiles/Projects/OOATool/website/ooa/OOA88AppendixA/OOA88AppendixA.ooa" LocationFormat="OOA Interchange Format 0.04"> <Domain Name="Management of Magnetic Tapes" DomainCategory="Application"> <InformationModel Name="Management of Magnetic Tapes"> <Description>This information model is concerned with the management of magnetic tapes and related equipment in a computer center. A graphical representation of the model is given together with the various object and attribute descriptions that comprise the textual representation of the model. The purpose of this appendix is to convey an understanding of the amount of work that might be required in developing an information model of a real-world problem.</Description> <Object Name="TSAR"> <Description TextFormat="HTML">A tape store and retrieval unit (TSAR) is a housing about 10 feet long, 7 feet high, and 8 feet wide. Inside the TSAR are several thousand storage slots in which reels of magnetic tape can be placed. The TSAR is equipped with a robot which can be directed to travel about within the TSAR and to move magnetic tapes from one slot to another. </p><p> Arranged adjacent to the TSAR are several magnetic tape drives. These tape drives have been positioned in such a way that the robot can reach and manipulate them in order to mount and dismount tapes. </p><p align="center"><img src="TSARTopView.png" alt="TSAR Top View"></p><p> The slots used for storage of tape are located along the long (10 foot) walls of the TSAR housing.</Description> <SimpleAttribute Name="TSAR ID"> <Description TextFormat="HTML">Each TSAR has been assigned an identifier which is used by the operations and maintenance staff to distinguish between the TSARs in service at the computer center. The identifier is a single alphabetic character, painted conspicuously on the TSAR housing itself. </p><p> The TSAR identifiers are assigned by the Chief of Operations.</Description> <ValueDomain>See above</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Manufacturer"> <Description>This attribute records the name of the manufacturer of the TSAR.</Description> <ValueDomain>manufacturer names</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Model Number"> <Description TextFormat="HTML">At the moment, there are several kinds of TSARs in service, which differ in minor ways. Some models have storage slots along both of the long walls of the housing; other models have only one long wall so equipped. In addition, the storage slots on some models are closer together, providing a closer packing and, therfore, a larger number of tapes can be placed in the same sized housing. Details on these and other minor differences between models of TSARs can be found in the manufacturer's technical and maintenance manuals. </p><p> The Model Number attribute records the manufacturer-stated model number for the TSAR.</Description> <ValueDomain>model numbers (as stated by the manufacturers)</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Serial Number"> <Description>Every TSAR housing is given a serial number at the time of manufacture. This attribute records that serial number, as bestowed by the manufacturer of the TSAR.</Description> <ValueDomain>serial numbers, as given by the manufacturers</ValueDomain> </SimpleAttribute> <Identifier IdentifierID="TSAR.I" Preferred="True"> <IdentifyingAttribute Attribute="TSAR ID"/> </Identifier> <Identifier IdentifierID="TSAR.I2"> <IdentifyingAttribute Attribute="Manufacturer"/> <IdentifyingAttribute Attribute="Model Number"/> <IdentifyingAttribute Attribute="Serial Number"/> </Identifier> </Object> <Object Name="TSAR Tape Location"> <Description TextFormat="HTML">Associated with each TSAR are a number of defined tape locations which can be reached by the tape robot. These locations fall into two types: (1) the tape storage slots (see object description for Tape Storage Slot) and (2) the magnetic tape drives accessible by the robot. The TSAR Tape Location object provides the formalization of both types of tape location within the TSARs. </p><p> Within a given TSAR, the tape locations are arranged along one or both of the long walls. Every tape location on a given wall is known by its "tier number", which is proportional to the vertical distance from the floor of the TSAR housing, and a "rank number", which is proportional to the horizontal distance from the left end of the wall as the robot faces it. The basic scheme for tape locations is shown in the following sketch. </p><p align="center"><img src="TSARTapeLocation.png" alt="TSAR Tape Location"></p><p> Note that each of the magnetic tape drives has been assigned a tier number and a rank number, corresponding to the correct horizontal and vertical position for directing the robot. </p><p> TSARs, walls, tiers, and ranks form a natural identification scheme for TSAR tape locations. Note, however, that not all combinations of tier number and rank number correspond to a place where the robot can put a tape, since there are no tape storage slots in the area where the tape drives abut the TSAR housing.</Description> <ReferentialAttribute Name="TSAR ID"> <Description>Each tape location accessible by a tape robot is identified by the TSAR within which it lies plus a wall number, tier number, and rank number within the TSAR. This attribute provides the TSAR component of the identifier of the tape location.</Description> </ReferentialAttribute> <SimpleAttribute Name="Wall Number"> <Description>Each wall of the TSAR housing has been assigned a number (0 or 1) to identify it. This attribute tells on which wall the tape location has been placed.</Description> <ValueDomain>wall numbers</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Tier Number"> <Description>The tape locations within the TSAR are arranged in horizontal rows, or tiers. Each tier of tape slots is assigned a tier number, which is proportional to the distance of the tier from the floor of the housing. Tiers are numbered from 0 at the bottom to 6 at the top of the wall.</Description> <ValueDomain>tier numbers</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Rank Number"> <Description>Each tape location is assigned a rank number, which is proportional to the distance of the tape location from one end of the wall. Rank numbers start at zero at the left end of the wall (as seen by the robot), and continue to a maximum value at the right end.</Description> <ValueDomain>rank numbers</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Tape Location ID"> <Description TextFormat="HTML">This attribute provides an arbitrary identifier, created for the purposes of this model, for a tape location within a TSAR. The attribute was created to provide a concise way of modeling the subtype/supertype relationship that prevails between the TSAR Tape Location object and the Tape Storage Slots/Robot-Loaded Drive objects. </p><p> The domain of this attribute is arbitrary. Should such an identifier be required in implementation of an automated system, the domain could be defined as integers. Alternatively, a naming scheme based on the TSAR ID, wall number, tier number, and rank number could be devised.</Description> <ValueDomain>See above</ValueDomain> </SimpleAttribute> <Identifier IdentifierID="TSAR Tape Location.I" Preferred="True"> <IdentifyingAttribute Attribute="TSAR ID"/> <IdentifyingAttribute Attribute="Tape Location ID"/> </Identifier> <Identifier IdentifierID="TSAR Tape Location.I2"> <IdentifyingAttribute Attribute="TSAR ID"/> <IdentifyingAttribute Attribute="Wall Number"/> <IdentifyingAttribute Attribute="Tier Number"/> <IdentifyingAttribute Attribute="Rank Number"/> </Identifier> </Object> <Object Name="Tape Storage Slot"> <Description>A Tape Storage Slot is TSAR Tape Location that is used for storage of magnetic tapes within the TSAR. The tape locations corresponding to the robot-loaded magnetic tape drives are not considered to be tape storage slots.</Description> <ReferentialAttribute Name="TSAR ID"> <Description>This attribute tells which TSAR contains the tape storage slot, and so formalizes the relationship Tape Storage Slot IS IN TSAR.</Description> </ReferentialAttribute> <ReferentialAttribute Name="TSAR Tape Location ID"> <Description>Each tape storage slot is regarded as being a tape location. This attribute provides the identifier of the tape location that corresponds to this tape storage slot, and so formalizes the relationship Tape Storage Slot IS A (SUBTYPE OF) TSAR Tape Location.</Description> </ReferentialAttribute> <ReferentialAttribute Name="Assigned Tape Reel ID"> <Description>Each tape reel selected for storage within a TSAR is assigned to a tape storage slot. This attribute tells which reel, if any, is assigned to this tape storage slot, and so formalizes the relationship TSAR Tape Reel IS ASSIGNED TO Tape Storage Slot.</Description> </ReferentialAttribute> <Identifier IdentifierID="Tape Storage Slot.I" Preferred="True"> <IdentifyingAttribute Attribute="TSAR ID"/> <IdentifyingAttribute Attribute="TSAR Tape Location ID"/> </Identifier> </Object> <Object Name="Robot-Loaded Drive"> <Description>A Robot-Loaded Drive is a magnetic tape drive that has been specially constructed to allow loading of tapes on it by a tape robot. In every other regard, a Robot-Loaded Drive is an entirely standard tape drive.</Description> <ReferentialAttribute Name="Drive Number"> <Description TextFormat="HTML">Every magnetic tape drive in the facility is assigned a unique drive number by the operations staff. This attribute provides the drive number for a robot-loaded tape drive. </p><p> See also the description of Drive.Drive Number. </p><p> This attribute is used to establish the relationship Robot-Loaded Drive IS A (SUBTYPE OF) Drive.</Description> </ReferentialAttribute> <ReferentialAttribute Name="TSAR ID"> <Description>Each robot-loaded drive is placed adjacent to a TSAR housing in such a way that the tape loading station of the drive lines up with a special loading slot on the TSAR housing. This attribute formalizes the relationship Robot-Loaded Drive IS ADJACENT TO TSAR.</Description> </ReferentialAttribute> <ReferentialAttribute Name="TSAR Tape Location ID"> <Description TextFormat="HTML">Each robot-loaded drive can be viewed as a tape location within a TSAR, in that it provides a place to which the robot can deliver tapes. This situation is reflected in the model by the relationship Robot-Loaded Drive IS A (SUBTYPE OF) TSAR Tape Location. </p><p> This attribute, together with Robot-Loaded Drive.TSAR ID, formlizes the relationship Robot-Loaded Drive IS A TSAR Tape Location.</Description> </ReferentialAttribute> <Identifier IdentifierID="Robot-Loaded Drive.I" Preferred="True"> <IdentifyingAttribute Attribute="Drive Number"/> </Identifier> <Identifier IdentifierID="Robot-Loaded Drive.I2"> <IdentifyingAttribute Attribute="TSAR ID"/> <IdentifyingAttribute Attribute="TSAR Tape Location ID"/> </Identifier> </Object> <Object Name="Tape Robot" CustomLetters="TRob"> <Description TextFormat="HTML">A tape robot is a mechanical device that is capable of fetching a tape from a tape location in a TSAR, travelling to another point in the TSAR, and depositing the tape in a new tape location. The tape robot runs on tracks fixed to the floor of the TSAR housing. </p><p> The tape robot is a computer-controllable device.</Description> <ReferentialAttribute Name="TSAR ID"> <Description>Each tape robot is housed in exactly one TSAR. This attribute tells the name of the TSAR in which the robot is housed, and so formalizes the relationship Tape Robot IS HOUSED IN TSAR.</Description> </ReferentialAttribute> <SimpleAttribute Name="Cycle State"> <Description TextFormat="HTML">The motions that the tape robot goes through are described as states in an operational cycle. Under normal circumstances, the robot progresses serially through states 1 to 6, as follows: <ol> <li>Idle. The robot is motionless and ready to accept a new "tape move" comand.</li> <li>Accepting Command. The robot is accepting a "tape move" command.   Each tape move command specifies a source wall, source tier, and source   rank, as well as a target wall, target tier, and target rank. The meaning of   the command is to move a tape from the source to the target location.</li> <li>Seeking Source. The robot is moving to the source tape location.</li> <li>At Source. The robot is positioned in front of the source tape location and   is picking up the tape.</li> <li>Seeking Target. The robot is moving to the target tape location.</li> <li>At Target. The robot is positioned in front of the target tape location and   is depositing the tape. Following this state, the robot will return to the Idle   state.   <br><br>There are also several error states:<br><br> </li> <li>No Tape at Source. If the robot enters this state, the computer must issue   a "robot reset" command to return the robot to the Idle state.</li> <li>Dropped Tape. This state occurs if the robot ever picks up the source tape,   but loses it before depositing it at the target tape location. If the robot enters   this state, the operations staff must enter the TSAR housing and pick up the   dropped tape; after which the computer must issue a "robot reset" command   to return the robot to the Idle state.</li> <li>Reset with Tape in Hand. This state occurs if a "robot reset" command is   given when the robot is carrying a tape.</li> </ol></Description> <ValueDomain>[ idle | accepting command | seeking source | at source | seeking target | at target | no tape at source | dropped tape | reset with tape in hand ]</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Current Wall Number"> <Description>The wall currently being accessed by the tape robot. When the tape robot is in motion, the current wall number is considered to be the number of the last wall accessed.</Description> <ValueDomain>wall numbers</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Desired Wall Number"> <Description>The wall to which the tape robot is being directed. Under normal circumstances, the desired wall number will differ from the current wall number only when the tape robot is in motion. If, however, the robot is broken, it may stop before it reaches the new (desired) wall number.</Description> <ValueDomain>wall numbers</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Current Tier Number"> <Description>The tier currently being accessed by the robot. When the robot is in motion, the current tier number is undefined.</Description> <ValueDomain>tier numbers or undefined</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Desired Tier Number"> <Description>The tier to which the tape robot is being directed. Unless the robot is broken, the desired tier number will diff from the current tier number only when the tape robot is in motion.</Description> <ValueDomain>tier numbers</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Current Rank Number"> <Description>The rank currently being accessed by the robot. When the robot is in motion, the current rank number is undefined.</Description> <ValueDomain>rank numbers or undefined</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Desired Rank Number"> <Description>The rank to which the tape robot is being directed. Unless the robot is broken, the desired rank number will differ from the current rank number only when the tape robot is in motion.</Description> <ValueDomain>rank numbers</ValueDomain> </SimpleAttribute> <ReferentialAttribute Name="Computer Name"> <Description>Each tape robot is controlled by exactly one computer. This attribute provides the name of that computer, so formalizing the relationship Tape Robot IS CONTROLLED BY Computer.</Description> </ReferentialAttribute> <Identifier IdentifierID="Tape Robot.I" Preferred="True"> <IdentifyingAttribute Attribute="TSAR ID"/> </Identifier> </Object> <Object Name="Drive"> <Description TextFormat="HTML">A Drive is a computer-controlled magnetic tape drive which is used to read and write industry-standard magnetic tapes for programs running on the computer to which it is interfaced. </p><p> Each tape drive in the computer center is assigned one of two roles: It can be acting as an operator-loaded drive, in which case it can be interfaced to any of the general purpose computers, or it can be acting as a robot-loaded drive. In this case, the drive must be interfaced to a computer that is equipped with a TSAR.</Description> <SimpleAttribute Name="Drive Number"> <Description TextFormat="HTML">Each tape drive has been assigned a drive number which is used by the operations and maintenance staff to distinguish between the drives in service at the computer center. The drive numbers are posted on the fronts of the drives. </p><p> Drive numbers are assigned from the integers by the maintenance group.</Description> <ValueDomain>See above.</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Number of Tracks"> <Description>Each tape drive is equipped with magnetic heads which read and write bits in tracks longitudinally on the tape. The number of tracks that can be read or written is determined by the construction of the magnetic heads and supporting electronics.</Description> <ValueDomain>number of tracks (7 or 9)</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Density"> <Description TextFormat="HTML">Drives may read and write data in a variety of densities, measured in bits per (longitudinal) inch of tape. Standard densities available with the more modern drives are 800 bpi (bits per inch), 1600 bpi, and 6250 bpi. The computer center also maintains a few older drives to allow access to tapes which were originally written at 200 or 556 bpi. </p><p> Some drives allow a choice of density. Density selection, if available, is under computer control. </p><p> The Drive.Density attribute models the <i>set</i> of densities available on the drive.</Description> <ValueDomain>[ 800 | 1600 | 6250 | 800 & 1600 & 6250 | 200 & 556 ]</ValueDomain> </SimpleAttribute> <Identifier IdentifierID="Drive.I" Preferred="True"> <IdentifyingAttribute Attribute="Drive Number"/> </Identifier> </Object> <Object Name="Operator-Loaded Drive"> <Description>An Operator-Loaded Drive is a magnetic tape drive that is not associated with a TSAR and, therfore, must have magnetic tapes mounted on it by an operator.</Description> <ReferentialAttribute Name="Drive Number"> <Description>This attribute provides the drive number of the operator-loaded drive. It formalizes the relationship Operator-Loaded Drive IS A (SUBTYPE OF) Drive.</Description> </ReferentialAttribute> <ReferentialAttribute Name="Computer Name"> <Description>This attribute tells which computer the operator-loaded drive has been interfaced with. See the description of the relationship Drive IS CONTROLLED AND ACCESSED BY Computer.</Description> </ReferentialAttribute> <Identifier IdentifierID="Operator-Loaded Drive.I" Preferred="True"> <IdentifyingAttribute Attribute="Drive Number"/> </Identifier> </Object> <Object Name="Computer"> <Description>The computer center operates a number of general-purpose computers for use by various departments of the company. Only general-purpose computers housed at the computer center and under the control of the operations staff are considered to be Computers in this model. Personal computers, network concentrartors, and various sepcial purpose machines do not qualify.</Description> <SimpleAttribute Name="Computer Name"> <Description TextFormat="HTML">Every computer is assigned a name by the Operations Department. These names are in widespread use by operations, maintenance, and the computer users. The names are not posted on the machines, but appear on the Machine Schedule board in the user's lobby. </p><p> At one time the computers were named by a numbering system. Currently, however, they are named after Sesame Street characters: Big Bird, Oscar the Grouch, Cookie Monster, and the like.</Description> <ValueDomain>See Above</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Manufacturer"> <Description>This attribute provides the name of the manufacturer of the computer.</Description> <ValueDomain>computer manufacturers</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Model Number"> <Description>The model number of the computer, as stated by the manufacturer.</Description> <ValueDomain>manufacturer model numbers</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Serial Number"> <Description>The serial number given to the central processor by the manufacturer.</Description> <ValueDomain>manufacturer's serial numbers</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Operating System"> <Description>The name of the operating system used on this computer when in production.</Description> <ValueDomain>operating system names</ValueDomain> </SimpleAttribute> <Identifier IdentifierID="Computer.I" Preferred="True"> <IdentifyingAttribute Attribute="Computer Name"/> </Identifier> <Identifier IdentifierID="Computer.I2"> <IdentifyingAttribute Attribute="Manufacturer"/> <IdentifyingAttribute Attribute="Model Number"/> <IdentifyingAttribute Attribute="Serial Number"/> </Identifier> </Object> <Object Name="Tape Reel"> <Description>A Tape Reel is a magnetic tape which has been assigned a Tape Reel ID.</Description> <SimpleAttribute Name="Tape Reel ID"> <Description>Each tape is assigned a unique identifier by the Operations staff before it is placed into service. The identifier is of the form yy-mm-v-n, where yy are the last two digits of the year, mm is a one or two digit month number, v is a single letter code identifying the company division to which the tape will be allocated, and n is a sequence number assigned sequentially through the month. The information encoded in the ID is purely for the convenience of the Operations staff, and is of no consequence to the usage of the tape.</Description> <ValueDomain>See above</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Number of Tracks"> <Description>The number of tracks written on the tape. This attribute is established at the time the tape is first written ("initialized", in the terminology of the computer center). See description of Drive.Number of Tracks.</Description> <ValueDomain>Same as Drive.Number of Tracks</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Density"> <Description>The density at which the tape was written. This attribute is established at the time the tape is initialized.</Description> <ValueDomain>Same as Drive.Density</ValueDomain> </SimpleAttribute> <Identifier IdentifierID="Tape Reel.I" Preferred="True"> <IdentifyingAttribute Attribute="Tape Reel ID"/> </Identifier> </Object> <Object Name="Operator-Accessible Tape Reel"> <Description>An operator-accessible tape reel is a reel of magnetic tape that is stored outside of the TSARs. Operator-accessible reels must be mounted on the operator accessible tape drives for use by programs.</Description> <ReferentialAttribute Name="Tape Reel ID"> <Description>This attribute provides the identifier of a tape reel that has been classified as an operator accessible tape reel.</Description> </ReferentialAttribute> <Identifier IdentifierID="Operator-Accessible Tape Reel.I" Preferred="True"> <IdentifyingAttribute Attribute="Tape Reel ID"/> </Identifier> </Object> <Object Name="TSAR Tape Reel"> <Description>A TSAR tape reel is a tape reel that has been placed in a TSAR.</Description> <ReferentialAttribute Name="Tape Reel ID"> <Description>This attribute provides the identifier of a tape reel that has been classified as a TSAR tape reel.</Description> </ReferentialAttribute> <ReferentialAttribute Name="TSAR ID"> <Description TextFormat="HTML">At any time, a TSAR tape reel is to be found somewhere within the TSAR to which it has been assigned. </p><p> This attribute, together with TSAR Tape Reel.Current Tape Location ID, formalizes the relationship TSAR Tape Reel IS CURRENTLY LOCATED IN TSAR Tape Location.</Description> </ReferentialAttribute> <ReferentialAttribute Name="Current Tape Location ID"> <Description>This attribute tells which tape location within the TSAR currently holds the TSAR tape reel.</Description> </ReferentialAttribute> <Identifier IdentifierID="TSAR Tape Reel.I" Preferred="True"> <IdentifyingAttribute Attribute="Tape Reel ID"/> </Identifier> </Object> <Object Name="Tape Mount"> <Description TextFormat="HTML">A tape mount is the mounting of a tape reel on a tape drive for the purposes of access by a program. </p><p> Tape mounts come in two types: Mounts done by an operator (formalized as Operator Tape Mounts) and Mounts done by a tape robot (formalized as TSAR Tape Mounts). This typing is reflected in the model by the subtype/supertype relationship between Tape Mount, Operator Tape Mount, and TSAR Tape Mount.</Description> <SimpleAttribute Name="Mount ID"> <Description>An arbitrary identifier assigned to the Tape Mount for purposes of formalizing the subtype/supertype relationship Operator Tape Mount/TSAR Tape Mount IS A Tape Mount.</Description> <ValueDomain>See above</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Date of Mount"> <Description>Every tape mount occurs on a date. This attribute reflects the date on which the mount took place.</Description> <ValueDomain>dates</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Time of Mount"> <Description>Every tape mount occurs at a specific time of day. This attribute records the time at which the mount took place.</Description> <ValueDomain>times</ValueDomain> </SimpleAttribute> <ReferentialAttribute Name="Request ID"> <Description>Tape mounts are done at the request of a program that needs access to the tape. This attribute records the request that occasioned the mount. See also the description for the Tape Request object.</Description> </ReferentialAttribute> <Identifier IdentifierID="Tape Mount.I" Preferred="True"> <IdentifyingAttribute Attribute="Mount ID"/> </Identifier> </Object> <Object Name="Operator Tape Mount"> <Description TextFormat="HTML">An Operator Tape Mount is the mounting of an operator-accessible tape reel on an operator-loaded drive. </p><p> Operator Tape Mount is an associative object used to formalize the (Mc:Mc) relationship Operator-Accessible Tape Reel HAS BEEN MOUNTED ON Operator-Loaded drive.</Description> <ReferentialAttribute Name="Tape Reel ID"> <Description>This attribute tells which tape reel participated in the mount.</Description> </ReferentialAttribute> <ReferentialAttribute Name="Drive Number"> <Description>This attribute tells which tape drive participated in the mount.</Description> </ReferentialAttribute> <ReferentialAttribute Name="Mount ID"> <Description>This attribute formalizes the relationship Operator Tape Mount IS A (SUBTYPE OF) Tape Mount.</Description> </ReferentialAttribute> <Identifier IdentifierID="Operator Tape Mount.I" Preferred="True"> <IdentifyingAttribute Attribute="Mount ID"/> </Identifier> </Object> <Object Name="TSAR Tape Mount"> <Description TextFormat="HTML">A TSAR tape mount is the mounting of a TSAR tape reel on a robot-loaded drive. </p><p> TSAR Tape Mount is as associated object used to formalize the (Mc:Mc) relationship TSAR Tape Reel HAS BEEN MOUNTED ON Robot-Loaded Drive.</Description> <ReferentialAttribute Name="Tape Reel ID"> <Description>This attribute tells which tape reel participated in the TSAR tape mount.</Description> </ReferentialAttribute> <ReferentialAttribute Name="Drive Number"> <Description>This attribute tells which tape drive participated in the mount.</Description> </ReferentialAttribute> <ReferentialAttribute Name="Mount ID"> <Description>This attribute formalizes the relationship TSAR Tape Mount IS A (SUBTYPE OF) Tape Mount.</Description> </ReferentialAttribute> <Identifier IdentifierID="TSAR Tape Mount.I" Preferred="True"> <IdentifyingAttribute Attribute="Mount ID"/> </Identifier> </Object> <Object Name="Tape Request" CustomLetters="TReq"> <Description TextFormat="HTML">Whenever a program requires a tape (other than a scratch tape), it issues a tape request. Each tape request specifies the particular type required, the computer and program to which the tape is to be made available, and the time and date of the request. </p><p> Each tape request is eventually satisfied by a tape mount. </p><p> Tape Request is an associative object used to formalize the relationship Tape Reel WAS REQUESTED FOR USE BY PROGRAM RUNNING ON Computer (Mc:Mc).</Description> <SimpleAttribute Name="Request ID"> <Description TextFormat="HTML">Each tape request within a particular computer is assigned a request ID&#8212;a number&#8212; by the operating system. This attribute records that request ID.</Description> <ValueDomain>See above</ValueDomain> </SimpleAttribute> <ReferentialAttribute Name="Computer Name"> <Description>Each tape request originates in a single computer. This attribute records the computer in which the request was generated.</Description> </ReferentialAttribute> <ReferentialAttribute Name="Tape Reel ID"> <Description>This attribute tells which tape reel was being asked for in this tape request.</Description> </ReferentialAttribute> <SimpleAttribute Name="Date"> <Description>This attribute records the date of the tape request.</Description> <ValueDomain>dates</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Time"> <Description>This attribute records the time of the tape request. It is assumed that time is recorded to such precision that a single tape reel cannot be requested twice at the same Tape Request.Time by programs running in the same computer.</Description> <ValueDomain>times</ValueDomain> </SimpleAttribute> <SimpleAttribute Name="Program Requesting"> <Description>Every tape request is generated by a program. This attribute records the name of the program that generated the tape request.</Description> <ValueDomain>program names</ValueDomain> </SimpleAttribute> <Identifier IdentifierID="Tape Request.I"> <IdentifyingAttribute Attribute="Request ID"/> </Identifier> <Identifier IdentifierID="Tape Request.I2" Preferred="True"> <IdentifyingAttribute Attribute="Computer Name"/> <IdentifyingAttribute Attribute="Tape Reel ID"/> <IdentifyingAttribute Attribute="Date"/> <IdentifyingAttribute Attribute="Time"/> </Identifier> </Object> <SimpleRelationship RelationshipID="R1"> <Description TextFormat="HTML">Every TSAR housing comes equipped with a tape robot since this is necessary for the TSAR to accomplish the function for which it was designed. Every tape robot on site is installed in a TSAR. </p><p> The relationship is formalized by the referential attribute Tape Robot.TSAR ID.</Description> <FirstParticipant Object="TSAR" VerbPhrase="houses"> </FirstParticipant> <SecondParticipant Object="Tape Robot" VerbPhrase="is housed in"> <SecondToFirstMapping TargetIdentifier="TSAR.I"> <ReferentialAttributeMapping ReferentialAttribute="TSAR ID" IdentifyingAttribute="TSAR ID"/> </SecondToFirstMapping> </SecondParticipant> </SimpleRelationship> <SimpleRelationship RelationshipID="R2"> <Description TextFormat="HTML">Every tape storage slot, by definition, is a part of and inside exactly one TSAR. Each TSAR comes equipped with tape storage slots, since the tape storage slot is an essential aspect of the TSAR. </p><p> The relationship is formalized by the referential attribute Tape Storage Slot.TSAR ID.</Description> <FirstParticipant Object="TSAR" VerbPhrase="contains"> </FirstParticipant> <SecondParticipant Object="Tape Storage Slot" VerbPhrase="is in" Many="True"> <SecondToFirstMapping TargetIdentifier="TSAR.I"> <ReferentialAttributeMapping ReferentialAttribute="TSAR ID" IdentifyingAttribute="TSAR ID"/> </SecondToFirstMapping> </SecondParticipant> </SimpleRelationship> <SimpleRelationship RelationshipID="R3"> <Description TextFormat="HTML">By construction of a TSAR, each tape robot has access to all the tape locations within a TSAR. Every tape location within a TSAR can be accessed by the tape robot that is contained in the TSAR. </p><p> The relationship is formalized by the attribute TSAR Tape Location.TSAR ID.</Description> <FirstParticipant Object="Tape Robot" VerbPhrase="has access to"> </FirstParticipant> <SecondParticipant Object="TSAR Tape Location" VerbPhrase="can be accessed by" Many="True"> <SecondToFirstMapping TargetIdentifier="Tape Robot.I"> <ReferentialAttributeMapping ReferentialAttribute="TSAR ID" IdentifyingAttribute="TSAR ID"/> </SecondToFirstMapping> </SecondParticipant> </SimpleRelationship> <SubtypeSupertypeRelationship RelationshipID="R4"> <Description TextFormat="HTML">TSAR Tape Location is defined to be the union of all places within the TSAR in which the robot can place a tape. There are exactly two types of such places: the tape storage slots and the robot-loaded magnetic tape drives. </p><p> The relationship is captured by the combination of attributes TSAR ID and TSAR Tape Location ID, which occur in all three objects concerned.</Description> <SupertypeParticipant Object="TSAR Tape Location"/> <SubtypeParticipant Object="Robot-Loaded Drive"> <SubtypeToSupertypeMapping TargetIdentifier="TSAR Tape Location.I"> <ReferentialAttributeMapping ReferentialAttribute="TSAR ID" IdentifyingAttribute="TSAR ID"/> <ReferentialAttributeMapping ReferentialAttribute="TSAR Tape Location ID" IdentifyingAttribute="Tape Location ID"/> </SubtypeToSupertypeMapping> </SubtypeParticipant> <SubtypeParticipant Object="Tape Storage Slot"> <SubtypeToSupertypeMapping TargetIdentifier="TSAR Tape Location.I"> <ReferentialAttributeMapping ReferentialAttribute="TSAR ID" IdentifyingAttribute="TSAR ID"/> <ReferentialAttributeMapping ReferentialAttribute="TSAR Tape Location ID" IdentifyingAttribute="Tape Location ID"/> </SubtypeToSupertypeMapping> </SubtypeParticipant> </SubtypeSupertypeRelationship> <SimpleRelationship RelationshipID="R5"> <Description TextFormat="HTML">In order for a TSAR to fulfill its function as a computer-controllable source of information from magnetic tapes, it must be equipped with at least one robot-loaded tape drive. The TSARs in use at the facility provide for several robot-loaded drives (4 or 6, depending on the model). </p><p> A tape drive is considered to be a robot-loaded drive only when it is installed adjacent to a TSAR, since it can be loaded by the tape robot only when placed adjacent to a TSAR. </p><p> The relationship is formalized by the referential attribute Robot-Loaded Drive.TSAR ID.</Description> <FirstParticipant Object="TSAR" VerbPhrase="is adjacent to"> </FirstParticipant> <SecondParticipant Object="Robot-Loaded Drive" VerbPhrase="is adjacent to" Many="True"> <SecondToFirstMapping TargetIdentifier="TSAR.I"> <ReferentialAttributeMapping ReferentialAttribute="TSAR ID" IdentifyingAttribute="TSAR ID"/> </SecondToFirstMapping> </SecondParticipant> </SimpleRelationship> <SimpleRelationship RelationshipID="R6"> <Description TextFormat="HTML">Every tape robot is interfaced to one computer, under whose control the robot operates. A given computer can control any number of tape robots. </p><p> The relationship is formalized by the referential attribute Tape Robot.Computer Name.</Description> <FirstParticipant Object="Computer" VerbPhrase="controls"> </FirstParticipant> <SecondParticipant Object="Tape Robot" VerbPhrase="is controlled by" Many="True" Conditional="True"> <SecondToFirstMapping TargetIdentifier="Computer.I"> <ReferentialAttributeMapping ReferentialAttribute="Computer Name" IdentifyingAttribute="Computer Name"/> </SecondToFirstMapping> </SecondParticipant> </SimpleRelationship> <SimpleRelationship RelationshipID="R7"> <Description TextFormat="HTML">Every tape reel that is placed in a TSAR for access is assigned a tape storage slot. The tape reel is kept in the assigned tape storage slot whenever it is not mounted on a robot-loaded drive. </p><p> Each tape storage slot has, at most, a single tape reel assigned to it. </p><p> This relationship is formalized by the referential attribute Tape Storage Slot.Assigned Tape Reel ID.</Description> <FirstParticipant Object="TSAR Tape Reel" VerbPhrase="is assigned to" Conditional="True"> </FirstParticipant> <SecondParticipant Object="Tape Storage Slot" VerbPhrase="is allocated for storage of"> <SecondToFirstMapping TargetIdentifier="TSAR Tape Reel.I"> <ReferentialAttributeMapping ReferentialAttribute="Assigned Tape Reel ID" IdentifyingAttribute="Tape Reel ID"/> </SecondToFirstMapping> </SecondParticipant> </SimpleRelationship> <SimpleRelationship RelationshipID="R8"> <Description TextFormat="HTML">Each TSAR tape location can contain at most one TSAR tape reel at any given time. Each TSAR tape reel is located in some TSAR tape location at any time. </p><p> This relationship is formalized by the referential attribute TSAR Tape Reel.Current Tape Location ID.</Description> <FirstParticipant Object="TSAR Tape Location" VerbPhrase="currently contains"> </FirstParticipant> <SecondParticipant Object="TSAR Tape Reel" VerbPhrase="is currently located in" Conditional="True"> <SecondToFirstMapping TargetIdentifier="TSAR Tape Location.I"> <ReferentialAttributeMapping ReferentialAttribute="TSAR ID" IdentifyingAttribute="TSAR ID"/> <ReferentialAttributeMapping ReferentialAttribute="Current Tape Location ID" IdentifyingAttribute="Tape Location ID"/> </SecondToFirstMapping> </SecondParticipant> </SimpleRelationship> <SubtypeSupertypeRelationship RelationshipID="R9"> <Description TextFormat="HTML">Each tape reel in this facility has been assigned to one of two categories: reels to be loaded by operators (in which case the reel is placed in the tape vault) and reels to be loaded by robots (in which case the reel is placed in a TSAR). </p><p> The relationship is formalized by the attribute Tape Reel ID, which occurs in all three objects concerned.</Description> <SupertypeParticipant Object="Tape Reel"/> <SubtypeParticipant Object="Operator-Accessible Tape Reel"> <SubtypeToSupertypeMapping TargetIdentifier="Tape Reel.I"> <ReferentialAttributeMapping ReferentialAttribute="Tape Reel ID" IdentifyingAttribute="Tape Reel ID"/> </SubtypeToSupertypeMapping> </SubtypeParticipant> <SubtypeParticipant Object="TSAR Tape Reel"> <SubtypeToSupertypeMapping TargetIdentifier="Tape Reel.I"> <ReferentialAttributeMapping ReferentialAttribute="Tape Reel ID" IdentifyingAttribute="Tape Reel ID"/> </SubtypeToSupertypeMapping> </SubtypeParticipant> </SubtypeSupertypeRelationship> <SubtypeSupertypeRelationship RelationshipID="R10"> <Description TextFormat="HTML">The tape drives in the facility have been divided into two classes: those to be loaded by operators and those to be loaded by robots. Every drive is so classified. </p><p> The relationship is formalized by the attribute Drive Number, which occurs in all three objects concerned.</Description> <SupertypeParticipant Object="Drive"/> <SubtypeParticipant Object="Operator-Loaded Drive"> <SubtypeToSupertypeMapping TargetIdentifier="Drive.I"> <ReferentialAttributeMapping ReferentialAttribute="Drive Number" IdentifyingAttribute="Drive Number"/> </SubtypeToSupertypeMapping> </SubtypeParticipant> <SubtypeParticipant Object="Robot-Loaded Drive"> <SubtypeToSupertypeMapping TargetIdentifier="Drive.I"> <ReferentialAttributeMapping ReferentialAttribute="Drive Number" IdentifyingAttribute="Drive Number"/> </SubtypeToSupertypeMapping> </SubtypeParticipant> </SubtypeSupertypeRelationship> <SimpleRelationship RelationshipID="R11"> <Description TextFormat="HTML">Every tape drive is interfaced to exactly one computer, while a given computer can be interfaced to zero or more tape drives. </p><p> The relationship is formalized by two paths, depending on the type of drive concerned. If the drive is an operator-loaded drive, the relationship is formalized by the referential attribute Operator-Loaded Drive.Computer Name. If the drive is a robot-loaded drive, the relationship is reflected in the model by a query chain: Robot-Loaded Drive.TSAR ID tells what TSAR the drive is adjacent to, Tape Robot.TSAR ID tells what tape robot loads the drive, and Tape Robot.Computer Name gives the name of the computer controlling the robot. This computer must be the one which is controlling and accessing the robot-loaded drive (or else we would be able to load a drive by a request from one computer, but not able to read the data from the tape).</Description> <FirstParticipant Object="Computer" VerbPhrase="controls and accesses"> </FirstParticipant> <SecondParticipant Object="Operator-Loaded Drive" VerbPhrase="is controlled and accessed by" Many="True" Conditional="True"> <SecondToFirstMapping TargetIdentifier="Computer.I"> <ReferentialAttributeMapping ReferentialAttribute="Computer Name" IdentifyingAttribute="Computer Name"/> </SecondToFirstMapping> </SecondParticipant> </SimpleRelationship> <AssociativeRelationship RelationshipID="R12"> <Description TextFormat="HTML">Operator Tape Mount is an associative object that is used to capture the (Mc:Mc) relationship Operator-Accessible Tape Reel HAS BEEN MOUNTED ON Operator-Loaded Drive. The (Mc:Mc) relationship is captured in attributes Operator Tape Mount.Tape Reel ID (which refers to an Operator-Accessible Tape Reel) and Operator Tape Mount.Drive Number (which refers to an Operator-Loaded Drive). </p><p> The underlying (Mc:Mc) relationship gives rise to an "incident" object: the mounting of the tape, which occurs at a specific time and date.</Description> <FirstParticipant Object="Operator-Accessible Tape Reel" VerbPhrase="has been mounted on" Many="True" Conditional="True"> </FirstParticipant> <SecondParticipant Object="Operator-Loaded Drive" VerbPhrase="has had mounted on" Many="True" Conditional="True"> </SecondParticipant> <AssociativeParticipant Object="Operator Tape Mount" VerbPhrase="is the mounting of" ConnectorPhrase="on" Many="True"> <AssociativeToFirstMapping TargetIdentifier="Operator-Accessible Tape Reel.I"> <ReferentialAttributeMapping ReferentialAttribute="Tape Reel ID" IdentifyingAttribute="Tape Reel ID"/> </AssociativeToFirstMapping> <AssociativeToSecondMapping TargetIdentifier="Operator-Loaded Drive.I"> <ReferentialAttributeMapping ReferentialAttribute="Drive Number" IdentifyingAttribute="Drive Number"/> </AssociativeToSecondMapping> </AssociativeParticipant> </AssociativeRelationship> <AssociativeRelationship RelationshipID="R13"> <Description TextFormat="HTML">TSAR Tape Mount is an associative object that is used to capture the (Mc:Mc) relationship TSAR TapeReel HAS BEEN MOUNTED ON Robot-Loaded Drive. The (Mc:Mc) relationship is captured in attributes TSAR Tape Mount.Tape Reel ID (which refers to a TSAR Tape Reel) and TSAR Tape Mount.Drive Number (which refers to a Robot-Loaded Drive). </p><p> The underlying (Mc:Mc) relationship also gives rise to an "incident" object: the mounting of the tape, which occurs at a specific time and date.</Description> <FirstParticipant Object="TSAR Tape Reel" VerbPhrase="has been mounted on" Many="True" Conditional="True"> </FirstParticipant> <SecondParticipant Object="Robot-Loaded Drive" VerbPhrase="has had mounted on" Many="True" Conditional="True"> </SecondParticipant> <AssociativeParticipant Object="TSAR Tape Mount" VerbPhrase="is the mounting of" ConnectorPhrase="on" Many="True"> <AssociativeToFirstMapping TargetIdentifier="TSAR Tape Reel.I"> <ReferentialAttributeMapping ReferentialAttribute="Tape Reel ID" IdentifyingAttribute="Tape Reel ID"/> </AssociativeToFirstMapping> <AssociativeToSecondMapping TargetIdentifier="Robot-Loaded Drive.I"> <ReferentialAttributeMapping ReferentialAttribute="Drive Number" IdentifyingAttribute="Drive Number"/> </AssociativeToSecondMapping> </AssociativeParticipant> </AssociativeRelationship> <SubtypeSupertypeRelationship RelationshipID="R14"> <Description TextFormat="HTML">Every mounting of a tape is done by either a robot or by an operator. </p><p> The relationship is captured in the model by the attribute Mount ID, which occurs in all three objects concerned.</Description> <SupertypeParticipant Object="Tape Mount"/> <SubtypeParticipant Object="Operator Tape Mount"> <SubtypeToSupertypeMapping TargetIdentifier="Tape Mount.I"> <ReferentialAttributeMapping ReferentialAttribute="Mount ID" IdentifyingAttribute="Mount ID"/> </SubtypeToSupertypeMapping> </SubtypeParticipant> <SubtypeParticipant Object="TSAR Tape Mount"> <SubtypeToSupertypeMapping TargetIdentifier="Tape Mount.I"> <ReferentialAttributeMapping ReferentialAttribute="Mount ID" IdentifyingAttribute="Mount ID"/> </SubtypeToSupertypeMapping> </SubtypeParticipant> </SubtypeSupertypeRelationship> <AssociativeRelationship RelationshipID="R15"> <Description TextFormat="HTML">There is a (Mc:Mc) relationship between computers and tape reels, in that a tape reel can be requested any number of times by programs running on the computers. Similarly, a program can generate requests for any number of tape reels. </p><p> This (Mc:Mc) relationship is the basis for the associative object Tape Request, that formalizes the relationship by attributes Tape Request.Computer Name and Tape Request.Tape Reel ID.</Description> <FirstParticipant Object="Tape Reel" VerbPhrase="was requested by program running on" Many="True" Conditional="True"> </FirstParticipant> <SecondParticipant Object="Computer" Many="True" Conditional="True"> </SecondParticipant> <AssociativeParticipant Object="Tape Request" VerbPhrase="is a request for use of" ConnectorPhrase="by program running on" Many="True"> <AssociativeToFirstMapping TargetIdentifier="Tape Reel.I"> <ReferentialAttributeMapping ReferentialAttribute="Tape Reel ID" IdentifyingAttribute="Tape Reel ID"/> </AssociativeToFirstMapping> <AssociativeToSecondMapping TargetIdentifier="Computer.I"> <ReferentialAttributeMapping ReferentialAttribute="Computer Name" IdentifyingAttribute="Computer Name"/> </AssociativeToSecondMapping> </AssociativeParticipant> </AssociativeRelationship> <SimpleRelationship RelationshipID="R16"> <Description TextFormat="HTML">A particular tape mount is generated in response to a single tape request. Every tape request will generate at most one tape mount. If the tape request is for a TSAR tape reel and if the computer for which the tape was requested does not have access to the TSAR containing the tape, the request will not be satisfied and no tape mount will occur. </p><p> The relationship is captured by means of the referential attribute Tape Mount.Request ID.</Description> <SecondParticipant Object="Tape Request" VerbPhrase="was satisfied by"> </SecondParticipant> <FirstParticipant Object="Tape Mount" VerbPhrase="satisfied" Conditional="True"> <FirstToSecondMapping TargetIdentifier="Tape Request.I"> <ReferentialAttributeMapping ReferentialAttribute="Request ID" IdentifyingAttribute="Request ID"/> </FirstToSecondMapping> </FirstParticipant> </SimpleRelationship> <ComposedRelationship RelationshipID="R17"> <Description TextFormat="HTML">See R11 relationship description.</Description> <FirstParticipant Object="Computer" VerbPhrase="controls and accesses"> </FirstParticipant> <SecondParticipant Object="Robot-Loaded Drive" VerbPhrase="is controlled and accessed by" Many="True" Conditional="True"> </SecondParticipant> <LoopTraversalMapping TraversedRelationship="R5" TargetObject="TSAR"/> <LoopTraversalMapping TraversedRelationship="R1" TargetObject="Tape Robot"/> <LoopTraversalMapping TraversedRelationship="R6" TargetObject="Computer"/> </ComposedRelationship> <ObjectInformationModel RelativePath="GraphicalModel.png" Width="1500" Height="1000" Font="SansSerif-plain-12"> <Shape Name="TSAR" X="1031" Y="521" Width="182" Height="112"/> <Shape Name="TSAR Tape Location" X="909" Y="154" Width="204" Height="128"/> <Shape Name="Tape Storage Slot" X="1028" Y="358" Width="203" Height="96"/> <Shape Name="Robot-Loaded Drive" X="555" Y="487" Width="215" Height="96"/> <Shape Name="Tape Robot" X="1296" Y="465" Width="182" Height="192"/> <Shape Name="Drive" X="326" Y="644" Width="182" Height="96"/> <Shape Name="Operator-Loaded Drive" X="245" Y="489" Width="239" Height="80"/> <Shape Name="Computer" X="808" Y="672" Width="182" Height="128"/> <Shape Name="Tape Reel" X="424" Y="15" Width="182" Height="96"/> <Shape Name="Operator-Accessible Tape Reel" X="181" Y="189" Width="308" Height="80"/> <Shape Name="TSAR Tape Reel" X="556" Y="189" Width="208" Height="96"/> <Shape Name="Tape Mount" X="259" Y="841" Width="182" Height="112"/> <Shape Name="Operator Tape Mount" X="73" Y="338" Width="233" Height="96"/> <Shape Name="TSAR Tape Mount" X="423" Y="337" Width="196" Height="96"/> <Shape Name="Tape Request" X="644" Y="812" Width="187" Height="144"/> <BinaryLink LinkID="R1" SourceShape="TSAR" TargetShape="Tape Robot"> <WayPoint X="1254" Y="573"/> </BinaryLink> <BinaryLink LinkID="R2" SourceShape="TSAR" TargetShape="Tape Storage Slot"> <WayPoint X="1096" Y="487"/> </BinaryLink> <BinaryLink LinkID="R3" SourceShape="Tape Robot" TargetShape="TSAR Tape Location"> <WayPoint X="1377" Y="225"/> </BinaryLink> <ParentLink LinkID="R4" SourceShape="TSAR Tape Location"> <TargetPoint X="1011" Y="331"/> </ParentLink> <BinaryLink LinkID="R5" SourceShape="TSAR" TargetShape="Robot-Loaded Drive"> <WayPoint X="900" Y="553"/> </BinaryLink> <BinaryLink LinkID="R6" SourceShape="Computer" TargetShape="Tape Robot"> <WayPoint X="1377" Y="731"/> </BinaryLink> <BinaryLink LinkID="R7" SourceShape="TSAR Tape Reel" TargetShape="Tape Storage Slot"> <WayPoint X="710" Y="119"/> <WayPoint X="1178" Y="119"/> </BinaryLink> <BinaryLink LinkID="R8" SourceShape="TSAR Tape Location" TargetShape="TSAR Tape Reel"> <WayPoint X="836" Y="230"/> </BinaryLink> <ParentLink LinkID="R9" SourceShape="Tape Reel"> <TargetPoint X="520" Y="145"/> </ParentLink> <ParentLink LinkID="R10" SourceShape="Drive"> <TargetPoint X="428" Y="602"/> </ParentLink> <BinaryLink LinkID="R11" SourceShape="Computer" TargetShape="Operator-Loaded Drive"> <WayPoint X="280" Y="751"/> </BinaryLink> <BinaryLink LinkID="R12" SourceShape="Operator-Accessible Tape Reel" TargetShape="Operator-Loaded Drive"> <WayPoint X="342" Y="377"/> </BinaryLink> <BinaryLink LinkID="R13" SourceShape="TSAR Tape Reel" TargetShape="Robot-Loaded Drive"> <WayPoint X="657" Y="384"/> </BinaryLink> <ParentLink LinkID="R14" SourceShape="Tape Mount"> <TargetPoint X="337" Y="792"/> </ParentLink> <BinaryLink LinkID="R15" SourceShape="Tape Reel" TargetShape="Computer"> <WayPoint X="43" Y="55"/> <WayPoint X="43" Y="968"/> <WayPoint X="888" Y="968"/> </BinaryLink> <BinaryLink LinkID="R16" SourceShape="Tape Mount" TargetShape="Tape Request"> <WayPoint X="542" Y="893"/> </BinaryLink> <BinaryLink LinkID="R17" SourceShape="Computer" TargetShape="Robot-Loaded Drive"> <WayPoint X="697" Y="701"/> </BinaryLink> <ChildLink LinkID="R4" SourceShape="Robot-Loaded Drive"> <WayPoint X="716" Y="331"/> </ChildLink> <ChildLink LinkID="R4" SourceShape="Tape Storage Slot"> <WayPoint X="1092" Y="331"/> </ChildLink> <ChildLink LinkID="R9" SourceShape="Operator-Accessible Tape Reel"> <WayPoint X="340" Y="145"/> </ChildLink> <ChildLink LinkID="R9" SourceShape="TSAR Tape Reel"> <WayPoint X="602" Y="145"/> </ChildLink> <ChildLink LinkID="R10" SourceShape="Operator-Loaded Drive"> <WayPoint X="378" Y="602"/> </ChildLink> <ChildLink LinkID="R10" SourceShape="Robot-Loaded Drive"> <WayPoint X="619" Y="602"/> </ChildLink> <SpurLink LinkID="R12" SourceShape="Operator Tape Mount"> <WayPoint X="322" Y="384"/> <TargetPoint X="342" Y="384"/> </SpurLink> <SpurLink LinkID="R13" SourceShape="TSAR Tape Mount"> <WayPoint X="636" Y="383"/> <TargetPoint X="657" Y="383"/> </SpurLink> <ChildLink LinkID="R14" SourceShape="Operator Tape Mount"> <WayPoint X="171" Y="792"/> </ChildLink> <ChildLink LinkID="R14" SourceShape="TSAR Tape Mount"> <WayPoint X="519" Y="792"/> </ChildLink> <SpurLink LinkID="R15" SourceShape="Tape Request"> <WayPoint X="857" Y="886"/> <TargetPoint X="888" Y="886"/> </SpurLink> </ObjectInformationModel> <ObjectCommunicationModel Width="800" Height="600" Font="SansSerif-plain-12"> </ObjectCommunicationModel> <Report RelativePath="InformationModelReport.html" Id="Information Model Report"> <Attachment RelativePath="GraphicalModel.png" Id="Graphical Model"/> <Attachment RelativePath="TSARTopView.png" Id="TSAR Top View"/> <Attachment RelativePath="TSARTapeLocation.png" Id="TSAR Tape location"/> </Report> </InformationModel> </Domain> <DomainChart Width="800" Height="600" Font="SansSerif-plain-12"> <Shape Name="Management of Magnetic Tapes" X="25" Y="18" Width="268" Height="96"/> </DomainChart> </Project>