hiho,

I would think the interfaces should be outside of the subsystem for all the
reasons you described.

Initially, this appears to be supported in RUP: "With the exception of the
subsystem's 'subsystem proxy', all contents of the subsystem should be
'invisible' to model elements outside the subsystem. This is done by setting
the class export control to 'implementation' in the Class Specification" [
Tool Mentor | Rational Rose | Managing Subsystems ].

Alas, RUP has an internal inconsistency here.  It states that you should
make sure "other than the interfaces realized by the subsystem, the
subsystem's contents are completely encapsulated" [ Artifacts | Design
Subsystem | Checkpoints ].

How much more contradictory could RUP get on this issue? you ask... this
much contradictory: "A Subsystem should not expose any of its contents (i.e.
no element contained by a subsystem should have 'public' visibility); no
element outside the subsystem should depend on the existence of a particular
element inside the subsystem" [ Artifacts | Design Subsystem | Guidelines ].

Okay, so RUP is not much help here.  Let's look to the real UML.  The UML
1.3 spec states "the
model elements of a subsystem can be partitioned into specification and
realization elements, where the former, together with the operations of the
subsystem, are realized by (i.e., implemented by) the latter" [UML 1.3
2.14.2.4 on page 2-174].  I can't find any well-formedness rules that
correspond to the various suggestions of RUP.

In real life I have typically placed the interfaces in a separate package
grouped as logically as possible.  Then I have the subsystem and the
subsystem clients depend upon that package (or those packages).  This is
also how it is done in the OOA&D course from Rational.

                         ------- b
--
Brian G. Lyons
Number Six Software - Voted Rational's Best Complementary Service Provider
1655 North Fort Myer Drive, Suite 1100
Arlington, VA 22209-3196
http://www.numbersix.com


-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]On Behalf Of Chris Gardner
Sent: Tuesday, April 03, 2001 11:16 AM
To: '[EMAIL PROTECTED]'; '[EMAIL PROTECTED]'
Subject: (ROSE) Subsystem Interfaces in Rose

My understanding is that subsystems should realize interfaces upon which
other subsystems are dependent.  Potentially, many subsystems can realize a
single interface, thus allowing pluggable subsystems.

In the RUP model framework in Rose, I can't find a default place to put the
subsystem interfaces.  Because many subsystems can realize the interface,
the interface definition should not live in a specific subsystem package.
It should live another package, upon which each subsystem depends.  Does RUP
itself or the RUP model framework suggest another package of residence for
such an interface definition?

BTW, I thought I read in RUP that a package should be dependent on a
subsystem or a subsystem dependent on a package.  Is either true?  If so,
why?  Thanks.

************************************************************************
* Rose Forum is a public venue for ideas and discussions.
* For technical support, visit http://www.rational.com/support
*
* Admin.Subscription Requests: [EMAIL PROTECTED]
* Archive of messages: 
http://www.rational.com/products/rose/usergroups/rose_forum.jtmpl
* Other Requests: [EMAIL PROTECTED]
*
* To unsubscribe from the list, please send email
*
* To: [EMAIL PROTECTED]
* Subject:<BLANK>
* Body: unsubscribe rose_forum
*
*************************************************************************

Reply via email to