Table of Contents


3.c. Functional Chains

A Functional Chain is a subset of Functions of a System which are isolated in order to be visualized / focused / studied separately.

Functional chains are a very powerful mechanism to describe pieces of architecture related to a particular topic in a complex system. They are very helpful to represent all the functions, flows, components, interfaces involved in a feature or in order to show how an information that propagate from the end user man machine interface toward actuators, going through several flows, interfaces, functions, Control Units in between.

In this Projection, you can define Functional Chains composed of the existing Functions or new ones and specifies behavior with MSC diagram.

The arKitect object type for Functional Chains is Flow Chain. It is a generic object used to create Functional Chains as well as Physical Chains or Allocation Chains.

Access to Functional Chains

The Projections of Functional Chains (FCs) are placed in the folder of "3. Functional Architecture".


Add a new Functional Chain

Start by right-clicking somewhere in this Projection -> Add New Object -> Flow Chain. You can also drag and drop from the Palette menu.


The following FCs were created for our example.

Functional Chains attributes

The following table shows the properties of a functional chain:


Add new Objects to a Functional Chain

A Functional Chain is mainly composed of Functions. They can also include some Enabling Systems and States.

There are two ways to add new object like Functions in a FC:


Add existing Objects to a Functional Chain

Add Functions from the Dictionary to a Functional Chain

After adding your Functional Chain, you can add Functions or any other Objects to it by right-clicking on it -> Add Existing Object -> enabling system / Function / State / FC Behavior. This will allow you to add the Functions already defined in the Projection 3.1. Define Functional Architecture.


Then, the Function Dictionary opens and you can choose a set of Functions to be added to the FC.


The selected Functions and their corresponding Flows are added to the FC. In the example, we hid the Flows with question marks, or not relevant to the FC.


Add Functions to a Functional Chain by Drag & Drop from the tree view

The other possibility to add an existing Function or any other object to a FC is by drag & dropping from the right tree view. While in view "3.c. Functional Chains", display the tree view of view "3.1." or "3.1.bis." on the side and drag & drop the wanted objects into the target FC.


Show / Hide objects

Show objects

The main objective of Functional Chains is to be able to focus on a subset of Functions of a system. There are objects that we cannot remove from the FC, however, we are able to hide them. In order to do this, right-click on the object and select "Edit children" on the pop-up menu, a new window with a list of the children will open.

Objects added in a FC are displayed by default.

In the new panel menu, all checked objects are displayed in the IBD as shown below. It is possible to check an object and all its children objects, to do so right-click on the targeted parent object on the list and select "Check all children".

Hide objects

To hide an object just uncheck it from the Edit children window.

Here in our example, we have unchecked function "Capture the Wi-Fi signal". The result should look similar to this:

Note that a hidden Function disappear with all its both input and output flows.


There is also a quick way to hide actually displayed objects. Right-click on the targeted object and select either "Hide object" (object only and children still displayed) or "Hide object and children".

Show / Hide flows

An important script allows you to show or hide links between Functions. Right-click on the object and select "Edit flows". A new editing window will open, shown flows are in the right column and hidden flows are in the left column.

Note that you can select all of the non-produced or non-consumed links by one click.

Flow are identified by the following symbols:

A window appears, and you can choose which Flow you want to see or not. This window contains all Flows connected to the selected Function, even those of its children (sub-functions), except for internal flows.


In our example, once we have hidden the unwanted flows, the final result is shown below:


Create a new Functional Chain by merging existing ones

You can merge several Function Chains into an existing FC.

To merge several FCs in an existing one, right-click on the target FC and select Merge chains. We will do this in the FC Network Functional Chain.


Then, a pop-up window opens and you only have to choose FCs to be merged.


We create a new FC by merging two existing ones.

Add Message Sequence Chart (MSC) object

As a reminder, a message Sequence Chart (MSC) is a program allowing adding a dynamic dimension to a static graph.

There are 2 "versions", the generic MSC (get the general informations : MSC) and the specific MSC which can be used a bit differently for Functional Chains  in the SEA data model.

We will introduce how to configure the specific MSC for chains in arKItect designer and then how to use it knowing there is a bijection between the chains objects and the MSC objects.

Remark : specific MSC can also be used for Allocation Chains.

How to configure MSC for chains in arKItect designer

The configuration is almost the same than for the generic MSC (see MSC) excepted that you have

  1. To add the object MSC (called here "FC Behavior") under the object Chain in the Rules (see image below)

  2. To configure the 2nd attribute (see : MSC) adding " appType=u'FC' " with the objects and flows needed in your chain (see example below)


from import msc
def run(obj):
        msc.LaunchGui(obj, ["enabling system", "Function","Subsystem"], ["Data flow","Physical flow", "trigger"], appType=u'FC')
        import traceback
        print traceback.print_exc()

Remark : this code allows creating MSC for Functional Chains and Allocation Chains.

How to use the object MSC with chains

Functional Chains

Once you have configured your object "FC Behavior" (MSC for chains) you have to know there are 3 main differences with generic MSC to understand how to use it (for the general informations : MSC#HowtousetheobjectMSC).

  1. Every objects and flows existing in a chain are added in the MSC view when the program ("start  msc") is launched for the first time (see table below).

    Functional Chain : Cooling managementMSC : FC Behavior _ cooling management

    Comment :

    Step 1 : a chain has been created and an object FC behavior added.

    Step 2 : using the object FC behavior the program "start msc" is launched.

    Comment :

    Step 3 : the MSC view is initialized with every objects and flows of the chain.

  2. There is a bijection between the MSC view (MSC) and the Chain view (IDB) : if the chain evolves with any modifications, the MSC view evolves too, and vice versa (see table below)

     In IBD (static diagram)In MSC (dynamic diagram)
    Adding an element in a view adds it automatically in the other view ?Yes, it is added in MSC after running programYes, it is added in IBD after save
    Renaming an element in a view renames it automatically in the other view ?Yes, it is renamed in MSC after running programYes, it is renamed in IBD after save
    Deleting/ removing an element in a view delete it automatically in the other view ?

    Yes, it is deleted in MSC after running program

    and a note will specify which object has been deleted.

    Yes, it is deleted in IBD after save



  3. Objects and flows are marked to know what have been added in the chain from the last save.

When the MSC view is initialized every objects and flows are marked. By right clicking on the background of the graph you can unmark all objects (see images below) :

How to unmark all ?Result :


After saving your MSC view, if you add new objects and flows in your chain, the new objects and flows will be marked in the MSC view (see images below) :

New object "New Function" (in blue) and new flow "New Flow" (in blue) are addedObject and flow are added and marked in the MSC view


To unmark 1 object or 1 flow you can right click on it and select "Unmark" (see images below)

0. How to unmark object and flow ?

1.a. To unmark object, right click on it --> "Unmark" 1.b. Result2.a. Tu unmark flow, right click on it --> "Unmark"2.b. Resu


By the same way you can Mark an object or Flow if you need to highlight him for any reason.


Allocation Chains

MSC are also available for Allocation Chains, while respecting the exact same rules.

You can obtain for example :

MSC (dynamic view)Allocation Chain (static view)

: your arKItect view 5.c. (Allocation Chain) can be unavailable, if this occurs please contact your administrator.

Add Comment in a FC

It is possible to add Comments in Functional Chains. Furthermore, it is possible to do so in Functions listed in FCs as well.

Just use the Palette or right-click in the FC or Function and choose "Add New Object" -> "Comment".



Note that if you put a Comment in the FC, it will be specific to this FC, you will not see it elsewhere.

However, if you put a Comment in a function in a FC, this comment could be seen wherever the function is.

Visualize FCs contents

There is an easy way to see all information about Functional Chains. You can see all of the Functional Chains allocations in tabular view mode.

Click on Project Tools icon in the toolbar. A Project Tools window appears. Click on the corresponding table : "d. Visualize FCs contents".

You will see the table with three specifics tabs : Enabling systems on FCs, Flows on FCs, Functions on FCs.

In each tab you will see all corresponding objects allocated to one or more Functional Chains.



Note that it's possible to add information in this view. You are free to modify allocations on functional chains (Add or Delete).

But don't forget to respect the specific format and the name given to FCs.

Object's colors in Functional Chains

ArKItect allows you to change the objects colors when viewed from a particular chain. This color will be visible only inside that chain, and will return to default when viewed from another chain or to another view. This means, the same object can have different colors in each chain.

This feature is useful when you want to highlight an object in a Functional Chain for a particular reason.

Note that the applied color will not affect the object's color in other views.

Tip: The object's color update is done at the moment you enter a chain, however, in other views, the object's color might be updated by refreshing, or by going back to the object's root.

The procedure will be the following:

Enter the desired Functional Chain. In our example, we will enter the "Wi-Fi Functional Chain".

Right-click on the object you wish to modify. In this example, we will do so for the "Capture Internet signals" function. Proceed to click on "Graphical Properties".

The following window will display:


Under the Graphical options, click on "Fill".


Once there, you are able to change some fill properties for the object. We will change the Foreground color.


We proceed to save the changes. The result is the following:


In the case of the flows, the procedure is the same, although instead of changing the fill color properties, we will change the "Link Line".