[Uml-devel] CASE tools and IDEs
Andrew Sutton
ansutton at kent.edu
Wed Jan 29 10:30:07 UTC 2003
On Wednesday 29 January 2003 11:59 am, Sebastian Stein wrote:
> > ...
>
> This describes very well what I'm thinking about IDEs and CASE tools. Thank
> you Andrew!
ain't no thing :)
why, for the love of god, did the OMG have to make these standards so hard to
wrap your head around. i've been beating my head against this stuff for the
last weak trying to figure out how to implement the lifecycle semantics in a
general way so that its applicable for both MOF and UML - because they both
derive from the reflective interfaces. its driving me insane - not to mention
building adaptation interfaces into the reflective interfaces so we can adapt
UML and MOF and CWM and whatever other metamodels we feel ambitious enough to
implement to the reflective interfaces. i think the OMG is playing a cruel
joke on us.
agh... extents and lifecycles. damn them. damn them!!! of course, non of this
would be overly complicated if i gave up trying to figure out how to build
the ultra-generic XMI parsing algorithm - i think i have it figured out.
anyway, here's what i'm figuring out:
an extent is something that absolutely contains instances of something else.
we deal with 3 types of extents: package extents, association extents and
class proxies (basically a factory interface). the outermost extent is
really, really important and is always derived from RefPackage. it contains
instances of all other nested and clustered packages that are imported. it
also contains instances of class proxies and associations defined within that
package.
for MOF, the outer most package is Model:Package. for UML, it can be either
UML:Package, UML:Model or UML:Subsystem (Model and Subsystem derive from
Package). Each of this is implemented by a class with the name "Package"
appended to it and provides accessors for all the extents it instantiates.
The reflective interface allows generic access to those extents based on the
name - in otherwords, given a RefPackage reference, you can lookup the class
extent and instantiate it using the RefClass::create() interface. working
with associations is quite similar - actually, its a little easier (which
surprised me).
i think the adaptation of any metamodel (MOF, UML, CWM, etc.) is going to boil
down to implementing various concepts that are required for adaptation. i
think what's really driving me mad is what those concepts are and how they
might be defined, much less implemented. here are the concepts of come up
with:
- scope resolution - this deals with immediate and outer package methods on
RefBaseObject.
- meta object identification - i still don't really know alot about this. its
very, very confusing to me. i think it will always boil down to returning the
metamodel object from which the instance was created. for MOF and UML objects
it will almost always be Model::Class, Model::Package or Model::Association.
don't quote me on this though :)
- containment resolutions - the immediate and outer composite. i'm not sure
what the difference is between composition and scope. i think composition
deals with instance containment where scope deals with classifier
containment.
- factory - actually pretty simple. class proxies for non-abstract classes
provide a create() method that instantiates an implementation object.
- class - also pretty simple. An instance of an object returns an instance
to the class proxy from which it was created. notably different than
meta-object identification.
there's a bunch more. i'm trying to pick through these and figure out which
concepts can be implemented generically and which require additional code. i
fear that i'm not doing a great job at it. anyway, that's why i'm late
handing this mass of code off to anybody :)
andy
More information about the umbrello-devel
mailing list