Monday, 19 October 2009

Week 42 of 2009

I've finally finished the OOA Dictionary and I don't want to look at it again anytime soon! Unfortunately, I didn't have the energy to write descriptions for all the entries especially since I would have to write templated descriptions so that terminology references within the descriptions would be notation specific without having to rewrite each description for each notation. I did spend sometime trying to adapt bridge terminology for Executable UML which according to [xtUML02] should allow explicit and implicit bridging (discussed below). The implicit kind being aspect-oriented in nature.

I discovered that Project Technology's old host name www.projtech.com has finally been dropped by Mentor Graphics and reused by some German company for who knows what! I've now removed all references to it from my website. I also checked that all the links on the References page are still active. Unfortunately, the University of Surrey appears to have dropped their Executable UML course CS387 and removed the course contents from their website. I also added the following whitepaper references:

  • [UML05] Unified Modeling Language Specification - Version 1.4.2 - formal/05-04-01 which is the final ISO/IEC specification for UML 1.4 (xtUML is an informal profile of UML 1.4)
  • [UMLSuper09] OMG Unified Modeling Language™ (OMG UML), Superstructure - Version 2.2 which defines part of the current UML 2 specification
  • [UMLInfra09] OMG Unified Modeling Language™ (OMG UML), Infrastructure - Version 2.2 which defines another part of the current UML 2 specification
  • [Balcer09] Beyond Referential Attributes which I commented upon within the LinkedIn Executable UML group (the only active Executable UML group that I know of)

I decided to allow subtype-supertype relationships (generalizations in UML) to have a single subtype participant (subclass end in UML). There are no examples of single subtype relationships in any Shlaer-Mellor book that I am aware of. This is because such relationships are supposed to represent complete classifications and any classification should include at least two instances in theory. UML on the other hand allows single subclass generalizations since such relationships don't generally represent complete classifications. However, Executable UML only supports generalizations that are complete (and disjoint) which is why I didn't originally intend to support single subclass generalizations. However, I have found myself capturing partial models of existing models and Executable UML models of existing UML models (e.g. the Executable UML Foundation model) where only a single subclass end is defined. One can convert such relationships into 1:1 simple associations but the fact that the relationship captures a part of a classification is then lost. Note that the classification is technically complete in the partial model since the scope of the partial model is narrower than the original model. Obviously, the implementation of a single subclass relationship is exactly the same as a 1:1 simple association, i.e. navigation from superclass to subclass is not conditional.

Now lets discuss explicit and implicit bridges in Executable UML. I initially thought that I could map control reception points in Shlaer-Mellor to join points in Executable UML - wrong! After a good read of the existing aspect-oriented literature I discovered that the only feature of bridges that relates to aspects in any way is what I've called domain observers. Bridge mappings define explicit bridges between wormholes and control reception points. There is no equivalent terminology in UML or aspect-oriented programming so for the moment I've retained the Shlaer-Mellor terminology for explicit bridges in the Executable UML part of the OOA Dictionary.

Now to implicit bridges. Aspect-oriented programming selects (via a pointcut) parts of a program (called join points) to which additional behaviour (called advice) are spliced in. In OOA09, domain observers (including object observers, event generated observers and operation invoked observers) remotely observe behaviour in a domain allowing behaviours in the same domain or in other domains to be triggered. There are parallels here between domain observers and join points, pointcuts and advice. However, domain observations are all asynchronous in nature (e.g. operation invoked observers observe the completion of an invocation and thus have access to the input and output arguments of the invocation) and there are no current plans on allowing synchronous splicing of behaviour which is the hallmark of aspect-oriented programming. I don't believe it is possible to create a reusable domain that would allow splicing of synchronous behaviour (e.g. by allowing the output arguments of an invocation to be changed) without a serious risk of the original functionality breaking. Another difference is that domain observers in OOA09 are only allowed to use control reception points to effect any changes in a domain. There are no current plans to allow domain observers to bypass the public interface to a domain. Such hacking is not clever and won't be supported! It is worth noting that all domain observers (and bridge mappings) should still be carefully reviewed when any associated domain is changed (even with the restrictions in OOA09) since there is a risk that any assumptions that were made no longer hold. Concluding this discussion, I can't currently see any good parallels between implicit bridges in Executable UML and aspect-oriented programming so I have also retained the Shlaer-Mellor terminology for implicit bridges as well. Comments welcome.

That's about all for this week. However, I would like to mention the forum on my website which is sadly neglected. Anyone who wants to register on the forum must email me separately so that I know you are a real person. I have discovered that there are a lot of spam bots out there that try to automatically register on forums. I'm not sure what they are trying to do exactly since I block all registrations at present but it does mean that I can't easily determine real users requesting registration. In any case, no real discussions are currently happening on the forum. I hope this will change in the future.

No comments: