Issue 8461: UML 2 Super / Kernel / excessive restriction on redefinition (uml2-rtf) Source: International Business Machines (Mr. Jim Amsden, jamsden(at)us.ibm.com) Nature: Uncategorized Issue Severity: Summary: In section 7.3.44 on pg. 130 of ptc/04-10-02 there is a constraint that states: “All redefinitions shall be made explicit with the use of a {redefines <x>} property string.” Unfortunately, this is violated in numerous places in the metamodel. This results in numerous inconsistencies in the metamodel. Recommendation: As a practical resolution with minimal impact, it is recommended that this restriction be removed. This means that the use of the same association end name for a given association end implies a redefinition of the corresponding association end in an ancestor class. Resolution: see above Revised Text: Change the last paragraph in section 7.3.44, subsection Notation from: All redefinitions shall be made explicit with the use of a {redefines <x>} property string. Redefinition prevents inheritance of a redefined element into the redefinition context thereby making the name of the redefined element available for reuse, either for the redefining element, or for some other. to: All redefinitions should be made explicit with the use of a {redefines <x>} property string. Matching features in subclasses without an explicit redefinition result in a redefinition that need not be shown in the notation. Redefinition prevents inheritance of a redefined element into the redefinition context thereby making the name of the redefined element available for reuse, either for the redefining element, or for some other. Editor’s note: This same change needs to be made in 11.3.3 on page 124 of the Infrastructure document (ptc/04-11-16) Actions taken: March 4, 2005: received issue August 23, 2006: closed issue Discussion: For practical reasons, this restriction should be removed. This means that the use of the same association end name for a given association end implies a redefinition of the corresponding association end in an ancestor class. This is typical practice in most OO programming languages. End of Annotations:===== ssue X6: UML 2 Super / Kernel / excessive restriction on redefinition Source: Jim Amsden, IBM Software Summary: In section 7.3.44 on pg. 130 of ptc/04-10-02 there is a constraint that states: .All redefinitions shall be made explicit with the use of a {redefines } property string.. Unfortunately, this is violated in numerous places in the metamodel. This results in numerous inconsistencies in the metamodel. Recommendation: As a practical resolution with minimal impact, it is recommended that this restriction be removed. This means that the use of the same association end name for a given association end implies a redefinition of the corresponding association end in an ancestor class. Subject: RE: Issue 8461 - disagree with the proposal Date: Sun, 6 Mar 2005 13:41:45 -0500 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Issue 8461 - disagree with the proposal Thread-Index: AcUg5KDSyQonHK4eRJGPhNFmZalwtwBkpsHg From: "Pete Rivett" To: X-Virus-Scanned: by amavisd-new at sentraliant.com Firstly the text referred to is a rule for Notation: not a Constraint. So I don't see how it can be violated 'in the metamodel': presumably the issue means that the metamodel has Redefinitions not present in the diagrams - so it's the diagrams not the metamodel that have violations. As I said on the call, I'm not happy with the proposal: the need to have redefinitions explicit was a deliberate measure made for a good reason. Removing this rule from the spec might have 'minimal impact' on the editors of the Specification, but may well have a very significant impact on modelers using UML 2 everywhere, since this is a rule for UML2 generally: we should not sacrifice the latter for shot term convenience. Regardless of the notation used, the metamodel in any case needs to have explicit 'Property.redefinedProperty' references. And it's incumbent on us to have the specification document fully reflecting the metamodel, rather than hiding important detail in the XMI. My proposed resolution is to update the diagrams which do not follow the rule. Pete Rivett (mailto:pete.rivett@adaptive.com) CTO, Adaptive Inc. Dean Park House, 8-10 Dean Park Crescent, Bournemouth, BH1 1HL, UK Tel: +44 (0)1202 449419 Fax: +44 (0)1202 449448 http://www.adaptive.com ============================================================================ This is issue # 8461 Source: Jim Amsden, IBM Software UML 2 Super / Kernel / excessive restriction on redefinition In section 7.3.44 on pg. 130 of ptc/04-10-02 there is a constraint that states: .All redefinitions shall be made explicit with the use of a {redefines } property string.. Unfortunately, this is violated in numerous places in the metamodel. This results in numerous inconsistencies in the metamodel. Recommendation: As a practical resolution with minimal impact, it is recommended that this restriction be removed. This means that the use of the same association end name for a given association end implies a redefinition of the corresponding association end in an ancestor class. ================================= Jürgen Boldt Director, Member Services Object Management Group 250 First Avenue, Suite 100 Needham, MA 02494 Tel. +1 781 444 0404 ext. 132 Fax: +1 781 444 0320 email: juergen@omg.org www www.omg.org Reply-To: From: "Conrad Bock" To: Subject: Redefinition Date: Mon, 19 Feb 2007 10:53:38 -0500 X-Mailer: Microsoft Office Outlook 11 Thread-Index: AcdUPh7YDGbusuUOQFCCdYMkDk/EVg== X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at omg.org Hi all, Searching on 8461 in http://doc.omg.org/formal/07-02-03: Redefinition prevents inheritance of a redefined element into the redefinition context thereby making the name of the redefined element available for reuse, either for the redefining element, or for some other. I assume in the last sentence, after "thereby" should say the redefined element is *not* available for reuse? Conrad Subject: RE: Redefinition Date: Tue, 20 Feb 2007 10:20:46 -0500 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Redefinition thread-index: AcdUPh7YDGbusuUOQFCCdYMkDk/EVgAxDhNA From: "Ed Seidewitz" To: Cc: X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at omg.org X-MIME-Autoconverted: from quoted-printable to 8bit by amethyst.omg.org id l1KFC900016294 Conrad -- No, I think this is correct as written. The idea is that if you redefine an element named "A", then "A" isn't inherited and the name doesn't become part of the specialized namespace. Therefore, if the redefining element is named, say, "B", you can "reuse" the name "A" for some other element, without it conflicting with the name in the parent namespace. Or, for that matter, you can use "A" for the name of the redefining element -- even though it is actually a different element than the element that was redefined. -- Ed > -----Original Message----- > From: Conrad Bock [mailto:conrad.bock@nist.gov] > Sent: Monday, February 19, 2007 10:54 AM > To: uml2-rtf@omg.org > Subject: Redefinition > > > Hi all, > > Searching on 8461 in http://doc.omg.org/formal/07-02-03: > > Redefinition prevents inheritance of a redefined element into the > redefinition context thereby making the name of the > redefined element > available for reuse, either for the redefining element, or for some > other. > > I assume in the last sentence, after "thereby" should say the > redefined > element is *not* available for reuse? > > Conrad > > Reply-To: From: "Conrad Bock" To: "'Ed Seidewitz'" Cc: Subject: RE: Redefinition Date: Tue, 20 Feb 2007 10:24:55 -0500 X-Mailer: Microsoft Office Outlook 11 thread-index: AcdUPh7YDGbusuUOQFCCdYMkDk/EVgAxDhNAAAAljZA= X-MailScanner-Information: Please contact postmaster@mel.nist.gov for more information X-MailScanner: Found to be clean X-MailScanner-SpamCheck: X-MailScanner-From: conrad.bock@nist.gov X-Spam-Status: No X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at omg.org Ed, > No, I think this is correct as written. The idea is that if you > redefine an element named "A", then "A" isn't inherited and the name > doesn't become part of the specialized namespace. Right, but the text says the redefin*ed* element (A in your example) is avaiable: > > Redefinition prevents inheritance of a redefined element into > > the redefinition context thereby making the name of the > > redefined element available for reuse, either for the redefining > > element, or for some other. It's the redefin*ing* element that is available. Conrad Subject: RE: Redefinition Date: Tue, 20 Feb 2007 10:31:27 -0500 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Redefinition thread-index: AcdUPh7YDGbusuUOQFCCdYMkDk/EVgAxDhNAAAAljZAAACAbgA== From: "Ed Seidewitz" To: Cc: X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at omg.org X-MIME-Autoconverted: from quoted-printable to 8bit by amethyst.omg.org id l1KFMh72016702 Conrad -- It IS the redefin*ed* element (A) that is available in the sense meant by the next. In the absence of redefinition, A would be inherited, and any other element in the namespace that you tried to give the name "A" would conflict with the inherited name (up to the allowance of overloading of operations with different signatures, etc.). On the other hand, if there is a redefinition of A, then A (the redefin*ed* element) is no longer inherited, and it's name "A" becomes available for use as the name of some other element in the namespace. This use could be as the name of the redefin*ing* element (which is the only option in most OO languages), or, if the you give the redefining element a new name, then you can use "A" as the name of some other totally unrelated element. -- Ed > -----Original Message----- > From: Conrad Bock [mailto:conrad.bock@nist.gov] > Sent: Tuesday, February 20, 2007 10:25 AM > To: Ed Seidewitz > Cc: uml2-rtf@omg.org > Subject: RE: Redefinition > > > Ed, > > > No, I think this is correct as written. The idea is that if you > > redefine an element named "A", then "A" isn't inherited > and the name > > doesn't become part of the specialized namespace. > > Right, but the text says the redefin*ed* element (A in your > example) is > avaiable: > > > > Redefinition prevents inheritance of a redefined element into > > > the redefinition context thereby making the name of the > > > redefined element available for reuse, either for the > redefining > > > element, or for some other. > > It's the redefin*ing* element that is available. > > Conrad >