Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Paolo F Cantoni

Pages: 1 ... 351 352 [353] 354 355 ... 410
Uml Process / Re: BPMN Association
« on: May 17, 2006, 03:25:10 pm »
Could you explain your post a bit more?  I'm not up on the subtleties of Sparx, UML and BPMN just yet.  As of yesterday I started to experiment with BPMN in Sparx and I had some difficulties related to associations and the differences between UML Actors and BPMN Pools.  I suspect that your question is somehow related to my questions on this as well.  Although I don't fully understand your question.  :)
Hi Scott,

Well, in summary, if I drag an Association from the Analysis toolbox folder onto the diagram (and then look at its properties), I get an Association EA Element.  However, if I drag an Association from the BPMN Core folder, I get a Dependency EA element!  This is (shock, horror) inconsistent!  AND in my view wrong!  BPMN Associations aren't dependencies!  Directed BPMN Associations even have a kind of flow.

If I want to emit this on my Universal Interface - mentioned elsewhere - I'll have to map it to an Association element and vice versa.

By the way, I saw your postings on Actors and Pools.  From a conceptual viewpoint, It may be preferable to use Lanes as Actors and Pools as clusters of Actors.  The impost is that every Pool would then have to have a Lane.

Has this clarified things?


Uml Process / BPMN Association
« on: May 17, 2006, 05:39:23 am »
Can anyone come up with the rationale as to why Sparx used an Association stereotyped Dependency to implement the BPMN Association.  (I guess other than the EA design DOESN'T allow Associations to have their appearance changed to dashed)

It would be nice if the Quick Linker had both (undirected) Association and Directed Association - like the normal Class Diagram Quick Linker.


Uml Process / Re: Question about optimizing actors catalogue
« on: May 20, 2006, 12:19:36 am »
Just a few general comments.  If you intend the Client Actor to be the software that is the proxy for the end client, I'd call them End Client Proxy.

You need to determine what things each actor can do.  Then, basically, you go through this "Pattern".

Start at the lowest Actor (in this case System Administrator) Ask:  Can this interaction that I do, be done by my parent also?

If so, move it up to my parent.

If The node has children, ask: Can this interaction that I do be done by all my children?  If not, move it down to those children that can do it.

Straight forward Generalization - Specialization, but this time with UseCase Associations.

If at the end of the recursive process, an actor ends up with nothing to do, you've eliminated them!

[size=0]©2006 Paolo Cantoni, -Semantica-[/size]

Uml Process / Re: Question about optimizing actors catalogue
« on: May 19, 2006, 04:08:48 pm »


Teller <- Teller System User

To me this doesn't make any sense and just creates a Teller System User actor that is too general.  To me this example represents what I saw in this thread.  Another example would be:

Teller <- Branch personal <- Full time employee <- Bank Employee

In this example I agree it gives more details.
I agree that the first example is a bit specious.

The second example smells wrong to me.  I'm not sure all the items are roles.

We have to be really careful that we are actually moving up an inheritance hierarchy.  that all the items do indeed belong to the same Genera (in ancient speak).

I'm not sure full time employee is a role.  It's a specialization of Employee which (in my view) is a tuple between Person and Business Entity.

So, although we now agree in principle, we may be differing in practice!  :D


Uml Process / Re: Question about optimizing actors catalogue
« on: May 18, 2006, 07:45:40 pm »

As always there is no 1 right way to do anything.  My point was when modeling your actors you only need to be as detailed as your use cases require.  Creating actors like Administrative User is only useful if the actor can directly participate in a use case in some meaningful way.  Almost every actor in every use case invented could be generalized as Adminstrator, User, Operator, and so on.  But doing so would possibly take away important details.  I completely understand that there are plenty of instances where having some sort of actor heirarchy is a critical element to the use case.  But, in the case of this thread, (Titled:  Question about optimizing actors catalogue),  I am not sure that generalizing is a good solution.

Actually, I think we may be in violent agreement.

You mustn't generalize if you loose important details - what the ancients used to call Differentiae.

My point is that you should use the right level of Actor for the Use Case.

If (and it needs to be veriffied) you can, without loss of generality (or in this case applicablity), replace a specific Actor with its ancestor in the Actor generalisation hierarchy, then one should.

You are thus validating that you haven't lost any important detail.


Uml Process / Re: Question about optimizing actors catalogue
« on: May 17, 2006, 06:58:23 pm »
Agreed. YAGNI is a good guiding principle here.
I believe it depends on which model you are talking about.  Agile says "model only what you need".  Which is valid, but begs the question - what does need mean?  In my experience, the best approach I've found is to define your domain of discourse - that is that part of the real world your system needs to interact with and then go out one more relationship.  That way, if you do need to come back and extend the model in any direction, it's already contextually valid.

Now, from an implementation point of view, you should implement only what you need for that iteration - but you should implement it in as high a level of genericy (or genericity - what a clumsy word - as Bertrand Meyer calls it) as you can.  That way you maximise the flexibility without endangering the requirements.  Obviously, functionality formally planned for a near future release will more strongly influence the design than more hazy possibilities.

Now, in the current context - of creating generalization hierarchies of actors.  In my view, if the hierarchy exists, then use it, implement it.  Refactor all interactions to the highest level of genericy possible.  If you have to change the hierarchy later, then it's a great indicator of what needs to be changed in the code.

[size=0]©2006 Paolo Cantoni, -Semantica-[/size]

Uml Process / Re: Question about optimizing actors catalogue
« on: May 16, 2006, 04:54:34 am »
One last thing, could you give me a little example of breaking away from the position-based identification scheme and adapting the role-based scheme whereby you focus more on requirements rather than the actor's position in the company?
Hi again Al,

If David's response doesn't sort it for you, can you explain exactly where you need help in differentiating between the two paradigms?

It should be pretty obvious that a given position in the company can perform many roles (and vice versa).  I'd just create a spreadsheet relating the two and placing the use case in the intersecting cell.  You should then be able to refactor the set of use cases by role.


Uml Process / Re: Question about optimizing actors catalogue
« on: May 16, 2006, 03:09:24 am »
Hi everybody

This is my first post here. So I'm hoping I get some good feedback.

My questions is sort of a simple one. When you finish identifying all actors (let's assume human actors for this example), how do you go about optimizing this list of actors?

I mean, if I have two actors, who have different job titles, but perform pretty much the same functions in the system, with maybe some variation, is it feasible to consider both of them as one actor and assign it a general name? What's the "rule of thumb" in these situations?

Currently, I have about 20 actors corresponding to every role, or position, in our client company. These actors will be interacting with the system in one way or another. I feel like if I did some optimizing I can bring this list down to maybe 10 or something. That's if I eliminate actors who will perform the same functions (use cases) as other ones.

Love to get your feedback.


HI Al,

You've fallen into the Conceptual Modelling problem of making Role and Position the same thing.  Now, your ontology may vary, but over many years (20+) I've found that differentiating between the Position (a titled slot in the company hierarchy) and the Role(s) (what kinds of things the occupants(s) of that position can do) REALLY helps...

In UML, actors should be roles, that is, people (or things) that can do stuff.

Now, once you do that, you may find that a Role generalization hierarchy exist (which is likely to be different from the Position hierarchy).

You optimize the list by moving Use Cases to the most general role that can effectively undertake that Use Case.


Uml Process / Re: Modeling A Contingent Hyponymy
« on: May 21, 2006, 06:59:40 pm »

Not quite, I think.  The hyponymy is an issue at instantiation time, not query time.  It impacts the way an object is instantiated in terms of the features inherited from the contingent base classes.
Why?  If I move collections at run time, aren't I changing my hyponym?
In terms of your example, I think the type names you offer (infant, young adult,...,Senior) are really state names a given instance may be in as the result of an ageing behavior.  But I don't want this example to become the focus of this thread; so let's not chew this bone.
There is one aspect of the example that is relevant, I think.  I specifically choose this example because many of the "states" overlap - which, I think, isn't allowed in pure state machine theory (but, as always, I stand to be corrected).  But for the sake of the argument, lets assume that assertion is true.  Therefore, these (although they look like states - aren't)  From what you're saying, although they look like subtypes, they aren't.    So...
Perhaps we have another Semantic Impedance point with UML?
Yes, I think you're right here...

I attended a talk about 7 years ago on "Classless Objects".  The speaker's thesis was that you don't need classes, objects can organise themselves into groups by means of queries on their attributes.  "Get me all the objects are people and whose age is between 18 and 25".  (the equivalent of the youngAdult view previously)  I asked him is he thought this was classifying the objects?  He agreed...  So I asked him why do you think a class is called a Class?
So much for classless objects...  The question for me is: if I can classify an object, then there has to exist a class corresponding to that classification.  Most OO languages only handle static assignment of an object to a class.  But this maybe just a technology impediment.  Conceptually, I have no problem with objects being able to behave differently depending upon their dynamic state.  In particular, coming from a Design by Contract viewpoint, the ability to define specific constraints in specific contexts I think is a very powerful one.  If I can collect all these ideas into a "dynamic" Class than great...  Now if only I could find a language to implement this in...

[size=0]©2006 Paolo Cantoni, -Semantica-[/size]

Uml Process / Re: Modeling A Contingent Hyponymy
« on: May 20, 2006, 07:00:41 pm »
In the context of modeling Class Inclusion using a hyponymy (aka. Is_A relationship), it has been recommended that hyponymy should only refer to core relationships.

For example:
  • Cow:Animal would be a core hyponymy, but
  • Cow:Food might not be, for it is contingent upon context and culture
What would be a Best Practice for modeling a contingent hyponymy so that MDA transformation rules could take advantage of this information?

How might such a transformation rule be written?

From my Data Management days, we used to have both static and dynamic Generalizations.  A static Generalization corresponds to your core hyponymy.   A dynamic hyponymy is handled by asking the object at run time, what kind of an object it is - your contingent hyponymy (based upon the context of the object at query application time1).

Consider Person.  An example of a dynamic GeneralizationSet for person is: Baby, Infant, Child, Teenager, Young Adult, Adult, Senior which are determined by the age at question, and may even overlap.  In DB terms, the Dynamic Generalization is handled by a SQL View.  Unfortunately , we don't really have the equivalent of an SQL View in OO, do we?  Typically, we can implement this via an Interface with the Properties:

IsBaby, IsInfant, etc.  or a Collection of Boolean items that are their conceptual equivalent.

1Query Application Time, the time to which the query applies - which may be an Event (single timepoint) or Episode (range of timepoints.  For example, what were you two years ago?
[size=0]©2006 Paolo Cantoni, -Semantica-[/size]

Uml Process / Re: EA support for BPMN
« on: May 17, 2006, 02:24:48 am »
:) Sorry, hope my post didn't come across as patronising :X
'Course not... See how I cleverly gave myself the out by acknowledging the possiblity of user error... ;D


Uml Process / Re: EA support for BPMN
« on: May 17, 2006, 12:10:07 am »

Or maybe pop up a dialog on dropping an event to allow the user to pick which type of event is wanted? That is certainly do-able.
Yes, KP that would be my preference, but I wasn't sure it was doable easily.  

Nevertheless, I still think the installer should prompt to read the help.


Uml Process / BPMN Event Types
« on: May 17, 2006, 12:08:10 am »
The Event Type appears to be in two places:  The Stereotype (such as EndEvent) and in the Tagged Value (EventType:End)

If I change the Stereotype, the Tagged Value doesn't change.  And I can't change the Tagged Value at all!

This is a defect isn't it?


Uml Process / Re: EA support for BPMN
« on: May 16, 2006, 11:41:23 pm »
Hello Paolo,

The presentation of the core types depends on tagged values.

For example: add a StartEvent to a diagram and modify the Trigger tag to Message, the presentation will change to the message marker.



Thanks for that Ash...

A polite way of saying user error through not reading the Help...  :-[

Could there be a way of on initial load of the MDG add-in, the user could be heavily encouraged to read the Help file?  Something along the lines of:

This MDG Add-in uses extended mechanisms to implement the BPMN elements.  To save you time, energy and embarrassment downstream, it is strongly recommended you peruse the help.

However, why is the Intermediate Event default a Message?


Uml Process / EA support for BPMN
« on: May 16, 2006, 10:01:32 pm »
I've installed the BPMN MDG add-in and I'm underwhelmed.   :(

So, just to make sure it's not a case of user error (there seem to be some tricks to getting the BPMN add-in working properly) I thought I'd check if it's installed properly.

There are 2 new folders in the All perspective:  BPMN Core and BPMN Types.
The BPMN Core folder contains:16 items
The BPMN Types folder contains:7 Items

Is this all I should see?

When I compare the EA contents with: BPMN Fundamentals
There seems to be a lot lacking...

There I was, getting all excited about using BPMN and...


Pages: 1 ... 351 352 [353] 354 355 ... 410