Updating to the new Unified Architecture Framework 1.1 profile with Rhapsody

Introduction

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 Beta2 version of the profile and brings it up to date to support UAF 1.1 (UAF 1.1 specification). 

This version of the profile provides full support for all the views of the profile, shown below in the UAF grid.

UAF 1.1 Grid


And gives users access to a number of 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 overview of the changes. It is intended that a “Getting started with UAF and Rhapsody” will be a series of blogs, presentations and videos for the future.

Installing the new UAF profile

The new version of the UAF 1.1 profile can be downloaded from here UAF 1.1 profile (vers 1.0.3) along with a sample model of an Emergency Response System WildfireSoSUAF.zip.The profile is contained in a standard zip file, unzip the file and it should open up in a a UAF11 package, within the UAF 11 folder is  a UAF folder  this should replace any existing UAF folder in the Rhapspdy install Share/Profiles folder (also known as $OMROOT/Profiles).

Install Path to UAF Folder


It is very important that the UAF folder is in this location otherwise none of the helpers/wizards that have been added will work.

Log output Window


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 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 a number of 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).

Main Package Structure for UAF Architecture


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.

UAF 1.1 Helpers

There are a number of helpers and wizards associated with the UAF 1.1 profile. This section is not intended as a tutorial to the their use but as  an introduction. There will be further blogs and downloadable content describing how these helpers and wizards work. All the menus can be accessed  from the UAF Toolkit section at the bottom  of the main Rhapsody menu.

UAF Toolkit Location

 

View Creator

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.

View Creator Grid


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 area’s 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 the Option/FN key this will give you a drop down list of the elements that correspond to the pattern that has been typed.

Add new Model element window

 

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.

SetRealizing Connector

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).

Features page showing tags on Exhanges


Locate Tags

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.

Locate tags window

 

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.

Before using “Create Activities from Actions”

 

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). 

Create “Activites from Actions” menu


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.

After applying “Create Activities from Actions”

 

You can see in the figure above the newly create Function “functionaction_9” and “function_6” now has the “FunctionAction” sereotype associated with  it.

SynchronizePerformsDependencies

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.

“Synchronize Performs Dependencies” menu and usage

 

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.

Showing Performs dependencies in browser


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 of your activities appropriately.

Changes in UAF 1.1

As befitting a new version of a profile there are numerous changes

  • 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 diagrams 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 simplifythe toolbar and also reduce redundancy and confusion as to which diagrams should be used.

ActualResourceStructureBDD (redundant)
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)
SecurityTaxonomyIBD  (redundant)
ServicesTaxonomyIBD (redundant)
StrategicStructure_BDD (redundant)

These Architecture Descriptions packages were removed due to a rordering 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.

Acknowledgements

I would like thank two of my colleagues without whom i could not have completed this work.

Dr. Bruce Powel Douglass who took over stewardship of the profile for a year and who carried on the work, adding several views and bringing ideas like the “View Creator” and “Add New Model Element” wizards and  to the table.
And
Andy Lapping, the Wizard of Rhapsody Helpers and Wizards, who rationalised and debugged the existing UPDM wizards so that  they could work in the new UAF 1.1 profile and who also helped me deubug a horrendouse hep file.
Thanks to you both. Graham

Feedback
Was this information helpful? Yes No 0 people rated this as helpful.