Reverse engineering a system

Hi, I’m evaluating Capella for use in an autopilot system. I’ve followed a lot of videos and tutorials, but they are all predicated on creating a new system from requirements. I’m trying to build a model of an existing complex system, however. Starting from the Operational Analysis phase and moving down is proving difficult at best. I would like to start at the known component phase and build up but don’t see an example for that.
For instance, I’d like to start at physical, or perhaps logical level, build out the model and sequence diagram for a single sensor, then be able to use that sensor in a broader diagram. Is this possible? Are there examples of reverse engineering I can watch/utilize? Thank you.

1 Like

Hi John,
You are right, I am not sure we have an actual video or tutorial showing how to use Capella and Arcadia in a reverse engineering example. For a methodological viewpoint, you can for sure use Arcadia in reverse engineering contexts, this is actually very often used in this situation. The Arcadia book from Jean Luc Voirin provides some methodological explanations on this, for instance on how to perform functional analysis in this case.
In Capella, nothing forces you to start by Operational analysis od System analysis, you can start by modeling your Physical Architecture for instance. So I don’t see any problem with you starting to create physical components and function for your single sensor.
I am not sure exactly what you mean by “using it in a broader diagram”. But let’s say you have created an architecture diagram with your sensor, showing physical components, functions, and exchanges. you can still create new components in your diagrams, or create other diagrams where you can display other things and your single sensor as well. Maybe your question is about reusing your sensor model in other Capella projects/models. In that case, that would involve moving your sensor model into a Capella library, making it a REC, and then you can reuse it in other Capella projects/models.
But going back to doing reverse engineering with Capella: the typical use case would be that you have an existing system that you may want to modernize. So what you would do is start by reverse engineering it (physical architecture, physical functions…) but ideally, you would also reverse-engineer the needs, so System Analysis maybe. And from that, you would add the new systems functions at the SA level (this is what my modernized system needs to do now), and see how your reverse-engineered architecture may support the new functions, or how you need to evolve it.
While doing reverse-engineering of your system, you’re discovering all your system components and functions. It is a good methodological habit to then spend some time grouping those components and functions in higher level (grouping) components and functions, enabling you to discover/reverse engineer the actual architecture of your system, making your inpact analysis much more efficient when adding new functions.
I hope that helps.
All the best,
Stéphane LACRAMPE
Obeo

Stephane
by reverse engineering they mean to create models from the existing source code they already have. Is it possible with Capella? Is there any plugin that can be used if Capella by itself cannot do such reverse engineering?

Hi Valera,
I don’t think they meant reverse engineering source code. But to answer you question, I there is no automated source code reverse engineering with Capella. There are other eclipse projects who does this nevertheless.
Stephane