Issue 6251: UML 2 super/Composite Classes/Connecting parts of parts (uml2-superstructure-ftf) Source: The MathWorks (Mr. Alan Moore, alan.moore(at)mathworks.co.uk) Nature: Uncategorized Issue Severity: Summary: Consider a model where a composite class, CC, has two parts A and B, both typed by class CT. If CT has a part PT, then can I describe a connection between A.PT and B.PT? It seems to me that the metamodel can't capture this because Connections can only be associated to parts, not parts of parts (i.e the metamodel for parts has a flat structure) . So the connection would end up being just a reflexive connection from PT to itself, which would be typed by a reflexive association on the type of PT. If there is a way of connection parts of parts I would like to see more explanation somewhere in the spec. Resolution: see above Revised Text: Actions taken: September 15, 2003: received issue March 8, 2005: closed issue Discussion: Connectors can only connect parts that are in the same classifier – thus, they cannot connect parts of parts in the following manner: A: CT PT B: CT PT The resolution to issue 6668 added a constraint to connector which makes this restriction more explicit. The following might be a slightly improved version of this constraint: [4] The ConnectableElements attached as role to each ConnectorEnd owned by a Connector must be roles of the classifier that owned the Connector, or they must be ports of such roles. Disposition: End of Annotations:===== m: "Moore, Alan" To: issues@omg.org Subject: UML 2 super/Composite Classes/Connecting parts of parts Date: Mon, 15 Sep 2003 12:57:10 +0100 X-Mailer: Internet Mail Service (5.5.2653.19) Consider a model where a composite class, CC, has two parts A and B, both typed by class CT. If CT has a part PT, then can I describe a connection between A.PT and B.PT? It seems to me that the metamodel can't capture this because Connections can only be associated to parts, not parts of parts (i.e the metamodel for parts has a flat structure) . So the connection would end up being just a reflexive connection from PT to itself, which would be typed by a reflexive association on the type of PT. If there is a way of connection parts of parts I would like to see more explanation somewhere in the spec. From: "Moore, Alan" To: "'thomas.weigert@motorola.com'" , Branislav Selic , uml2-superstructure-ftf@omg.org Subject: RE: Updated: Proposed issue resolution for common behavior and co mposite structure working groups Date: Tue, 2 Dec 2003 08:20:33 -0000 X-Mailer: Internet Mail Service (5.5.2653.19) Thomas, Comments on your resolutions: 6251: I can't see how the metamodel (even with associated text) prohibits the case I outlined - in fact I'm not clear that encaspsulation of parts is enforced. Could you give me a reference (page, figure ...) please. 6316: My concern about behaviour ports is how can the port, via the behaviour of its type, forward signals to its parent, when they have no reference to their parent. I thought that at least if the port could participate in an association to its parent (I assume the other end of the association that allows the parent to contain the port) then it could have a property that referenced its parent. I also assume that this works for other types of requests, not just signals. 6356: Surely if port was a subtype of property then they could participate in composite associations (see my comment on 6316 above). Regards, Alan -----Original Message----- From: Thomas Weigert [mailto:thomas.weigert@motorola.com] Sent: 30 November 2003 04:36 To: Branislav Selic; uml2-superstructure-ftf@omg.org Cc: thomas.weigert@motorola.com Subject: Updated: Proposed issue resolution for common behavior and composite structure working groups Dear all, I discovered that there are many more issues assigned to these two working groups in a later version of the FTF report that I had been looking at. Thus here comes a second installment based on FTF-report-draft-031031.doc (I hope this is the latest version). These two documents include the earlier sent one, so you can just ignore that one. Please pay attention to the discussion suggested for issue 6373. This issue would best be resolved by making a change to Kernel, which unfortunately means also changing the infrastructure. I believe it does not have any significant effect on anything, but changing the infrastructure is always highly controversial. Please advise. All the best, Th. -----Original Message----- From: Thomas Weigert [mailto:thomas.weigert@motorola.com] Sent: Saturday, November 29, 2003 7:56 PM To: Branislav Selic; uml2-superstructure-ftf@omg.org Cc: Thomas Weigert Subject: Proposed issue resolution for common behavior and composite structure working groups Dear all, please find attached two documents discussing the issues assigned to the common behavior and composite structure working group, respectively. Each document has a summary page indicating the proposed action. Most issues do not require any change, as the UML 2.0 most often has already resolved the issue. There are 2 proposed changes for common behavior and one proposed change for composite structure, all minor. Regarding common behavior there are three issues (6148, 6149, and 6150) which I propose for discussion. While they would not require any change as the solution in the document is as was intended, the issues nevertheless could be addressed: 1. 6148 and 6149 implicitly propose an alternative means of showing textually defined behavior as associated with the Behavior metaclass and making that metaclass concrete. This is as good a solution as the one currently implemented; in my opinion a matter of taste. 2. 6150 requests a notation for method which is reasonable but should be decided upon by teamwork (as nobody ever is satisfied with notation). Please provide feedback on the proposed solution and also provide input to the issues labeled as for discussion. I will propose solutions for those after I have heard from at least several others on the FTF. All the best, Th. OMG Issue No: 6251 Title: UML 2 super/Composite Classes/Connecting parts of parts Source: ARTISAN Software Tools (Mr. Alan Moore, alan.moore@artisansw.com) Summary: Consider a model where a composite class, CC, has two parts A and B, both typed by class CT. If CT has a part PT, then can I describe a connection between A.PT and B.PT? It seems to me that the metamodel can't capture this because Connections can only be associated to parts, not parts of parts (i.e the metamodel for parts has a flat structure) . So the connection would end up being just a reflexive connection from PT to itself, which would be typed by a reflexive association on the type of PT. If there is a way of connection parts of parts I would like to see more explanation somewhere in the spec. Discussion: There cannot be a connection between A.PT and B.PT, as this would violate the encapsulation of the composite class CT. To show the above situation, you would show a connector from PT in CT to the border of CT (or, better, to a port on CT), and you would show that a connector between CC.A and CC.B (or the port on these, depending on how CT was modeled). There is no reflexive connector involved. This is quite clear from the metamodel and the associated text. The specification cannot give examples of everything that is not legal. [Conrad: I think Alan is pointing out that encapsulation is a methodology issue. UML should allow parts of parts to be connected. Ports are almost parts anyway currently,the only difference being that ports cannot participate in associations because they are structural features, not properties. Make ports into properties and then partWithPOrt will work on parts.] OMG Issue No: 6251 Title: UML 2 super/Composite Classes/Connecting parts of parts Source: ARTISAN Software Tools (Mr. Alan Moore, alan.moore@artisansw.com) Summary: Consider a model where a composite class, CC, has two parts A and B, both typed by class CT. If CT has a part PT, then can I describe a connection between A.PT and B.PT? It seems to me that the metamodel can't capture this because Connections can only be associated to parts, not parts of parts (i.e the metamodel for parts has a flat structure) . So the connection would end up being just a reflexive connection from PT to itself, which would be typed by a reflexive association on the type of PT. If there is a way of connection parts of parts I would like to see more explanation somewhere in the spec. Discussion: It is not possible to connect A.PT to B.PT using a single connector. One would have to connect PT to CT (preferably a port on CT), and then the parts A and B to each other (via their ports, if such is present). Disposition: Closed, no change Disposition: Closed, no change To: "Thomas Weigert" Cc: "Thomas Weigert" , uml2-superstructure-ftf@omg.org Subject: RE: ,cs cb, Ballot 13 proposed resolutions X-Mailer: Lotus Notes Release 6.0.2CF1 June 9, 2003 From: Branislav Selic Date: Thu, 22 Apr 2004 16:57:33 -0400 X-MIMETrack: Serialize by Router on D25ML05/25/M/IBM(Release 6.0.2CF1|June 9, 2003) at 04/22/2004 16:57:35, Serialize complete at 04/22/2004 16:57:35 Thomas, I have reviewed your proposed resolutions for ballot 13 and have the following comments and concerns: (1) Issue 6078: (a) from your explanation, it looks to me that the vertical bar -- indicating choice -- in the expression: ref interactionident | [strict] is incorrect and should be removed. (b) it seems that the information that the inline decomposition is strict is only kept in the notation and not in the model. Presumably, this information is somehow transferred into some interaction operator of some combined fragment of the part decomposition corresponding to the lifeline -- however, how this is done is not described. This needs to be clarified. (2) Issue 6146: I agree with your "closed, no change" disposition, but I think your explanation is missing at least one major point. I believe that the question primarily related to the fact that Collaboration is defined as a kind of BehavioredClassifier -- which is perfectly reasonable since we want to be able to associate Interactions with Collaborations. It would be useful if this was added to the resolution. (3) Issue 6154: The text in the Semantics part of TimeObservationAction says that this action, "...when executed, returns the current value of time in the context in which....". I suggest replacing the word "returns" in this text with the word "reads" or "registers". Otherwise, it seems to clash with the fact that this action, being a write action does not have return values. (An aside: I should have been paying attention to this when it was being done in the U2P. Why should this action be restricted to just write-once-attributes? Why not make it more general? This seems like a piece of an SDL profile that snuck in under the radar.) (4) Issue 6251: I sent you an OCL constraint that effectively said that all roles that are connected by a connector have to be in the same Classifier (namespace). This also resolves issue 6668. So, I suggest that you change this to "resolved" and add my constraint. (In fact, the fix I sent you also includes a nice illustration which is a bit easier to follow than your textual explanation, so I suggest you replace the resolution with the one I proposed.) (5) Issue 6257: It would really help me and others if in the future you could put a figure number for the diagram that you want to change -- it makes it a lot easier to review the resolution proposal and to make the change once it is adopted. (I assume you mean figure 318 in this case?) (6) Issue 6355: I don't think that "Duplicate" is the right resolution to this issue. What happened here is that the reader who read the spec missed the rather convoluted "trick" that is used to specify when a connector end is connected to a port. The trick is used to avoid a "PortReference" concept, by providing a link to a part that owns the port that is being connected when the connector terminates on a port of some part (i.e., if this link is nil, then the connector terminates on a port or part, otherwise, it terminates on the port of a part, and you know which it is based on which port the connector end is linked to). This is very subtle and will be confusing to many unless additional text is provided. (7) Issue 6668: See my comment for issue 6251. Cheers, Bran "Thomas Weigert" 04/21/2004 04:33 PM To "Thomas Weigert" , Branislav Selic/Ottawa/IBM@IBMCA, cc Subject RE: ,cs cb, Ballot 13 proposed resolutions Please find attached an additional issue resolution (included in the pack sent earlier)... Th -----Original Message----- From: Thomas Weigert [mailto:thomas.weigert@motorola.com] Sent: Monday, April 19, 2004 11:27 AM To: Branislav Selic; uml2-superstructure-ftf@omg.org Subject: ,cs cb, Ballot 13 proposed resolutions Please find attached the first installment of Ballot 13 proposals (I think that is the next ballot). All the best, Th.[attachment "Comp struc + com beh issues 3rd v2 done.doc" deleted by Branislav Selic/Ottawa/IBM] Reply-To: From: "Conrad Bock" To: Subject: RE: ,cs cb, Ballot 13 proposed resolutions Date: Sun, 25 Apr 2004 10:52:50 -0400 X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0) Hi Thomas. Here are comments on cb/cs proposals for ballot 13. Conrad - 6146 (Composite structure dependent on Behavior) I was referring to the dependency of StructuredClasses on Behavior introduced by Figure 98. A structured class should be able to be used in implementations that only implement structure. Communication is not the only application for associations and connectors (see Joaquin's example of an association not used for communication). - 6154 (TimeObservationAction can't return values) The proposed semantics text for TimeObservationAction still says "returns a value". If this were removed, as it is in DurationObservationAction, it would be fine. - 6251 (UML 2 super/Composite Classes/Connecting parts of parts) This is an unnecessary restriction. Parts of parts should be connectable without going through ports. partWithPort should be able to connect parts of parts without needing to use ports. Just loosen constraint 2 of ConnectorEnd to allow all parts. - 6458 (Change 'Part' to 'Role) The discussion acknowledges the issue and cites the amount of work to resolve it, but then closes it without change. How about deferring on that basis, instead? - 6668 (UML2 Super/Connector) The discussion refers to adtf/03-08-02, which doesn't exist (and From: "Thomas Weigert" To: , Subject: RE: ,cs cb, Ballot 13 proposed resolutions Date: Tue, 27 Apr 2004 22:15:32 -0500 X-Mailer: Microsoft Outlook IMO, Build 9.0.6604 (9.0.2911.0) Conrad, comments to your comments... > -----Original Message----- > From: Conrad Bock [mailto:conrad.bock@nist.gov] > > - 6146 (Composite structure dependent on Behavior) > > I was referring to the dependency of StructuredClasses on Behavior > introduced by Figure 98. A structured class should be able to be > used in implementations that only implement structure. Communication > is not the only application for associations and connectors (see > Joaquin's example of an association not used for communication). Sure. Except Figure 98 defines a Class which is both EncapsulatedClassifier and Class. If you want a different kind of concrete subtype for StructuredClassifier, it is easy to define one. Note that both EncapsulatedClassifier and Communications::Class inherit from Communications. > > > - 6154 (TimeObservationAction can't return values) > > The proposed semantics text for TimeObservationAction still says > "returns a value". If this were removed, as it is in > DurationObservationAction, it would be fine. Sorry. Fixed now. > > > - 6251 (UML 2 super/Composite Classes/Connecting parts of parts) > > This is an unnecessary restriction. Parts of parts should be > connectable without going through ports. partWithPort should be able > to connect parts of parts without needing to use ports. Just loosen > constraint 2 of ConnectorEnd to allow all parts. Well, that's how structured classes were designed intentionally. > > > - 6458 (Change 'Part' to 'Role) > > The discussion acknowledges the issue and cites the amount of work to > resolve it, but then closes it without change. How about deferring > on that basis, instead? Actually, the discussion did not "acknowledge" the issue in the sense of accepting it. Rather it says that part and role are not synonymous, and while there are situations that one could use the term role where part is meant, this is not true throughout. In a sense, the issue just says, "I don't like this word, why don't you use this other word". As there are many other terms in the UML that overlap with common sense terms, without a systematic program of replacing them all, there seems little reason to start here. > > > - 6668 (UML2 Super/Connector) > > The discussion refers to adtf/03-08-02, which doesn't exist (and > ad/03-08-02 is a MOF QVT review). From: "Thomas Weigert" To: "Thomas Weigert" , "Branislav Selic" , Subject: ,cs cb, Ballot 14 proposed resolutions Date: Tue, 4 May 2004 15:28:26 -0500 X-Mailer: Microsoft Outlook IMO, Build 9.0.6604 (9.0.2911.0) Attached please find the first installment of proposed solutions for Ballot 14. Comments: 6146: This solution was contested in last ballot. I rewrote the discussion to be clearer. However, I find the objection inappropriate and am still suggesting to close this issue with no change. 6251: An earlier objection had suggested to add a constraint [4] to connector. In the meantime, the resolution to 6668 (adopted in Ballot 12) has added a constraint [4] very similar to the one proposed. The OCL suggested by the objection, however, does not match the adopted constraint exactly. I'd gladly add the modified OCL to [4] if it is provided. Otherwise this issue should be closed. All the best, Th. OMG Issue No: 6251 Title: UML 2 super/Composite Classes/Connecting parts of parts Source: ARTISAN Software Tools (Mr. Alan Moore, alan.moore@artisansw.com) Summary: Consider a model where a composite class, CC, has two parts A and B, both typed by class CT. If CT has a part PT, then can I describe a connection between A.PT and B.PT? It seems to me that the metamodel can't capture this because Connections can only be associated to parts, not parts of parts (i.e the metamodel for parts has a flat structure) . So the connection would end up being just a reflexive connection from PT to itself, which would be typed by a reflexive association on the type of PT. If there is a way of connection parts of parts I would like to see more explanation somewhere in the spec. Discussion: Connectors can only connect parts that are in the same classifier . thus, they cannot connect parts of parts in the following manner: The resolution to issue 6668 added a constraint to connector which makes this restriction more explicit. The following might be a slightly improved version of this constraint, with respect to readability, but until the OCL is provided for this constraint, a further change is not warranted. Disposition: Closed, no change Reply-To: From: "Conrad Bock" To: Subject: RE: ,cs cb, Ballot 13 proposed resolutions Date: Thu, 29 Apr 2004 13:11:02 -0400 X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0) Hi Thomas, > > I was referring to the dependency of StructuredClasses on > > Behavior introduced by Figure 98. A structured class should be > > able to be used in implementations that only implement > > structure. Communication is not the only application for > > associations and connectors (see Joaquin's example of an > > association not used for communication). > > Sure. Except Figure 98 defines a Class which is both > EncapsulatedClassifier and Class. If you want a different kind of > concrete subtype for StructuredClassifier, it is easy to define > one. Note that both EncapsulatedClassifier and Communications::Class > inherit from Communications. Right, but it wouldn't be standard. The spec as it is currently is methodologically-oriented. It forces the implementation of Communications even for applications that just use the structural aspects of composites. This is unnecessary, because implementations of Communication:Class will into StructuredClass:Class. Figure 98 can use Kernel:Class and everything will be fine. > > - 6251 (UML 2 super/Composite Classes/Connecting parts of parts) > > > > This is an unnecessary restriction. Parts of parts should be > > connectable without going through ports. partWithPort should be able > > to connect parts of parts without needing to use ports. Just loosen > > constraint 2 of ConnectorEnd to allow all parts. > > Well, that's how structured classes were designed intentionally. Again this is methodological. Loosening the constraint as suggested allows the model to support your method and others. > > - 6458 (Change 'Part' to 'Role) > > > > The discussion acknowledges the issue and cites the amount of work > > to resolve it, but then closes it without change. How about > > deferring on that basis, instead? > > Actually, the discussion did not "acknowledge" the issue in the sense > of accepting it. Rather it says that part and role are not > synonymous, and while there are situations that one could use the > term role where part is meant, this is not true throughout. In a > sense, the issue just says, "I don't like this word, why don't you > use this other word". As there are many other terms in the UML that > overlap with common sense terms, without a systematic program of > replacing them all, there seems little reason to start here. OK, perhaps the issue could say that, it currently sounds like it says "too much work" which suggests deferral rather than closing. OMG Issue No: 6251 Title: UML 2 super/Composite Classes/Connecting parts of parts Source: ARTISAN Software Tools (Mr. Alan Moore, alan.moore@artisansw.com) Summary: Consider a model where a composite class, CC, has two parts A and B, both typed by class CT. If CT has a part PT, then can I describe a connection between A.PT and B.PT? It seems to me that the metamodel can't capture this because Connections can only be associated to parts, not parts of parts (i.e the metamodel for parts has a flat structure) . So the connection would end up being just a reflexive connection from PT to itself, which would be typed by a reflexive association on the type of PT. If there is a way of connection parts of parts I would like to see more explanation somewhere in the spec. Discussion: Connectors can only connect parts that are in the same classifier . thus, they cannot connect parts of parts in the following manner: The resolution to issue 6668 added a constraint to connector which makes this restriction more explicit. The following might be a slightly improved version of this constraint, with respect to readability, but until the OCL is provided for this constraint, a further change is not warranted. OMG Issue No: 6251 Title: UML 2 super/Composite Classes/Connecting parts of parts Source: ARTISAN Software Tools (Mr. Alan Moore, alan.moore@artisansw.com) Summary: Consider a model where a composite class, CC, has two parts A and B, both typed by class CT. If CT has a part PT, then can I describe a connection between A.PT and B.PT? It seems to me that the metamodel can't capture this because Connections can only be associated to parts, not parts of parts (i.e the metamodel for parts has a flat structure) . So the connection would end up being just a reflexive connection from PT to itself, which would be typed by a reflexive association on the type of PT. If there is a way of connection parts of parts I would like to see more explanation somewhere in the spec. Discussion: Connectors can only connect parts that are in the same classifier . thus, they cannot connect parts of parts in the following manner: The resolution to issue 6668 added a constraint to connector which makes this restriction more explicit. The following might be a slightly improved version of this constraint, with respect to readability, but until the OCL is provided for this constraint, a further change is not warranted: [4] The ConnectableElements attached as role to each ConnectorEnd owned by a Connector must be roles of the classifier that owned the Connector. OMG Issue No: 6251 Title: UML 2 super/Composite Classes/Connecting parts of parts Source: ARTISAN Software Tools (Mr. Alan Moore, alan.moore@artisansw.com) Summary: Consider a model where a composite class, CC, has two parts A and B, both typed by class CT. If CT has a part PT, then can I describe a connection between A.PT and B.PT? It seems to me that the metamodel can't capture this because Connections can only be associated to parts, not parts of parts (i.e the metamodel for parts has a flat structure) . So the connection would end up being just a reflexive connection from PT to itself, which would be typed by a reflexive association on the type of PT. If there is a way of connection parts of parts I would like to see more explanation somewhere in the spec. Discussion: Connectors can only connect parts that are in the same classifier . thus, they cannot connect parts of parts in the following manner: The resolution to issue 6668 added a constraint to connector which makes this restriction more explicit. The following might be a slightly improved version of this constraint: [4] The ConnectableElements attached as role to each ConnectorEnd owned by a Connector must be roles of the classifier that owned the Connector. end->forAll(e | e.role->forAll(r | namespace.oclAsType(StructuredClassifier).role->includes (r))) Disposition: Resolved Disposition: Closed, no change Disposition: Closed, no change From: "Thomas Weigert" To: "Branislav Selic" , "Thomas Weigert" Cc: , "Thomas Weigert" , Subject: RE: ,cb cs, Proposed issues for 15 Date: Sun, 23 May 2004 20:16:13 -0500 X-Mailer: Microsoft Outlook IMO, Build 9.0.6604 (9.0.2911.0) Please find attached an updated proposal, taking into account the discussion of the topic "Ports as parts". I have put together a solution that models ports as parts, as requested. There was a ripple effect forcing the change of several other issues, which luckily enough all are proposed for this ballot. Further, I realized that the constraint in 6251 must also reference ports. Th. -----Original Message----- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, May 20, 2004 6:36 AM To: Thomas Weigert Cc: mu2i-ftf@omg.org; Thomas Weigert; uml2-superstructure-ftf@omg.org Subject: RE: ,cb cs, Proposed issues for 15 Thomas, > Regarding your constructive suggestion, I think we need to put a > little more effort in it. The constraint must say something to the > effect that the port will be there before communication is > attempted. E.g., we might want to tie it to the creation of the > connector. (i.e., no port, no connector, which makes sense anyway, > as where would the connector connect to?). > > The contract aspect of the port cannot fall by the wayside. By the > way, if we add dynamic creation (personally I think this is against > the spirit of modeling as I said earlier and confusing modeling with > coding) we should make a port a property with the appropriate constraints. As Joaquin's example points out, this is more than an implementation issues, so please stop saying that. My experience with architectural modeling bears this out: there is major need to be able to model dynamic architectures -- especially since the Internet and service-oriented architectures are highly dynamic contexts. And, very current. Your argument that this weakens the "contract aspect" of ports sounds rather tenuous to me. A port still clearly defines what its contractual assumptions are, whether it is created dynamically or statically. (BTW, some of the things in UML-RT that may have seemed "unnecessary" to you (your words, not mine), such as plug-in slots, are precisely for dealing with dynamically established architectures, without sacrificing the contractual aspects of ports and connectors.) My advice is that we do not try to finesse this complex issue too much. Let's just make sure that we leave room for dynamic systems by removing constaint [1]. Thanks...Bran ad/03-08-02 is a MOF QVT review). Reply-To: Joaquin Miller X-Sender: jm-acm.no@sbcglobal.net@pop.sbcglobal.yahoo.com X-Mailer: QUALCOMM Windows Eudora Version 5.1 Date: Fri, 11 Jun 2004 08:37:44 -0700 To: UML Superstructure FTF From: Joaquin Miller Subject: Ballot 15 X-Change Technologies votes yes on all issues on Ballot 15, except: No on 6251 We would change our vote to yes, if the text made clear whether the constraint text (the one that "might be a slightly improved version") is to be added to the specification. As written, the resolution does not provide clear instruction to the editor. We apologize for not noticing this earlier. Yes on 7360. We call the attention of the editor to the typographical error, which is that there are two spaces between 'owns' and 'a'. PGP Fingerprint: CA23 6BCA ACAB 6006 E3C3 0E79 2122 94B4 E5FD 42C3