is there any idea how to deal with variants in capella?
Yes we do.
- In Thales, we have coupled Capella to a feature modelling tool (PV, Pure::Variant). Variation points in the models create enable to link features in PV to model elements. Models of specific variants can easily be previewed/derived. This Capella / PV connector is not publicly available at that stage (while there is an ongoing effort to change that, the precise conditions have not been defined yet).
- There are ways to manage some degree of variability without using a dedicated feature modelling tool, by introducing feature and variants concepts as extensions of Capella (using Capella Studio). But here again, there is no ready-to-use, publicly available solution
Thank you for the information - PV looks very interesting. (also based on eclipse…, could be completely integrated into capella )
What is ment with “Variation Points”? Are variant elements placed “below” these points?
Are all different “variants” of a variant element/structure simultaneously kept in one project and only the selected feature variant is shown and the others are just faded out? Or is the project (file structure) changed by PV (like using a SVN with different branches)?
I think it is not that easy to deal with different messages and changing or missing ports/messages and so on…
Variation points are special elements that reference features and are referenced by model elements. That means they are not “below” the model elements.
A product model contains all the possible variation (alternative functions, exchanges, etc). There are two ways to exploit the variation points:
Dedicated diagram layers allow to filter the displayed content based on a given variant (a variant corresponds of a set of features)
Dedicated transformation tool allow to create a new model dedicated to one given variant.
The whole solution is pretty powerful, but as you have guessed, the complexity of all this grows quickly and van become difficult to manage. This is why automated propagation rules also to compute some variability based on the Capella meta model.
What is the current status of the Capella connector for pure::variants?
Although I am myself not familiar with Capella, I am in particular interested in how variability is modelled in Capella, and how this is combined with already existing variability mechanisms in typical architectural modelling languages such as inheritance, multiplicities, etc. From other connectors to pure::variants and your explanation of the Capella connector (i.e., variant preview) I understand that these typically are based on “element existence” variation points, which are materialized at “modelling time”, thus result in a (Capella) model variant.
Thank you in advance,
For me, the Capella connector for pure::variants is provided by pure::system (when you buy a PV license, the Capella connector is provided); but I don’t see this connector on the pure::system site.
Indeed, you define a feature model inside pure::variants and you define complex variations points (it can be a combination of features, …etc) in order to define if a Capella element is present or not ; but you can also change the value of Capella properties (as name, description,etc…). The preview functionality allows to check your mapping and of course you can derive (generate) a new Capella project according to your selection of features.
The big advantage of pure:variants is you can express the variability in a dedicated tool and exploit this variability in different tools as Capella, Doors, Word, Excel, … etc
The connector exists and has been presented publicly a few times; including in a tutorial at EMEASEC conference.
If you don’t find it on the Pure::Variants website, I suggest you contact Pure::Systems.
See the attached screenshots
We did a webinar ‘Variability management with Capella and pure::variants’ a few months ago.
The video is accessible here:
@Sebastien: I do have a pure::variants full licence, but Capella is not showing up. Tons of other tools are showing up and indeed from my experience with the Excel, Word, Enterprise Architect, MagicDraw connectors they work the same way as you describe how the Capella connector works (Simulink works a bit differently.) I will get back to my contact at pure::systems and ask where I can find the Capella connector.
@Stephane: I will contact pure::systems indeed, thanks!
@Samuel: thank you for the webinar, it provided my some useful insights.
What I am still wondering: it looks like “best practices” to implement variability (i.e., variation points) are not really part of the approach, and you need to figure this out for yourself. For example (in SysML, not sure if it directly applies to Capella as I am not familiar with the tool): if a Car has an optional RainSensor, do I want to:
(a) use a [0…1] multiplication on a relationship between Car and RainSensor, or
(b) use a [1…1] relationship and a pure::variants variation point that removes the RainSensor and the relationship if the RainSensor was not selected?
Are there guidelines for this?
There are no real guidelines for this.
Equivalences and differences between Capella and SysML tools is described on the Capella website (including a Youtube video). In Capella, the basic paradigm is that every component / every function is actually an instance. Therefore, we do not provide ways to specify cardinalities nor inheritance outside the descriptions of the elements that are exchanged between fonctions or between components.
We use model variability for Product Line Engineering. That means we have a 150% product architecture that can be derived in several specific variants that will be used by different projects. A project design can last months and in these projects, we need to resolve all the variability. In parallel, projects sometimes need to re-synchronize their models with regards to new versions of the product they want to integrate. Or, they want to promote updates or evolution from the product.
Note that typically, different teams are working on product and project models.