Monday 18 January 2010

Week 2 of 2010

My enthusiasm still seems to be on holiday at the moment. It better come back soon or I'm going to be pissed! I spent most of this week doing admin stuff and going over last year's progress in detail. I've renamed OOA09 to OOA10. I also moved my whole website onto a new server at to take advantage of a free bandwidth offer. I reinstalled the forum from scratch using the latest version of the software. However, within 5 minutes of installing it I already had several bots trying to register user accounts. I've now disabled user registrations. I would love to get the forum going but anyone who wants to register will now have to email me first.

Below is a summary of last year's progress:

  • Added Project Matrix support.
  • Added Metamodel Population support.

  • February
  • Released Build 013 of OOA Tool.
  • Created an OOA model of fUML.
  • Published technical note on Attribute Classification.
  • Referential and polymorphic attributes now calculated automatically in model populations.
  • Abstracted concept of operation and parameter out of OOA of OOA's process model subsystem.
  • Adopted Nimbus (from Java SE 6) as default look and feel for OOA Tool.

  • March
  • Added Object Instance Type support.
  • Redesigned and reimplemented preferred types.
  • Worked on Action Language syntax and semantics.
  • Adopted policy of automatic creation of supertypes so that users do not need to relate or unrelate subtype-supertype relationships any more.
  • Predefined type visibility within tree browser now depends on whether they are referenced within model.
  • Added Event Reference Type support.
  • Mathematically dependent referential attributes which link to mathematically dependent relationships added.
  • Simplified default value design on attributes and data items.

  • April
  • Major rewrite of attribute's derived fields which are pretty complex.
  • Published technical note on Custom and Automatic Key Lettering.
  • Added Enumerated Subtype Type and Enumerated State Type support.

  • May
  • Added four new statements to Action Language which aren't defined in OAL: a declare statement, a switch statement, a migrate statement, and a delete event instance statement.
  • Published technical note on Synchronous Communications between Domains.
  • Published technical note on Asynchronous Communications between Domains.
  • Prototyped wormholes and bridge mappings.
  • Evolved concept of watchpoint mappings into domain observers.

  • June
  • Published technical note on Semantic Shift.
  • Explored use of declare statement in error handling.
  • Considered introducing mathematically dependent objects but have held off for now.
  • Identified need for operation owner and semantics of operation name ownership.

  • July
  • Added data type unary/binary/dot operators as a new type of operation.
  • Renamed Data Dictionary subsystem as Data Type subsystem.
  • Identified clear role for process models as means of identifying concurrent data flows which is no longer a responsibility of the Action Language.

  • August
  • Explored partial/complete ordering of objects and identified a potential use for aggregation and composition within Executable UML.
  • Added Ordered Identifier support.
  • First major refactoring of OOA Tool code - made ModelElement parents static, added deleted status, improved changed status and used Java generics to specific parent type.
  • Allow users to control importing of objects and event destinations in various diagrams.

  • September
  • Merged in some Java classes from a previous project: status bar component, console panel component, and improved event logging.
  • Second major refactoring of OOA Tool code - added factory reference to all ModelElement classes using Java generics to control typing, and added view factory mechanism.
  • Third major refactoring of OOA Tool code - encapsulated all Shlaer-Mellor and Executable UML terminology into OOA Dictionary component, added OOA Dictionary web page generator to that component.

  • October
  • Added version control to OOA Dictionary and can generate OOA Dictionary web page within OOA Tool.
  • Old icons recoloured and lots of new icons added.
  • Now allow subtype-supertype relationships with only one subtype participant.
  • Added automatic backup mechanism for model files.
  • Modelled a new File System domain which will be bridged to the OOA of OOA (and implemented in OOA Tool) in the future.
  • Added Layer concept to Recursive Design subsystem.
  • Final attributes are now tagged with an "(F)" suffix in OIMs.
  • Verb phrase concept is split into verb phrase before and verb phrase after to clarify meaning and allow generalization.
  • Roles which appear within associated verb phrases are now highlighted on OIMs and class diagrams.
  • Added concept of qualified verb phrase providing a more stable identification scheme for relationships compared with relationship IDs.

  • November
  • Resigned Naming domain as Name Management domain, adding a Name Manager external entity to OOA of OOA encapsulating all the various types of name and qualified name used within the OOA of OOA.
  • Created a detailed state model for name parsing.
  • Added numeric word formatting support to Name Format and decided that numeric ID names within OOA of OOA should be padded by default.
  • Developed data type to object bridging ideas from OOA of OOA to Name Management bridge - external types now allow a literal type to defined which allows external types to have default values, and external operators can be defined on external types which may override predefined operators such as equality.

  • December
  • Added support for reference field navigation to OOA Tool GUI which was incorporated into all data type forms.
  • Finished all outstanding tasks in the Data Type subsystem.

What it does not include is a working simulator or model compiler. The original goal for 2009 was to get OOA Tool out of BETA which requires working simulation and full translation. What went wrong?

The first thing that went wrong was that I didn't perform enough analysis of the Operation subsystem before I jumped into coding. This is an area that isn't well defined within Shlaer-Mellor or Executable UML, especially with regards to bridging operations. I was also determined to find a role for process models within the framework. The Operation subsystem also interacts with an Action Language subsystem that also isn't well defined with each tool vendor defining their own action language. The result was numerous iterations of ideas and a considerable amount of recoding.

The second thing that went wrong was a number of major refactorings of the OOA Tool code base. These required major effort to complete since the code base is already so large (almost 140K LOC excluding comments). They have improved the code considerably but each major refactoring left me pretty drained. Of course, if I was generating my model element classes from archetype templates and the OOA of OOA then these refactorings would have been much much easier.

The third thing that went wrong was that I made too many changes to the code base making me reluctant to release ongoing builds until a stable build was ready. The OOA Interchange Format and OOA of OOA then got out of step. This turned Build 014 (which has still not been released) into a year long effort rather than a 3 month effort. Not being able to release any stable builds has been a big downer and reduced external interest in the overall project.

So what now? I need to stabilize everything I'm doing. Get Build 014 released. Publish a number of partially complete technical notes that should have been published last year. Make my website notation switchable since I don't like mixing terminology within my web pages and I have no intention of giving up on Shlaer-Mellor notation even though most users are more interested into Executable UML notation. I then need to plan out future builds so that they are more timely. I would still like to get OOA Tool out of BETA this year but I would settle for a working simulator with a version controlled Action Language.

I'll end this week's report with a suggestion that you all have a browse of Kennedy Carter's new redesigned website. Hopefully, they will continue to expand the online content now that it has been refreshed.

Monday 11 January 2010

Week 1 of 2010

Happy New Year everyone. We have still got plenty of snow here in Colchester which is unusual. I'm also just recovering from a stinky cold which I probably picked up in the Costa coffee shop I like to chill out in. I had hoped to be productive over the Christmas period which so didn't happen. Instead, I've read lots of novels. English TV is always full of repeats and rubbish during Christmas. Although one of my favourite BBC shows Being Human has just started a new series.

I need to get my priorities straight this year and ensure that I deliver working code generation in OOA Tool. My biggest problem will be motivation since I have been working on the project for a full 3 years now by myself. Many features (and technical notes) were left unreleased last year because I failed to finish off the features in a releasable form. This must not continue this year. I have decided to allocate another full year to the project. However, after next year I will probably return to mainstream consulting/development for a break and to shore up my finances. The project will still continue part-time after that. I have no doubts about the overall goals and objectives of the project. However, getting other people to participate in the project has been incredibly difficult. I hope more people will contact me this year with a view to contributing or sharing models etc. Drop me an email if you want to get involved.