Define the application Reference Documentation

The first questions John has to answer are : What the application is supposed to be? and What the application is supposed to do?

What the application is supposed to be ?

First, John tries to get a feel for the bigger picture of its application. The purpose is to get an overall understanding of the system. He wants to catch the business process and checks if there is a precedent for this application. To do so UML propose a very useful diagram : the activity diagram. The activity diagram is part of the behavioral diagrams in UML Standard, it is used to represent workflows of stepwise activities.

The activity diagram is a synchronized diagram which means that any elements existing under an activity in the UML model will be visible automatically in the activity diagram.

Manage activities

It is possible to create activity elements by selecting the creation tools from the palette and then clicking on the diagram or an element.

A diagram is associated to a package and when the user click on the diagram background the element is created under the corresponding package in the UML model. If the user selects a container, the element will be created under the corresponding semantic element in the UML model. Tooltip tools are also available to create any kind of elements :

Creation tools are available in the activity diagram for the following types :

Element Representation Comments
Partition Organizes a flow by grouping elements
Initial Node Start of a flow
Activity Final Node End of a flow
Flow Final Node Exit from the system
Decision Node Point of conditional progression
Merge Node Brings together a number of alternative flow paths
Fork Node Split the flow into concurrent flows
Join Node Join the flow of concurrent flows
Opaque Action Describes a basic process
Activity state Describes a sub activity
Call Operation action Describes a call to a defined operation
Activity parameter Defines parameters for the activity
Data store Define permanently stored data
Input pin Activity input
Output pin Activity output

When the Call Operation action tool is selected, a selection wizard is opened to ask the user to select an existing operation in the UML model :

The user can also delete an activity element (see Diagram editor/Editor tab-bar/Delete element/from model).

Manage flows

It is possible to create a flow by selecting the edge creation tool from the palette and then clicking on a source element and a target element.

The following edge creation tools exist in the palette :

Element Representation Comments
Control flow Connect two nodes
Object flow Connect two ports exchanging data

The user can also delete a flow (see Diagram editor/Editor tab-bar/Delete element/from model).

And finally, he can reconnect flows. It is possible to reconnect the source and the target of any kind of edge in the activity diagram :

  • control flows
  • object flows

Edit labels

In the use case diagram, it is possible to edit the elements labels (see Diagram editor/Editor main graphical area/Direct edit). This actions allows to edit :

  • actor, subject (component, artifact, datatype, interface, collaboration, class), use case labels
  • relationships labels

Manage bodies

It is possible to define a body to an Opaque Action by selecting the optional layer Body from the diagram toolbar. Then the Opaque actions contains there bodies which are editable thanks to the direct edit).

What the application is supposed to do ?

Capture the use cases

The next step for John is to capture the different requirements. He knows what he wants, what the other stakeholders want and so he needs to document this. He has already started catching the requirements on post-it notes and pieces of paper during meetings, he has also used his whiteboard for some sketching. When he recovered all his requirements, he starts to sort them by subject in order to see who is going to use the application. He needs now to capture the different users of the system. John creates a UML Use Case diagram to specify the different subjects and the roles played by users and other systems that interact. The use case diagram is used to describe the interaction of the user and other applications with the specified system.

The use case diagram is an unsynchronized diagram which means that the user has to add existing elements manually on the diagram to see them.

Manage use cases

It is possible in the use case diagram to create an element by selecting the creation tool from the palette and then clicking on the diagram or an element. A diagram is associated to a package and in this case the element is created under the corresponding package in the UML model.

Tooltip tools are also available to create any kind of elements.

The available elements in the use case diagram are :

Element Representation Comments
Actor User of the system
UseCase Describes how a user interacts with the system
Subject Group logically related elements

A subject could be a :

  • Component
  • Class
  • Artifact
  • DataType
  • Interface

The Use Case Diagram will display any UseCase not being affected to a subject on the canvas. If a subject is affected, then the use case will be displayed directly within this subject.

The user can also delete an element (see Diagram editor/Editor tab-bar/Delete element/from model).

Manage relationships

It is possible to create a relationship by selecting the edge creation tool from the palette and then clicking on a source element and a target element. The following edge creation tools exist in the palette :

Element Representation Comments
Association General relationship type between elements
Extend Indicate that an element extends the behavior of another
Include Indicates that the source element includes the functionality of the target element
Generalization Indicate inheritance

The user can also delete a relationship (see Diagram editor/Editor tab-bar/Delete element/from model).

And finally, he can reconnect relationships. It is possible to reconnect the source and the target of any kind of edge in the use case diagram :

  • association
  • extend
  • include
  • generalization

Manage existing elements

As the diagram is unsynchronized, the user needs to add manually the elements already existing in the semantic model that should appear on the representation. It is possible to add existing elements in the use case diagram by :

  • selecting the add tool from the palette or the tooltip and then clicking on the diagram or an element. The add tool opens a selection wizard.
  • drag and droping an element from the model explorer.

Dragging a use case from a subject to the canvas (and the other way around) will set or unset the subject accordingly.

The following elements can be added on a use case diagram :

Element Representation
Use case
Use case into a subject
Subject (component, artifact, datatype, interface, collaboration, class)
Actor
Package Add all the elements which could be visible on the diagram

The user can see that an element is not coming from the current package :

  • the element border is lighter than the element border of elements defined in the current package
  • a tooltip shows the container package of the element if the element is not contained by the current package

And finally, he can remove an existing element from a diagram. In this case the element is only deleted from the representation but it is not removed from the UML model. This Remove tool exists in the Existing elements section in the palette (see Diagram editor/Editor tab-bar/Delete element/from model).

In the use case diagram a contextual action is available to show on the diagram the element related to the selection.

The Add related elements action is available from :

  • a subject, a use case, an actor : shows all the elements that define a relationship (dependency, include, association…) with the selected element
  • a use case diagram : shows all the elements contained in the package associated to the diagram.

Edit labels

In the use case diagram, it is possible to edit the elements labels (see Diagram editor/Editor tab-bar/Delete element/from model). This actions allows to edit :

  • actor, collaboration, subject, use case labels
  • relationships labels

Use case cross table

Another representation allows the user to see which use cases are associated to which elements in the model. The use case cross table represents on lines all the model elements and in the columns the existing use cases. To associate a use case to an element just check the corresponding cell.

Define the package system structure

At this step, John knows who will use its application and what they are able todo with it. It is time to define the components, the interfaces and the relationships that would be seen and experienced by the application user. The purpose is to detail the available objects in the user’s universe and how they can use them to accomplish certain tasks. John defines the big structure of the system thanks to the package diagram. The package diagram is used to describe the structure of the system by showing the packages and their dependencies.

The package diagram is an unsynchronized diagram which means that the user has to add existing elements manually on the diagram to see them.

Manage packages

It is possible to create activities elements by selecting the creation tools from the palette and then clicking on the diagram or an element. A diagram is associated to a package and when the user click on the diagram background the element is created under the corresponding package in the UML model. If the user selects a container, the element will be created under the corresponding semantic element in the UML model.

A creation tool is available in the package diagram for the package :

The user can also delete an element (see Diagram editor/Editor tab-bar/Delete element/from model).

Manage relationships

It is possible to create a relationship by selecting the edge creation tool from the palette and then clicking on a source element and a target element.

The following edge creation tools exist in the palette :

Element Representation Comments
Contained in Defines that a package that is made up of smaller packages
Import Show that the package content is imported
Usage Shows that a package uses another package
Dependency Traces a dependency between packages
Merge The contents of the target package are merged with those of the source package

The user can also delete a relationship (see Diagram editor/Editor tab-bar/Delete element/from model).

And finally, he can reconnect relationships. It is possible to reconnect the source and the target of any kind of edge in the use case diagram :

  • contained in
  • dependency
  • usage
  • import
  • merge

Manage existing elements

As the diagram is unsynchronized, the user needs to add manually the elements already existing in the semantic model that should appear on the representation. It is possible to add existing elements by :

  • selecting the add tool from the palette and then clicking on the diagram or an element :

  • drag and droping a package from the model explorer :

The user can see that an element is not coming from the current package :

  • the element border is lighter than the element border of elements defined in the current package
  • a tooltip shows the container package of the element if the element is not contained by the current package

And finally, he can remove an existing element from a diagram. In this case the element is only deleted from the representation but it is not removed from the UML model. This Remove tool exists in the Existing elements section in the palette (see Diagram editor/Editor tab-bar/Delete element/from model).

In the package diagram a contextual action is available to show on the diagram the element related to the selection.

The add related elements action is available from :

  • a package : shows all the packages that define a relationship (containment, dependency, usage..) with the selected package
  • a package diagram : shows all the elements contained in the package associated to the diagram.

Edit labels

In the package diagram, it is possible to edit the elements labels (see Diagram editor/Editor tab-bar/Delete element/from model). This actions allows to edit :

  • package labels
  • relationships labels

Define the components

It is the moment for John to split the system in multiple components and to describe how all these elements are linked together in a component diagram. The component diagram is used to describe the structure of the system by showing the components and their connectors.

The component diagram is an unsynchronized diagram which means that the user has to add existing elements manually on the diagram to see them.

Manage nodes

It is possible to create nodes by selecting the creation tools from the palette and then clicking on the diagram or an element. A diagram is associated to a package and when the user click on the diagram background the element is created under the corresponding package in the UML model. If the user selects a container, the element will be created under the corresponding semantic element in the UML model.

Tooltip tools are also available to create any kind of elements.

Creation tools are available in the component diagram for the following types :

Element Representation Comments
Component A modular part of a system
Component into a component A sub part of a component
Class A representation of objects
Class into a component A representation of objects
Port on a component Define the interaction between a component and its environment
Port on a class Define the interaction between a class and its environment
Interface A contract that implementers agree to meet

A class can be used as a component : or in a component :

Required and Provided Interfaces can be defined:

  • using ports :
  • or directly on the components :

The user can also delete an element (see Diagram editor/Editor tab-bar/Delete element/from model.

Manage relationships

It is possible to create a relationship by selecting the edge creation tool from the palette and then clicking on a source element and a target element. The following edge creation tools exist in the palette :

Element Representation Comments
Usage Source component uses target component
Dependency Source component depends on target component
Component Realization Source component realizes target component
Generalization Source component generalizes target component
Interface Realization Component realizes interface
Redefined Source port redefined target port
Connector Represented by a solid link between two ports Source port is connected to target port

You can link two ports using assembly or delegation connectors.

Assembly Connector :

Delegation Connector :

The user can also delete a relationship (see Diagram editor/Editor tab-bar/Delete element/from model).

And finally, he can reconnect relationships. It is possible to reconnect the source and the target of any kind of edge in the use case diagram :

  • usage
  • dependency
  • component realization
  • interface realization
  • redefined
  • connector

Manage existing elements

As the diagram is unsynchronized, the user needs to add manually the elements already existing in the semantic model that should appear on the representation. It is possible to add existing elements by :

  • selecting the add tool from the palette or the tooltip and then clicking on the diagram or an element. The add tool opens a selection wizard.
  • drag and droping an element from the model explorer.

The following elements can be added on a component diagram :

  • component
  • component into an existing component
  • class
  • class into an existing component
  • interface
  • package

The user can see that an element is not coming from the current package :

  • the element border is lighter than the element border of elements defined in the current package
  • a tooltip shows the container package of the element if the element is not contained by the current package

And finally, he can remove an existing element from a diagram. In this case the element is only deleted from the representation but it is not removed from the UML model. This Remove tool exists in the Existing elements section in the palette (see Diagram editor/Editor tab-bar/Delete element/from model).

In the component diagram a contextual action is available to show on the diagram the element related to the selection.

The add related elements action is available from :

  • a component , a class, an interface, a port : shows all the elements that define a relationship (dependency, component realization, interface realization…) with the selected element
  • a component diagram : shows all the elements contained in the package associated to the diagram.

Edit labels

In the package diagram, it is possible to edit the elements labels (see Diagram editor/Editor main graphical area/Direct edit). This actions allows to edit :

  • component, class, interface, port labels
  • relationships labels

Define the information flow

By creating links between the components, John defines the flow followed by the data in the system. To get details on how to manage the information flows (see What the application is supposed to be?/Define components/Manage relationships).

Diagram the organization of the information

He provides a detailed organization of the information by creating a new kind of activity diagram. This diagram shows how the information goes through the different components of the system. Previously in the process, John used an activity diagram to describe the global business process of the specified application, here the activity diagram is used again but for providing low level information. To get details on activity diagram,What the application is supposed to be ?.

Define the system interfaces

Then for each component, John details the internal structure of a component thanks to Composite structure diagrams.

The composite structure diagram is used to describe the structure of the system by showing the internal structure of classes and the interfaces they used to collaborate.

The composite structure diagram is an unsynchronized diagram which means that the user has to add existing elements manually on the diagram to see them.

Manage nodes

It is possible to create a type by selecting the type creation tool from the palette and then clicking on the diagram or an element. A diagram is associated to a package and when the user click on the diagram background the element is created under the corresponding package in the UML model. If the user selects a container, the element will be created under the corresponding semantic element in the UML model.

Tooltip tools are also available to create any kind of elements.

Creation tools are available in the composite structure diagram for the following types :

Element Representation Comments
Component A modular part of a system
Component into a component A sub part of a component
Class A representation of objects
Class into a component A representation of objects
Part Runtime instances of classes or interfaces
Property Reference a property
Port on a component Interaction between a component and its environment
Port on a class Interaction between a class and its environment

The user can also delete an element (see Diagram editor/Editor tab-bar/Delete element/from model).

Manage edges

It is possible to create a relationship by selecting the edge creation tool from the palette and then clicking on a source element and a target element.

The following edge creation tools exist in the palette :

Element Representation Comments
Connector Illustrate communication links between elements
Usage Element uses another element
Generalization Indicates inheritance
Redefined Indicates that a port redefined another port

The user can also delete an activity element (see Diagram editor/Editor tab-bar/Delete element/from model).

And finally, he can reconnect relationships. It is possible to reconnect the source and the target of any kind of edge in the use case diagram :

  • usage
  • dependency
  • component realization
  • interface realization
  • redefined
  • connector

Manage existing elements

As the diagram is unsynchronized, the user needs to add manually the elements already existing in the semantic model that should appear on the representation. It is possible to add existing elements by :

  • selecting the add tool from the palette or the tooltip and then clicking on the diagram or an element. The add tool opens a selection wizard.
  • drag and droping an element from the model explorer.

The following elements can be added on a component diagram :

  • component : the component and all its parts, properties and sub components will be visible
  • component into an existing component : the component and all its parts, properties and sub components will be visible
  • class : the class and all its ports will be visible
  • class into an existing component : the class and all its ports will be visible
  • part
  • property
  • interfaces
  • package : the package will not be visible on the diagram but all the sub elements will be added

The user can see that an element is not coming from the current package :

  • the element border is lighter than the element border of elements defined in the current package
  • a tooltip shows the container package of the element if the element is not contained by the current package

And finally, he can remove an existing element from a diagram. In this case the element is only deleted from the representation but it is not removed from the UML model. This Remove tool exists in the Existing elements section in the palette (see Diagram editor/Editor tab-bar/Delete element/from model).

In the composite structure diagram a contextual action is available to show on the diagram the element related to the selection.

The add related elements action is available from :

  • a component , a class, an interface, a port : shows all the elements that define a relationship (dependency, component realization, interface realization…) with the selected element
  • a composite structure diagram : shows all the elements contained in the package associated to the diagram.

Edit labels

In the composite structure diagram, it is possible to edit the elements labels (see Diagram editor/Editor main graphical area/Direct edit). This actions allows to edit :

  • component, class, interface, port labels
  • relationships labels

Define the system environment

Then, John defines the system environment thanks to a deployment diagram, and how the software is deployed on the infrastructure. This diagram describes the current technological limitations and constraints.

The deployment diagram is used to describe the structure of the system by showing the physical deployment of artifacts on nodes.

The deployment diagram is an unsynchronized diagram which means that the user has to add existing elements manually on the diagram to see them.

Manage nodes

It is possible to create a type by selecting the type creation tool from the palette and then clicking on the diagram or an element. A diagram is associated to a package and when the user click on the diagram background the element is created under the corresponding package in the UML model. If the user selects a container, the element will be created under the corresponding semantic element in the UML model.

Tooltip tools are also available to create any kind of elements. You have the ability to create elements in a contextual way related to the currently selected elements. If your pointer is on the diagram background, after a few seconds you should see the following assistant : If your pointer is on a node the assistant will be :

Indeed, a node is a composite element.

Creation tools are available in the deployment diagram for the following types :

Element Representation Comments
Node Physical element on whic the system is deployed
Device Physical electronic resource with processing capability
Execution environment Specific node where artifacts are deployed
Artifact Physical piece of information used or produced by a system

So, the user can create deployment diagram defining :

  • Device, Execution Environment, Node and links :

  • Composite nodes :

The user can also delete an activity element (see Diagram editor/Editor tab-bar/Delete element/from model).

Manage relationships

It is possible to create a relationship by selecting the edge creation tool from the palette and then clicking on a source element and a target element. The following edge creation tools exist in the palette :

Element Representation Comments
Link General relationship
Dependency Dependency between elements
Generalization Indicates inheritance
Deployment Indicates the deployment of an artifact on a node
Manifestation An artifact embodies or manifests a number of model elements

The user can create :

  • artifact dependencies and generalization:

  • artifact manifestation of packageable elements:

  • artifact deployment :

    We have two way to deploy an artifact:

  • Deployment could be shown as a deploy dependency that is drawn from the artifact to the deployment target.
  • Deployment could also be shown with deployed artifacts contained by a deployment target.

The user can also delete a flow (see Diagram editor/Editor tab-bar/Delete element/from model).

And finally, he can reconnect flows. It is possible to reconnect the source and the target of any kind of edge in the activity diagram :

  • link
  • dependency
  • generalization
  • deployment
  • manifestation

Manage existing elements

As the diagram is unsynchronized, the user needs to add manually the elements already existing in the semantic model that should appear on the representation. It is possible to add existing elements by :

  • selecting the add tool from the palette or the tooltip and then clicking on the diagram or an element. The add tool opens a selection wizard.
  • drag and droping an element from the model explorer.

The following elements can be added on a component diagram :

  • node
  • node into a node
  • device
  • device into a node
  • execution environment
  • execution environment into a node
  • artifact
  • artifact into a node
  • component
  • package

The user can see that an element is not coming from the current package :

  • the element border is lighter than the element border of elements defined in the current package
  • a tooltip shows the container package of the element if the element is not contained by the current package

And finally, he can remove an existing element from a diagram. In this case the element is only deleted from the representation but it is not removed from the UML model. This Remove tool exists in the Existing elements section in the palette (see Diagram editor/Editor tab-bar/Delete element/from model).

In the deployment diagram a contextual action is available to show on the diagram the element related to the selection.

The add related elements action is available from :

  • a component , a node, a device, an execution environment, an artifact : shows all the elements that define a relationship (dependency, deployment, manifestation…) with the selected element
  • a deployment diagram : shows all the elements contained in the package associated to the diagram.

Edit labels

In the package diagram, it is possible to edit the elements labels (see Diagram editor/Editor main graphical area/Direct edit). This actions allows to edit :

  • component, node, device, execution environment, artifact labels
  • relationships labels

We added a few accelerators so that you can quickly edit labels on elements or edges just by typing. Typing :

  • aNewName will update the label.

Extend UML standard

Define extensions

Sometimes, the UML standard does not provide all the concepts expected by John. Thanks to the profile diagram, it is possible to extend the standard to add new concepts or to adapt existing ones. To use the profile diagram, the user must activate the Extend viewpoint.

The profile diagram operates at the metamodel level to provide new stereotypes and profiles.

To create a new profile, the user creates a new UML model and selects as root element a Profile element. Then on the newly created UML model, it is possible to create a new Profile diagram.

Another solution is to right_click on a model element in the Model Explorer and select the menu New Representation > Profile Diagram.

The main feature is to create and delete stereotypes in the profile diagram. A stereotype can be created by selecting the stereotype creation tool from the palette and then clicking on the diagram. A diagram is associated to a package and in this case the element is created under the corresponding package in the UML model. A tool is available in the palette to create a stereotype.

By default, a stereotype does not extend any metaclass.

A tool is available in the palette to reference a metaclass.

It opens a wizard which proposes all the available UML metaclass:

It is possible to filter the listed metaclass by :

  • Name
  • Only concrete metaclasses
  • Only sub classes of a selected metaclass

A tool is available in the palette to create extensions for a stereotype.

According to the context, this tool will create an Extension edge linking Stereotype to an Element Import or a Generalization edge linking two Stereotypes. An Element Import is an UML reference to an imported metaclass in a profile.

Another tool allows the creation of an UML “Association” between two stereotypes.

Furthermore, this tool can suggest to reuse the existing relationship in the metamodel UML, if this relationship can link the metaclass referenced by the target and the source stereotype of the wanted association. If the user selects an existing relationship of the UML metamodel, then the tool will import the metaclass of the selected relationship and create a new stereotype that extend this relationship. Besides, the tool link graphically the new created stereotype and the source and target stereotype of the association

Tooltip tools are also available to create any kind of elements.

The palette defines the following tools :

  • Stereotype : Create a new stereotype. The user selects the tool in the palette or the tooltip and selects the diagram background. A new stereotype looks like a UML class and contains in its label the keyword stereotype. By default a stereotype does not extend any metaclass. But when the user validates the UML profile, a warning is thrown when a stereotype does not extend, directly or indirectly, a metaclass.
  • MetaClass : Reference an existing metaclass. This tool opens a wizard which lists the UML metaclasses not already referenced in this profile. This wizard provides filters in order to show only the concretes classes or a sub part of the metamodel.
  • Attribute : Add a new property in a stereotype. After stereotype application, this property will be available in the property box.
  • Extension : Create an extension between a stereotype and a metaclass or create a generalization between to stereotypes, depending on the clicked elements. This tool also creates the base XXXX attributes which must not be visible on the diagram.
  • Association : Create an association between two stereotypes or a stereotype and a referenced metaclass. In the UML model, this tool creates a property in the stereotype and a navigable association to the target. This tool opens a wizard which also allows create a new association at UML level. This tool can also propose an existing directed relationship from UML, between these elements. If the user selects it, it will import the directed relationship into the profile and create a new stereotype extending it. The tool will display the association between source and target element, and link this new stereotype to it.
  • Enumeration : Create an enumeration within the profile. The user can also create enumeration literal in it afterwards.
  • Define : Generate complementary information within the profile in order to apply it dynamically in the current workspace. It mainly contains the UML annotation.
  • Undefine : Delete from the profile complementary information generated by the define command.
  • Export : Create or update an eclipse plugin in order to deploy the edited profile in an Eclipse installation. This plugin must contain the profile, all its generated code and populate extensions to register itself to the platform.

Defining a profile

The palette provides a tool to define a profile in order to be able to apply this one for other UML model in the workspace. This tool add information about the version to the profile as Ecore Annotation. Mainly, the information required for the versioning are:

  • Version number
  • Date
  • Author
  • Comment
  • Copyright

Another tool is available to undefine a profile, this tool removes all the EPackage representing the definition from the profile.

Exporting a profile

An export profile tool is available from the palette to export a profile as a jar file. This jar can be added to an eclipse platform to provide a profile as a registered package. The export operation creates an EMF project with an ecore file based on the profile model. Then an extension for the profile is added to the generated project (in “uml.generated_package” and “ecore.uri_mapping”). Finally, the tool builds and exports the created EMF project for the profile as a Deployable plug-in. The tool requires some necessary information for the creation of the deployable plug-in:

  • Profile name, which is editable in the profile model.
  • Profile URI.
  • Profile plug-in name.
  • Version information

Manage profiles and stereotypes

In UML Designer, a Profiles layer is available on all the diagrams. To describe his application John opens the existing diagrams and activates the profiles layer.

This layer provides a new section in the palette.

A new tool Stereotypes is available. Then, the user selects the Stereotypes tool in the palette and selects an element in the diagram, a wizards opens which shows the applicable and already applied stereotypes according to the available profiles. The stereotypes wizard lists all the stereotypes even if the profile was not applied before on the parent package. The tool will automatically applies the profiles before applying the selected stereotypes.

When a stereotype is applied on an element, a keyword representing the name of the stereotype is added before the label of the element :

It is also possible to manage from the property view :

  • the stereotypes in the Stereotypes tab. For example if the user selects a class, he will see:

  • the profiles in the Profiles tab available on Package elements. For example if the user selects a package (or the background of a class diagram as usually it is associated to a package) :

If the profile defines some properties on the stereotypes, these properties are available in the property box, after canonical properties of the element. Here is a sample with a Stereotype adding a “tagged value” on a package: