We know that ARCADIA is very powerful to do interaction modeling, with functional exchange, component exchange and physical link.
However, it seems not enough to do communication protocol design. So my question is, can we use ARCADIA & Capella to do protocol design ? Or is there some existing add-on to do it ? Or we should just use some professional tool to do protocol design, and use ARCADIA model as an input ?
Thanks for any reply !
just to be sure, could you please detail what you mean by communication protocol?
In my understanding, a protocol describes the time-related chronology of interactions between two (or more) entities, so as to establish the connection between them, perform various exchanges of information, material, etc., while ensuring the appropriate quality of communication service, and then ending the connection.
In this case, we use the following concepts of Arcadia to describe the protocol (usually starting at functional level for most details):
components or actors or system being the entities communicating through the protocol
functions allocated to them to express processing of communication and interaction on each side
functional exchanges between these functions to describe each elementary interaction
data (classes) and exchange items to describe the contents of these exchanges
interfaces to group these exchange items, in order to define expectations on components to support this protocol
but also component scenarios to illustrate the chronology of the former exchanges, different possibilities, nominal and abnormal behaviour…
and mode or state machines to describe conditions of evolution and steps in the protocol; usually, one (or more) machine at protocol level, to describe the overall logic of its progress, and one (or more) machine for each entity to express its internal state and protocol progress from its own point of view
non-functional property values on these elements to describe expected quality of service (e.g. time constraints, bandwidth, encryption…).
Arcadia also introduces protocol as a language element, and interaction roles, but this is not yet supported by Capella. In the tool, these elements can be grouped into a Replicable Element Collection, and/or in a library for example, in order to be reused.
Thanks for your reply!
I’m not sure if my understanding is correct, but the “protocol” I mentioned means detailed mechanism of interaction.
For example, in a certain protocol, there is one master device and several slave devices. Each slave device has a unique 7-bit address. Master and slaves are connected by two lines (X line and Y line).
- Each time of communication between master and slaves is started by a “start signal”, which means pulling down X line while Y line is high.
- Then all slaves shall listen for the address.
- The addressed slave shall respond by sending an acknowledge bit by pulling down X line.
- The following bit indicates if the master wants to read (logical 1) or write (logical 0).
n. The ends signal of each communication is to release X line while Y line is high.
The protocol also involves how to assign addresses to slave devices, in order to reduce possible errors due to bit-flips caused by radiation events.
I think maybe we can design these things above by pushing some concepts of Arcadia one step further.
I think you can model this using Arcadia, at least partly, but you probably would benefit from separating conceptual and implementation levels of abstraction.
Considering the conceptual level of abstraction, first, you would mainly define functional exchanges such as ‘start’, ‘address’ (from Master to slaves), ‘acknowledge’ (from slave to master), ‘read command’ or ‘write command’ (from master to slave), etc. The time-related progress of the protocol interactions would be best described by a component scenario involving functional exchanges above.
You could consider defining one or more component exchanges to group these functional exchanges, and allocate them to a notional line set (grouping X and Y lines) as physical link.
Regarding the implementation level, the first question should be: “is it useful to describe X and Y lines and their signals separately, at system engineering and architecture level?” It is likely that this level of details does not influence or constrain system level architecture, so it would not appear there but for example in software or hardware design. Similarly, integration team will mainly focus on conceptual level, only design team will investigate at implementation level.
Usually, in such situations, we only keep conceptual level of detail in the Arcadia model, and describe the implementation details in a companion repository and tool, with the appropriate level of detail (both for lines wiring and for data format bitwise description), linked to Capella model; the user interface allows for users to transparently navigate from one tool to the other. This would be our recommendation.
If, however, you really consider that this should be described in Capella, then you have no means to allocate one single functional or behavioural exchange (such as ‘start’ or ‘write’) on two physical links (such as X and Y). This would lead you to separating command functional exchanges into X line command and Y line command separately. But in this case, consider putting this level of detail in another detailled Capella model, separated from the system architecture model, that would be kept more conceptual here.
Your recommendation sounds quite reasonable.
Is there any free or commercial add-on for integration with the implmentation level design tool ?
Or do you have any demo or introduction material about your practice ?