The description for the method “is_top_level” breaks the rule for encapsulation. It should determine the state of the class by checking other classes which has no idea about. It should be implemented in the parent class “Model access” that has the access to all its siblings, shouldn’t it? Or I misunderstand the concept of the method to show from which class should merging begins.
Yes that is misleading documentation. I have fixed it; it should read:
True if this is a top-level schema, i.e. is the root schema of a ‘model’. True if bmm_schema /= Void and then bmm_schema.model_name /= Void
.
Note: this model is partly implemented in Archie (java), and implementation of more recent BMM3 features is ongoing in Archie.
However, if you are trying to implement de novo (e.g. in some other language), you will find it easier to either look at the original code (in Eiffel) or still look at Archie (e.g. in IntelliJ or similar).
If you want to look at the Eiffel code, see the adl-tools project wiki on github. If you do either, then you will have a reliable version of code to follow.
Thank you for guidance. Yes I am developing it in c# for our project. I am sure the implementations in other languages specially in java could help me to understand the document better.
Java is obviously closer to C#, and the primary authors at Nedap have done a great job on archie and actively maintain it.