Initial, and incomplete response to Lee's comments

6 views
Skip to first unread message

Leon Starr

unread,
Oct 12, 2009, 5:31:51 PM10/12/09
to miUML
Responses to Lee's comments

1. Remove R21
(This is now R27 on version 2.0)
--
An identifier may not span classes. R27 captures the constraint that
all attributes in a multiple attribute identifier belong to the same
class. This association also expresses the idea that an identifier,
single or multiple attribute, is defined for a specific class.
--
2. Add the <<imported>> class, Instance.
--
Correct. I had only begun to thing about model populations and this
is the least mature part of the metamodel. The population subsystem
represents an initial stab at the problem. I will make this update.
--
3. Relate Instance to Identifier as:
"An Instance has uniqueness determined by one or more Identifiers."
"An Identifier determines uniqueness of one Instance."
NOTES: Classes don't really have a need for identifiers. Instances
always require an identifier, either implicit or explicit.
--
We need to make sure we agree on the terminology first. The model
defines an "Identifier" as a set of "Attributes" in the same "Class"
with the familiar uniqueness properties. The set of values
corresponding to an Identifier must not be equivalent to any other set
of values for the same Identifier within a given Population.
That said, an Identifier as described on the model is, in fact, an
explicit Identifier. Implicit Identifiers are not covered by the
metamodel. They are so very implicit!
Now we come to your specific request. An "Instance" is described by a
single Class and hence zero or more explicit Identifiers. So there is
no need for an additional relationship if we keep R27. It is critical
that an object's relationship to its explicit Identifier is
constrained within the object's Class. What do you think?

Population Subsystem:
I completely redoing this. I've got a new diagram and am writing the
descriptions now. Hope to post it on the group by the end of the
week.

- Leon



Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

lwri...@frogooa.com

unread,
Oct 15, 2009, 7:25:13 AM10/15/09
to miUML
On Oct 12, 5:31 pm, Leon Starr <leon.st...@gmail.com> wrote:
> Responses to Lee's comments
>
> 1. Remove R21
> (This is now R27 on version 2.0)
> --
> An identifier may not span classes.  R27 captures the constraint that
> all attributes in a multiple attribute identifier belong to the same
> class.  This association also expresses the idea that an identifier,
> single or multiple attribute, is defined for a specific class.
> --
OK, but I still find the semantics of the relationship phrase
cumbersome; it implies a relationship between Instance and Identifier
without explicit constraint in the model. The phrase, An Identifier
"is denoted in" a Class, seems closer to the true relationship.
Message has been deleted

lwri...@frogooa.com

unread,
Oct 15, 2009, 6:25:42 PM10/15/09
to miUML
Here's a posting from Marc Balcer on the Executable UML Yahoo! group
that might add something to this discussion:
<quote>
What appears to be "making referential attributes optional" is
really "making the _display_ of contrived identifiers and simple
referential attributes optional."

1. Every class still has an identifier. It's just that one no
longer needs to show contrived identifiers on the diagram.
2. Every association is still formalized with a referential
attribute. It's just that one no longer needs to show these
referential attributes unless they are also needed for specifying
additional constraints.
</quote>

This implies that the following (identifier) rules should be captured
in the metamodel:
- Every instance must have an identifier. (I think Marc should be
using "instance" instead of "class" in 1.)
- The display of contrived (implicit) identifiers is optional.
* Two types of identifiers, implicit and explicit.
* Attributes can be visible attributes or hidden attributes, with
hidden constrained to implicit identifiers and referential attributes.

How would one select an instance via implicit identifier? Would the
action language need a keyword e.g., implicit_id? I think contrived
identifiers are pretty common. Aren't they?

Leon Starr

unread,
Oct 15, 2009, 7:52:03 PM10/15/09
to miUML
Thanks for all the great posts Lee, I wish I could do a better job
keeping up. I always read immediately, but I'm multitasking a couple
of projects now. If only the metamodels paid my bills... But this is
an awesome hobby and I'm thrilled about all the new folks signing up.
You've got a few comments, so I will try to roll them all up into this
one response and hope it covers everything.

<quote>
OK, but I still find the semantics of the relationship phrase
cumbersome; it implies a relationship between Instance and Identifier
without explicit constraint in the model. The phrase, An Identifier
"is denoted in" a Class, seems closer to the true relationship.
<\quote>

Okay, sounds like you agree with the model, but not the way I named
the relationship phrase. And obviously, that created some confusion,
so we should reword it. Your suggestion makes sense and let me think
about it. I went back to look at the descriptions thought to myself
"Who wrote this crap? Oh yeah, me." The source document is all in
Framemaker so I need to upgrade the format to what I am currently
using. Also, I see I omitted the implicit identifier examples and
never got around to filling those in, so I will fix that. I will get
going on filling in the gaps.

Next topic - implicit / contrived identifiers. Unfortunately, my book
went to press before Steve and Marc's and despite my best attempts to
synch them up, those boys went and used a different term! But they,
not me, are the experts in methodology, so "contrived" is the correct
term and I need to go fix my book.

Which brings us to a HUGE hole in the miUML metamodel that no one has
pointed out to my surprise. Referential attributes are NOT handled.
Furthermore, the connection between contrived identifiers and
attributes are not handled. There is just this relationship scope
thing - what's going on? Bear with me while I answer my own question.

Before I built the miUML metamodels I naturally spread out other
metamodels that I could find, notably Project Technology's and gave
them good study. In fact, before those models came into existence,
when I was an employee at Project Technology, way back in 1984-5, I
spent a lot of time trying to model the Shlaer-Mellor notation on my
own as a perverse exercise. I accomplished a lot in this first
attempt, but gained a serious appreciation for just how difficult it
was to get the job done right. Ultimately, my modeling skills were
not up to the task and I failed. Actually, a lot of folks in the
various OOA camps (Hatley-Pirbhai) notably, also failed miserably.
The difference was that I knew that I had failed. The other guys just
painted with a broad brush and glossed over all the subtle
contraints. But I digress...

So during attempt #2, I saw that the PT models did a fine job where I
had failed, but something disturbed me about these models. They were,
for the most part, correct but incredibly convoluted. The convolution
centers around the way referential attribute mechanics are interwoven
with the object modeling semantics. So, on the one hand, I thought
"Yeah, it really is that complicated, nice job!" juxtaposed with "This
model is a MESS." With all these printouts scattered across the
dining room floor I eventually figured out what was bothering me.

My conclusion was that referential attribute mechanics, identifiers,
etc. are topics in the relational model domain. In that domain, the
model should be fairly simple. So I decided to try building a
metamodel with the idea that the referential attribute games would be
played in a separately modeled domain and then bridged into the object
modeling semantic domain. That's the plan, anyway. It may be a bad
plan, but that's where I'm going with this.

And that's why you don't see any referential attribute mechanics in
the miUML metamodels at this point. The reason I mention all this, is
that it relates (will relate) to how we deal with contrived
identifiers as described in Marc's post.

I am getting ready to take a stab at it right after I produce the
Population Subystem. I will be posting that very very soon. It
connects classes/attributes/identifiers to instances/objects/links/
values. (The model is sketched, the descriptions have been written,
and I am just reviewing right now so stay tuned).

Right, I need to stop blogging and get back to real work.

- Leon


It looks like you are okay

On Oct 15, 3:25 pm, "lwrie...@frogooa.com" <lwrie...@frogooa.com>
wrote:

lwri...@frogooa.com

unread,
Oct 15, 2009, 10:34:57 PM10/15/09
to miUML
On Oct 15, 7:52 pm, Leon Starr <leon.st...@gmail.com> wrote:
> Thanks for all the great posts Lee, I wish I could do a better job
> keeping up.  I always read immediately

Well, "read immediately" would have been a waste of time over the last
couple of days, because I was doing some posting without thinking.
(Nice that you can remove the ill-thought out posts here. ;-) )

> I am getting ready to take a stab at it right after I produce the
> Population Subystem.  I will be posting that very very soon.  It
> connects classes/attributes/identifiers to instances/objects/links/
> values.  (The model is sketched, the descriptions have been written,
> and I am just reviewing right now so stay tuned).
>
I concluded that any further thoughts would have to wait for the
Population Subsystem. I completely understand the " If only the
<hobby> paid my bills" thing; after all, I did take 7 years to send my
second batch of comments on your metamodels. :-D
Reply all
Reply to author
Forward
0 new messages