FYI
(17:49:07) Matthias Bohlen: Hi Wouter
(17:49:12) Wouter: hello Matthias
(17:49:35) Matthias Bohlen: Two points, very briefly because I have only about 15 min.
(17:49:40) Matthias Bohlen: 1. Manageable
(17:49:53) Matthias Bohlen: 2. bpm4struts transitions and controller operations
(17:50:05) Wouter: k
(17:50:17) Matthias Bohlen: What's this <<Manageable>> stereotype for?
(17:50:40) Wouter: it's for denoting the ability to manage something .. for an entity it means CRUD for example
(17:51:07) Matthias Bohlen: Why is it a stereotype, not a tagged value?
(17:51:19) Wouter: ease of use
(17:51:31) Wouter: and the way it shows up in diagrams .. easier to read
(17:52:24) Matthias Bohlen: Hmmm... you remember my email about adjectives as meta-attributes, i.e. tagged values?
(17:52:32) Wouter: yes, you read my reply ?
(17:53:02) Matthias Bohlen: Yes. I think, we should be as formally correct as possible. The AndroMDA project has two purposes:
(17:53:07) Wouter: what will be the added value of really following the 'rules' exactly here ?
(17:53:15) Matthias Bohlen: 1. Create a working MDA generator.
(17:53:29) Matthias Bohlen: 2. Show people how the MDA concepts are used correctly.
(17:54:02) Wouter: wel, correctly is not always better :-)
(17:54:05) Matthias Bohlen: To serve the second purpose, our UML profile has to be as correct as possible.
(17:54:25) Wouter: yes, I understand that .. I too prefer things to be as correct as possible ,...
(17:54:33) Wouter: but it will only get in our way
(17:54:44) Wouter: what's the actual added value ?
(17:54:53) Wouter: in practice that is
(17:55:15) Wouter: you have to agree that TVs are annoying .. and not really clean
(17:55:21) Matthias Bohlen: The added value is: the rule of least surprise. It's like the added value of coding conventions in Java.
(17:55:25) Wouter: I mean. they fell like a hack
(17:55:28) Wouter: feel
(17:55:37) Wouter: yes, but we break them too
(17:55:45) Wouter: we place the { on a newline
(17:55:49) Matthias Bohlen: No, I don't feel like that.
(17:56:14) Wouter: I do understand your concern though
(17:56:16) Matthias Bohlen: TVs are like attributes, stereotypes are like classes that carry those attributes. Perfectly clean.
(17:56:50) Wouter: well, okay .. to mention one thing for example:
(17:56:53) Matthias Bohlen: My concern is: I give trainings to people. When I do not adhere to the rules I teach...
(17:57:00) Wouter: we need tagged values to tune the Manageables
(17:57:11) Wouter: how can we do that when the manage is a TV itself ...
(17:57:12) Matthias Bohlen: ...people will get confused.
(17:57:36) Wouter: so I defined a few TVs and added them to the stereotype
(17:57:43) Matthias Bohlen: Aha! That's a different thing. Which TVs do you have?
(17:58:12) Wouter: it depends on where it's used, don't forget CRUD goes through all 3 tiers
(17:58:20) Wouter: so for example:
(17:58:34) Wouter: (I will skip the @andromda... prefix)
(17:58:44) Wouter: maximumListSize
(17:58:47) Wouter: resolvable
(17:58:54) Wouter: pageSize
(17:59:08) Wouter: they control the way records are fetched from the DB
(17:59:21) Wouter: resolvable will fetch the list of possible foreign keys ...
(17:59:23) Wouter: (boolean)
(17:59:50) Matthias Bohlen: Does <<Manageable>> apply to entities, only?
(18:00:01) Wouter: otherwise the user has to figure the values out himself (in case of very big tables you will want to toggle that off in the web tier)
(18:00:04) Wouter: no
(18:00:16) Wouter: also to use-cases (not implemented yet)
(18:00:30) Wouter: but there it's a different usage
(18:00:34) Matthias Bohlen: What does a mamageable use case mean?
(18:00:43) Wouter: still to be defined
(18:00:51) Matthias Bohlen: the basic idea?
(18:01:16) Wouter: it would describe CRUD processes in more detail
(18:01:26) Wouter: using activity
(18:01:34) Wouter: for customization for example
(18:01:37) Matthias Bohlen: mmm...
(18:02:33) Wouter: I haven't spent much time on it yet though, been focusing on the entities
(18:02:35) Matthias Bohlen: What if you define a <<ManageableEntity>> stereotype and let it extend <<Entity>>? UML allows this, with defined semantics.
(18:02:46) Wouter: yes, that's what I wanted to talk about
(18:02:57) Wouter: but since you were away I discussed it with Chad first
(18:03:05) Matthias Bohlen: I hope MagicDraw does it correctly.
(18:03:15) Wouter: he felt we should rather group stereotypes than creating new ones
(18:03:26) Matthias Bohlen: group?
(18:03:36) Wouter: having 2 in this case
(18:03:39) Wouter: on the same class
(18:04:02) Wouter: otherwise you end up with a lot of combinations
(18:04:13) Matthias Bohlen: I see. It's the same thing as a mixin in Java.
(18:04:35) Wouter: anyway, I don't have any particular preference
(18:04:46) Wouter: but I tend to agree with hime
(18:04:51) Wouter: him
(18:04:52) Matthias Bohlen: Mixin = aroma you mix into a plain vanilla class.
(18:05:18) Wouter: I don't understand that mixin thing
(18:05:44) Matthias Bohlen: In Java, for example, Comparable is a mixin interface.
(18:06:12) Matthias Bohlen: You "mix" it into your classes by implementing it.
(18:06:32) Matthias Bohlen: It's like adding strawberry flavor to vanilla ice cream.
(18:06:48) Wouter: as opposed to an interface that is simply implemented while the impl extends Object ?
(18:07:29) Matthias Bohlen: no, it's more a semantic thing.
(18:07:31) Matthias Bohlen: Example:
(18:07:54) Matthias Bohlen: I could create a Car class...
(18:08:02) Matthias Bohlen: and I could try to sort Cars...
(18:08:18) Matthias Bohlen: therefor, I could create a ComparableCar class which is nonsense.
(18:08:34) Matthias Bohlen: Otherwise, Car could implement Comparable.
(18:09:10) Matthias Bohlen: So, if <<Manageable>> is kind of a mix-in for <<Entity>>, I could live with it.
(18:09:39) Wouter: hmm, yeah that's indeed how it's currently used
(18:09:53) Wouter: I don't see what else we would do with it
(18:10:10) Matthias Bohlen: OK, so let's adopt a "modeling convention":
(18:10:27) Matthias Bohlen: A stereotype can be one of two things:
(18:10:45) Matthias Bohlen: A metaclass with a concrete meaning (i.e. <<Entity>>)
(18:11:12) Matthias Bohlen: 2. A meta-mixin to be added to a concrete meta-thing (i.e. <<Manageable>>)
(18:11:33) Matthias Bohlen: We have to find better words for it, though.
(18:11:55) Wouter: so what about the <<Unsecured>> use-cases ?
(18:12:06) Matthias Bohlen: Maybe, we should call it "add-on" instead of "mix-in".
(18:12:28) Wouter: so what is the formal definition as to identify a mixin/addon ?
(18:12:32) Matthias Bohlen: <<Unsecured>> still feels worse because this should *really* be a tagged value.
(18:13:03) Wouter: the same thing applies here too: what if you want to fine-tune security ?
(18:13:07) Matthias Bohlen: The formal definition would be: if the add-on really is a whole concept as opposed to a simple option switch...
(18:13:11) Wouter: you would use tagged values
(18:13:18) Wouter: the way I see it:
(18:13:26) Matthias Bohlen: then it should be an add-on stereotype.
(18:13:43) Wouter: a stereotype is something high-level, definitely PIM. but tagged values control the PSM transformation
(18:14:06) Matthias Bohlen: No, not necessarily.
(18:14:28) Matthias Bohlen: A stereotype is like a new metaclass...
(18:14:38) Matthias Bohlen: and a TV is an attribute of this metaclass.
(18:14:51) Matthias Bohlen: PIM markup is only *one* application of TVs.
(18:15:40) Matthias Bohlen: I have to leave. The other question I have is about bpm4struts. I'll put it into an email tonight.
(18:16:25) Wouter: well, at the end it boils down to: you want to have a difficult to maintain model which conforms to all the rules, or do you want something that is more readible and easier to maintain ?
(18:16:28) Wouter: k
(18:16:44) Matthias Bohlen: Oh boy, if you put it that way... :-)
(18:16:57) Wouter: because only tagged values will not be cool for the end-user
(18:17:39) Matthias Bohlen: No, what about the formal definition using the term "if it is a whole concept instead of an option switch..." - don't you buy that?
(18:17:48) Wouter: of course I do
(18:18:01) Wouter: but I'm a non-conformist/pragmatist :-)
(18:18:15) Matthias Bohlen: So, <<Unsecured>> would be a simple option switch, right?
(18:18:30) Matthias Bohlen: <<Manageable>> would be a concept.
(18:18:33) Wouter: well, I don't see why not (except for the modeling issue)
(18:18:39) Wouter: yeah
(18:19:36) Wouter: I would like to see outlined the actual benefits and added values of following those rules, I understand they make sense, but I'm not convinced they will make our lifes easier
(18:19:55) Wouter: that's in a nutshell how I feel about this
(18:20:00) Matthias Bohlen: Imagine adding an "implements Unsecured" to a Java class as opposed to adding a "boolean unsecured;" to the class.
(18:20:22) Matthias Bohlen: OK, I'll try to write something about that in an email.
(18:20:32) Matthias Bohlen: about the benefits etc.
(18:21:01) Matthias Bohlen: See ya.
(18:21:06) Wouter: Matthias, you don't need to convince me of that fact it makes better sense theory-wise, I'm talking hands-getting-dirty here
(18:21:09) Wouter: cya!
------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ Andromda-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/andromda-devel
