Functional chain vs exchange scenario

Hello! I have read the book “systems architecture modelling with arcardia method” and now I’m trying to employ the methodology used in my own model.
I am developing a system that must perform actions when an external entity requests it and at the end of that, send a response indicating the success (or not) of the operation.
During the system analysis phase I have created high level functions for the system that encompass the whole of the operations requested by the user (lets call them operation A and B).
Now going to the logical architecture phase: My system’s software shall have a service-driven architecture, and thus I will have a component coordinate the requests of services, and other components provide such services. To this end, I have broken down operation A and created a function “coordinate operation A” and then the services provided by internal components “service X” and “service Y”. Operation A is complete when those services are finished. After doing this I tried to create a functional chain that would express how:

  • Coordinate operation A sends a request to service X

  • Coordinate operation A receives a response from service X

  • Coordinate operation A sends a request to service Y

  • Coordinate operation A receives a response from service Y.

I cannot create a functional chain that includes “coordinate operation A” twice, so I thought about creating a functional chain of only requests to express the required sequence, but that fails to express how “coordinate operation A” needs to evaluate the response from each service before moving on.
For me there are three alternatives:

  1. Break down “coordinate operation” into multiple functions (request service X, handle service X response), which I don’t want to do because I wan’t to keep the definition of the coordination function free from the underlying services.

  2. Ignore functional chains and express the sequence of services requests and response in an (or several) exchange scenario diagram. I have not seen anyone do this so I don’t know if it is a valid approach and would like to know what this forum thinks. For me, the same information would be expressed but I could be missing something.

  3. Am I doing this wrong and should use a completely different approach for modelling this system

Here is an LAB depicting this issue:


Thank you in advance!

I think what you are doing is good, simply you cannot create loops in Functional chains when creating them, only when modifying them. More information on this thread: Data flow loops in functional chains and op. process descriptions

1 Like

Ah! I did not know that! I have tried it and it worked, by editing the functional chain I create loops and thus correctly represent the dependencies between functions. Thank you very much!

Note for anyone that also has this problem: When editing the functional chain you need to re-instantiate the original function, like so: (connecting to the original one doesn’t work)