Rhapsody Unified Architecture Framework (UAF) 1.2 profile
Steve Rooks, IBM UK.
Last updated: 9th December 2022
Build basis: Engineering Systems Design Rhapsody 9.0.1
The intent of this page is to share the latest version of the Unified Architecture Framework Profile for Engineering Systems Design Rhapsody. This version of the profile updates and supersedes the previous UAF 1.1 version of the profile and brings it up to date to support the UAF 1.2 specification.
This version of the profile provides full support for all the views of the profile, shown below in the UAF grid.
The Rhapsody UAF toolkit provides helpers that make it easier to develop and create architectures compliant to UAF and by association the latest version of DoDAF, MODAF and NAF. This is because the views in these other frameworks were used to define the UAF Profile (UAFP), as well as the previous profile called the Unified Profile for DODAF and MODAF (UPDM), which UAF is the successor to.
It should be noted this is not intended as a getting started tutorial on UAF but a set of instructions on how to install the new UAF profile and get going with the helpers.
Installing the new UAF profile
The new version of the UAF 1.2 profile can be downloaded from here UAF 1.2 profile along with a sample model of an Emergency Response System WildfireUAF1.2.zip.The profile is contained in a standard zip file, unzip the file and it should open up in a UAF12 package, within the UAF 12 folder is a UAF folder this should replace any existing UAF folder in the Rhapsody install Share/Profiles folder (also known as $OMROOT/Profiles). If you have UAF 1.1 installed, rename the package to UAF11 and install the new 1.2 profile in UAF.
It is very important that the UAF folder is in this location otherwise none of the helpers/wizards that have been added will work.
When you open an existing UAF model or create a new UAF project you should see output similar to dialog above in the Rhapsody log window. If you do not get this output it is very likely that you installed Rhapsody in the wrong location
Starting off with the UAF profile
Once you have installed the UAF profile you can create a new UAF architecture by creating a new project and selecting UAF from the Project Type drop-down list. This will then create a new Rhapsody project based upon UAF.
The main packaging structure in UAF is an ArchitecturalDescription, this is a UML package that can be used to structure your architecture like any UML or SysML package. It also has several tags associated with it to help you describe the architecture it contains. When you create a new UAF project with Rhapsody a standard set of Architectural Descriptions are created, one for each domain (further architectural descriptions can be added internally as required).
Because of the way this structure is created it is a single unit embedded in the root rhapsody file, to make it possible to work on individual parts of the project it is advised that users select each of the ArchitecturalDescriptions(packages) and modify using the “Create Unit” operation them so that they are Units.
Rhapsody UAF Toolkit
There are several helpers and wizards associated with the UAF 1.1 profile. This section is not intended as a tutorial to their use but as an introduction. All the menus can be accessed from the UAF Toolkit section at the bottom of the main Rhapsody menu.
The view creator is a quick way to create diagrams in a specific ArchitecturalDescription without having to access the add new menu. Select a package or element and from the UAF Toolkit menu, then select “View Creator”, this graphic then appears.
By clicking on one of the boxes you can create the relevant diagram in the selected package. The format of the diagram created is generally most common. If you want to use this wizard to create diagrams in other areas you must select the new package or element in the model. The state-based diagrams (apart from Strategic States) can only be created under an element based upon structural element such as an OperationalPerformer, Resource, System, Software etc.
Add new model element
This helper is another quick way to create an element of any type in the model. Again, select the element or package that you would like to own the element to be created. Select “Add New Model Element” from the UAF Toolkit menu.
In the box that opens up you can start typing the name of the element you want to create. You then press Spacebar and Ctrl key this will give you a drop down list of the elements that correspond to the pattern that has been typed.
You can then select the appropriate element type using you mouse and then press return to create the element. The element creation is constrained by the metamodel so you can only create elements in the correct places as allowed by the UAF metamodel.
A note on correct architecture construction using decomposition
A good example of the automatic application of metamodel constraints is that you cannot use decomposition relationships between DataElements and InformationElements, this is because when you use a Decomposition relationship between two elements it automatically creates an element of the correct role. I.e. Resource create ResourceRoles. If you try to do this for InformationElements and DataElement a DataRole is created and InformationElements are not allowed (constraints in the specification) to own DataRoles. In UAF the intent is to separate the layers between domains, Data “Implements” Information.
If you use aggregations to show decomposition or whole part relations between a set of elements then your architecture will not be correct and you will have to manually create the relevant roles required by the UAF specification.
When you add an InformationExchange (type of information flow) on top of some sort of Connector going between ports. A realization tag is automatically added that takes on the value of the connector. In UAF this information needs to be added to the “realizingConnector” tag. To populate this tag, you need to select the relevant IBD (containing the connector and info flows) and from the UAF Toolkit menu select “Set Realizing Connector”. This will then populate the “realizingConnector” tag (Shown in pink in the figure below).
When using UAF a lot of information in the architecture is contained in tags that relate various elements together. A good example is the tag RealizingConnector which is located on InformationExchanges (based on InformationFlow). See above.
When an information exchange is selected and the “Locate tags “helper invoked from the UAF Toolkit then a small window is opened that shows all the tags associated with the element that are related to another model element. You can then click on Locate and it shows you the connected element in the browser. You can then easily navigate to where it is on a diagram. This example is based on the tags populated using the Set Realizing Connector helper, mentioned above.
Create activities from Actions
This is a helper that creates reference activities from elements based on Call Behaviours (OperationalActivityActions, FunctionActions etc) or it creates xxxxAction when Activities (OperationalActivities,Functions etc) are dragged onto an Operational, Resource, Service Process Diagram etc. (which are based on Activity Diagrams).
This wizard is an essential step in creating the correct set of dependencies between the various processes/activities used in these diagrams and their implementation captured as Swimlanes by roles.
A typical workflow would be to create a FunctionAction (this by default will not reference any Function in the model) on a ResourceProcess or drag an Function from a browser onto a ResourceProcess (this will be seen as a Call Behaviour and not a FunctionAction).
When you Select the “Create Activities for Actions” helper from the UAF Toolkit (click on the background of the Process Diagram or its location in the browser to make it visible) you will create an appropriate Activity in the browser referenced by an element based on call behaviour or change a call behaviour into its appropriate element type.
You can see in the figure above the newly create Function “functionaction_9” and “function_6” now has the “FunctionAction” stereotype associated with it.
Synchronize Performs Dependencies
This is an important helper as it automatically creates a lot of the allocation dependencies between Activities and the elements that can perform them for each domain in the framework.
Taking the previous example, I have added a two Swimlanes and assigned ResourceRoles to them by dragging from the browser into the swimlane heading.
By selecting either the activity based diagram in the browser or on its background you will see the UAF Toolkit appear. Selecting “Synchonize Performs Dependencies” will create “PerformsInContext” dependencies from the instances(ResourceRoles) in the Swimlanes to the “Actions” (FunctionActions in this example) see purple box in the figure below, and “CapableOfPerforming” Dependencies between the elements that type (Systems and CapabilityConfiguration) the instances and the “Activity” based elements (in this case Functions), see blue boxes in the figure below.
If you reallocate the elements on the process diagram you can generate new dependencies, but the wizard cannot delete them as it has no intelligence as to what is correct. It is advised that you use the Synchronize Performs Dependencies wizard when you are sure you have allocated all your activities appropriately.
Changes in UAF 1.2 vs 1.1
- New domain (viewpoint) Architecture Management to replace Metadata
- Many elements have been moved from other domains into here
- New aspect Motivation
- Renamed aspect Interaction Scenarios to Sequences
If you want to have a detailed breakdown of the changes, please use DiffMerge to compare the UAF profiles.
Migrating a model to UAF 1.2
Update the profile in Rhapsody profiles directory to latest version (as above) and then load your UAF 1.1 model.
In the UAF profile package look for the query Find_Unloaded (RO). Run this to find elements missing (unloaded) from your model.
For the Wildfire model the following model elements are missing.
Open the Features dialog on each element in turn and modify the Stereotype. For most elements the (U) is due to the Stereotype being moved. Simply search for the same name again, untick the (U) Stereotype and select the same Stereotype name.
If there is no matching Stereotype of the same name, please look in the OMG UAF 1.2 metamodel to choose an alternative.
The below example shows ActualEnterprisePhase has been moved from Taxonomy to Processes.
Once you have removed all references to the unloaded element, delete it. Rhapsody won’t let you delete if there are still references in the model.
The new Architecture Management domain
This can be added as follows at the top level package.
Changes in UAF 1.1 vs 1.0
- Modified elements with the prefix “Actual” that were based on metaclass object to be based on Metaclass Instance Specification
- Rationalised list of Architecture Descriptions (packages) and diagram types in the “add new menu” to reduce overlap and confusion
It should be noted that the profile does not delete any elements or diagrams related to the modification of elements and diagrams and these elements can still be seen in the browser and used in the current architecture but no elements or diagrams of that sort can be created.
Modifed elements from Metaclass objects to Metaclass instance specification
In the Beta UAF profile implementation a some elements were implemented as Objects/Parts when they should have been implement as Instance Specifications. This has been corrected in this version of the profile.
The affected elements are.
ActualPropertySet, ActualRisk, ActualEnduringTask, ActualCondition, ActualLocation, ActualEnvironment, ActualMeasurementSet, ActualService, ProvidedServiceLevel, RequiredServiceLevel, ActualProjectMilestone, ActualEnterprisePhase, ActualResource, ActualProject, FieldedCapability, ActualResponsibility, ActualOrganization, ActualPost, ActualPerson.
It is recommended that existing projects use the old versions of these elements (indicated by a (dep), suffix) or if possible change them by creating new versions of the elements (based on InstanceSpecification) and making the “classifier” the same as the “Type” of the original. Do not forget to update any relevant traceability or tags where the original element was used.
Rationalised Diagram list and Architecture Descriptions (packages)
The following diagrams were removed from the add new menu toolbar to simplify the toolbar and also reduce redundancy and confusion as to which diagrams should be used.
DataSchema (not part of UAF)
OperationalConnectivity (it is better represented as a table derived from OperationalStructureIBD)
PersonnelConnectivity (it is better represented as a table derived from PersonnelStructureIBD)
ResourceConnectivity (it is better represented as a table derived from ResourceStructureIBD)
ResourceConstraintBDD (redundant as constraint elements in UAF do not allow generalization or decomposition)
ResourceConstraintIBD (redundant as constraint elements in UAF do not have structure)
ResourceFunction (incorrect name, can be changed to Function)
These Architecture Descriptions packages were removed due to a reordering and renaming of the package structure that is created automatically when a new UAF project is started.
A MetaDataViews Pkg (Metadata views are not described in the specifiction and are TBD for a future version of UAF)
K DataModel Views PKg (subsumed into the the information model package)
L Summary and Overview Pkg (change to N Summary And Overview Pkg)
These packages and diagrams will continue to exist in the model but you will see them with a (dep) suffix.
Many thanks to all that have been involved with the development of this profile:
Dr. Graham Bleakley
Dr. Bruce Powel Douglass
© Copyright IBM Corporation 2022