This week I’m again consulting and I’ve run into another issue with reflective system. At this client site we have multiple systems that all get their flexibility from use of configurable metaobjects.
The main issue to solve is how to overcome the dependencies between the various systems.
Unfortunately, there is my client is using different models for metaobjects across the systems. Different groups have different idea of what the metaobjects ought to look like (or if you want, they all use completely different meta-metamodels). In most cases, I think the metaobject have emerged organically with no oversight.
For those readers that have been in this predicament before, the issues are probably obvious, but for others… If my system is completely flexible and their system is completely flexible… then I have to understand how their system may change and build some kind of language for allowing mapping between metaobjects in the two systems.
My previous experience with this has been that if two systems build a model for metaobjects (or a metamodel), the two metamodels usually end up being very similar…
In this case though, they are not. The system we need to interact with has built a metamodel that is flexible but not very descriptive.
The other system basically consists of objects defined by metaobjects (that is every object is linked to its corresponding metaobject (e.g., “John Doe”: Object is linked to “Person”: Class). Each object can have a set of attributes, (e.g. “John Doe”: Object OWNS a “32”: Attribute) and these attributes are typed with metaobjects (“32”: Attribute is linked to “Age”: AttributeType). In addition every object can have a link to another object and the link is typed with a meta object. This model allows you to store information about almost everything, however, if what you store are at different meta levels, you run into some severe problems for the ones that access you… that is, what kind of object is this really? Does it represent an enumerated list? Is it a object with content? What is it…
The system I’m building has a much richer metalanguage allowing for definition of constraints, structure, enumerated types, etc…
I know a lot of theory about this topic, but so far I’ve come to the conclusion that my problem here impractical to solve… The model that was built for the other system does not provide sufficient information to build a proper map… This seems to be a recurring problem where flexibility is a retrofit…
A bit of advice: When building a metamodel, DON’T start from scratch. There are lots of metamodels around that are WELL THOUGH OUT and allows you to define ALL the rules required to constrain the objects without loosing flexibility or semantic…
0

Add a comment

About Me
About Me
Blog Archive
Subscribe
Subscribe
Links
Subscribe
Subscribe
Loading