Responding to Ken...
> Hi. I can see how this would work, but it seems like such an indirect
> way to show the dynamic usage of an actor's contract, i.e., the usage
> of the actor's interfaces required and provided by the System Under
> Development. However, I suppose that's just how the UML Spec
> crumbles. :)
>
That's kind of the corner one gets painted into when the UML meta model
cannot limit model elements to particular diagrams. Speaking for the
translation MDA profiles, you would never be able to use an Actor model
element anywhere but a UCD and you would not be allowed to associate
interfaces with it there. B-)
Note that the original intent of actors was to abstract a /human/ user
of the application and humans don't provide software components. We have
extended that notion to include programmatic interactions with external
software "users" because it is a convenient metaphor. However,
conceptually in OOA/D there is a clear line in the sand between Us vs.
Them, Internal vs. External, Designed vs. Realized, or any other way one
wants to express Inside vs. Outside. Anything Outside the software in
hand that is being modeled lives in another world that the designer
doesn't care about. The only manifestation of the denizens of that other
world are incoming and outgoing messages.
That provides complete logical decoupling so that one can design the
software Inside without knowing who is Outside, what they are doing
Outside, and how they are organized Outside. The only semantics they
need to share is the semantics of {message ID, data packet}, and even
that they can interpret in terms of their local context. So when we
extend the notion of 'actor' to programmatic interactions, the software
Inside should be unaware of that and should treat the interactions just
like any other messages. In addition, the software Inside should be
completely ignorant of the sources of incoming messages from Outside or
the routing of outgoing messages to the Outside.
In fact, in OOA/D we provide specific models for subsystem interfaces so
that we can isolate and encapsulate the mechanics of message passing so
that the designer of a subsystem is not distracted by implementation
issues around who is sending/receiving messages, distributed
infrastructures, and whatnot. The notion of a surrogate object is
essentially a design pattern for providing that decoupling. That also
ensures a standardized approach that works equally well for GUIs, web
UIs, DBMS access, other applications, hardware, or even subsystems
within the same application. So I would argue it is actually a very
elegant approach to large-scale logical decoupling that greatly enhances
maintainability. IOW, ...
> Maybe UML 3.0 would consider allowing a port on an actor and an
> actor's interfaces to be accessed through the actor on a sequence
> diagram. Any thoughts as to why that would be a bad thing?
>
... it doesn't need to be fixed. B-) Leave the Actors in the UCD and
treat all software outside the subsystem in hand as Outside. Then all
one needs to provide is identity mapping and message passing mechanisms
in the subsystem bridge* implementation. [Note that one of the important
tasks of the Systems Engineer is to define communications between
large-scale modules so that they can be developed independently. So in
OOA/D that task belongs to a different trade union than the development
of the participating modules. So when mixing crafts, standardization
tends to be a Very Good Thing.]
* 'Bridge' has been in the translation lexicon for nearly three decades
and all the translation tools support it. But UML has not caught up yet
and still doesn't provide a means to specify communication
infrastructure /between/ subsystems. A bridge simply identifies a
communication path between large-scale entities (hardware and software
subsystems or applications). That allows one to specify the resolution
of syntactic mismatches within bridge implementations without cluttering
participating subsystem implementations. That is useful because one can
usually provide multiple syntaxes (interfaces) to describe any given
subject matter semantics. So when one attempts large-scale reuse one
tends to encounter clients in new reuse situations that want to use a
different message syntax than the service provides. [There is a posting
in the Application Partitioning category of my blog that describes one
such 2-way model for subsystems interfaces.]
--
Life is the only flaw in an otherwise perfect nonexistence
-- Schopenhauer
H. S. Lahman
H.la...@verizon.net