Archive

Posts Tagged ‘open source’

More metamodel stuff

May 26th, 2009 2 comments

Over the past few weeks and months I’ve been hammering away at ideas for metamodels (or metametamodels) for enterprise architecture, with the longer-term aim of triggering development of an Open Source-style enterprise architecture toolset. So I’ve taken some time off in the past week to sit down and document where it’s got to so far. The result is now up on one of my ‘spare’ wikis under the ‘OpenFutures’ banner – see http://ea.openfutures.org/OsEATools .

The section on metametamodel design, starting at http://ea.openfutures.org/MetaModel , will, I admit, probably only make sense to a few dozen people in the whole world at best (if anyone… :-( ). Reason is not only that it’s horribly technical and applicable to a very specific field of interest, but it’s also too incomplete to be usable as-is, it’s in text form only when it urgently needs some descriptive graphics (my apologies, but I couldn’t find any way to do them…), it assumes an underlying layer (OMG MOF) that relatively few people would know, and it is, well, still a Tom-tangle of useful ideas and probably-impenetrable assumptions… Oh well. But it’s there, anyway.

The ‘examples‘ section, starting at http://ea.openfutures.org/MetaExamples , is probably (possibly?) a bit more accessible, since in effect it focusses on how to make Zachman usable with real whole-of-enterprise variants of better-known metamodels such as ArchiMate and TOGAF. Mapping ArchiMate and the new TOGAF 9 ‘Content Metamodel’ helps to highlight what’s missing from those metamodels, and what the impacts are as we move out from a simplistic IT-centric ‘enterprise architecture’ to a true whole-of-enterprise scope; it also highlights what needs to be in scope as we move out from clean-up and strategy (steps 2 and 3 in the “Doing Enterprise Architecture” sequence – the only types of architecture work covered in TOGAF) and start to tackle real-world real-time constraints (step 4) and the real ‘nasties’ such as social-complexity ‘wicked-problems’ (step 5) and beyond. The aim in particular is to identify ‘substitutability’ – what can be substituted for what else, in architectural redesign for the enterprise.

As I say, it’s there for anyone who wants to peruse it (though if you’re working for a commercial organisation, please note the ‘legal bit‘ about copyright and the rest – this is intended as a shared Open Source resource, not merely yet another item for profit-based organisations to steal, as has happened to me too often in the past… :-( ).

Comments / suggestions / ideas most welcome, in an Open Source-type spirit. If you want to comment directly on that site, please ask for a username / password (email me, or post a comment here with your [hidden] email); otherwise just post comments to this post.

Many thanks, all.

Meanderings on metamodels

April 24th, 2009 4 comments

Been spending the past couple of days thinking long and hard about what’s needed for an Open Source kind of enterprise architecture toolset.

On the one side, there’s the work by people such as Charles Edwards and others at Agile EA, who’ve focused on tools (the Eclipse framework, in their case) to manage the architecture development process. What it’s lacking, however, is any kind of modelling or information-repository.

On the other side, there’s the Essential Project, which uses the Protege toolset to manage the repository and metamodel – but has no real method-support to speak of, and uses the same tired old TOGAF-style ‘four architectures’, which just does not work for anything beyond a bottom-up IT-centric view of ‘enterprise’ architecture. And whilst there are a handful of auto-generated model-types, it isn’t a generic modelling environment such as we need for architecture problem-solving.

So what do we need? As I understand it, we need something that merges all of the following:

  • a structured yet iterative architecture method (or preferably support for several of them)
  • a user-extensible metamodel, describing model-entities, relation-types and model-types
  • a set of repositories for requirements, for risks/opportunities and other issues
  • a glossary and thesaurus – preferably auto-generated in some way
  • a modelling environment that allows us the link all of these together in both structured and unstructured ways
  • tight, explicit version-management for everything

It’s clear that the core of all of this would be the underlying metamodel – because everything else derives or devolves from that.

In a couple of days of hammering and head-scratching and scribbling and the rest, two main metamodel themes seem to have come up.

The first is that the usual way of building the modelling part of an architecture metamodel is the wrong way round. The usual way starts with entity-definitions.  We then define individual ‘legal relationships’ from one entity-type to another. Once we’ve done that, we than build model-types which use specific entities, which then implies the ‘legal relationships’ we can use within the model.

There are at least two things wrong with that approach. One is that this doesn’t allow for the kind of loose-coupling that occurs between entities – the variability of what I call ‘bindedness’, particularly in reference-models, in which some items are mandatory, others are strongly recommended, others are merely desirable, and so on. It also means that we have vast numbers of relation-types, many of which may be relevant only in specific contexts, and which increase in number exponentially as we add entity-types to the metamodel. And worse, there’s no clear way to enforce compliance in a model-type: if the relationship is ‘legal’, it can appear in just about any model – which wrecks the consistency of a BPMN model, for example.

A better way round is to start with the model-types. These define a list of relation-types that are ‘legal’ within the context of the model. The relation-type itself identifies the entity-types that can be at either end of the link – which, for most real-world modelling, would also have to include an entity-type of ‘Unknown’, to support the very common development case where we know something is needed but we don’t yet know what it is.

This is made to work via the second of the themes that have come up over the past couple of days. The core ideas here are:

  • most (but not all) root-level entities need to be identified as ‘primitives’ within a Zachman-style frame of rows (responsibility and timescale), columns (asset, function, location etc) and segments (physical, virtual, relational etc)
  • most things we deal with in architecture are ‘composites’ that straddle framework segments and/or columns, or patterns that can also bridge framework rows
  • display should not be rigidly linked to the entity itself – or rather, an entity should allow any number of display-methods

Taking this a few steps further:

  • above the base-level, anything can be a composite
  • a composite inherits not only the attributes and display-methods of its included ‘parents’, but also their hooks for the respective inter-entity relations in model-types
  • links connect to any member of the composite – hence, for example, we could have an abstract entity-type called ‘BPMN Data-Object’, which could be attached to any entity for a virtual-object (form, message, database-record etc), or for that matter any physical or relational object, which would enable that entity to be displayed in a BPMN diagram as the ‘dog-eared page’ BPMN symbol for ‘Data Object’
  • an ‘instance’ of an entity-type is simply something which can itself no longer be sub-typed – e.g. “Oracle 9i database application” – but can still be subtyped if it’s incorporated into a composite with something that isn’t an instance – e.g. instance “Oracle 9i” + entity-type “server” form a composite entity-type “Oracle 9i server” which can then be instantiated (or sub-typed) as “Oracle 9i production-server”, “Oracle 9i development server”, “Oracle 9i fallback server” and so on
  • categorisation into the respective framework cells, rows, columns and segments is done by attaching the respective objects and/or (for e.g. a whole row or column) composites into the composite-set for the entity – which also allows us to define relation-links that only connect to specific rows or columns or suchlike

This is all very much a work in progress, but it does seem to open up a whole realm of possibilities. A few initial ‘thought experiments’ with workflows suggest that despite the underlying richness, it would actually be easier to drive than most of the big behemoths such as Troux Metis or IBM/Telelogic System Architect.

More on this later, but I thought it was worth posting for discussion as it is now, anyway. Comments / suggestions, anyone?

Time for open-source enterprise-architecture?

September 20th, 2008 No comments

A theme which came up several times in the Troux Directions conference, and came up in several different ways, was the need for some means to share and exchange enterprise-architecture information between multiple organisations, so as to handle the reality that ‘enterprise’ is now very often broader than a single organisation.

The catch right now, of course, is that every vendor has their own proprietary file-format and metamodel. They’d each no doubt be very happy if their own format became ‘the exchange standard’, because that would de-facto enforce a single-vendor monopoly, in the same manner as Microsoft Word. But the multi-vendor environment is a reality: and that ain’t going to change – especially at the prices that the EA-toolset vendors charge for their products… But what could change the game is an open-source approach to the whole field: firstly for exchange-formats, and possibly for toolsets too. When vendors charge upwards of US$500,000 for a single complete suite of products, there has to be room for an EA equivalent of OpenOffice there somewhere…

I’ve summarised what I think are the overall requirements for such a toolset in my book Bridging the Silos: enterprise architecture for IT-architects – see page 14-15 (p.20-21 of the PDF file) in the current draft version on the Tetradian Books website. But to get all of that together will take a fair time, and the most urgent need right now is for some kind of exchange-format. A few places that seem to provide useful pointers:

  • IDEAS Group (International Defence Enterprise Architecture Specification) – okay, it’s military, but at least the site makes it clear that it’s not IT-centric
  • XPDL eXtensible Process Definition Language (Workflow Management Consortium) – process-specific, but could be extensible for enterprise architecture
  • OMG standards around MDA Model-Driven Architecture, such as XMI XML Metadata Exchange – sure, the MDA is still IT-centric at present, but OMG are putting a lot of effort right now into breaking it out of the IT-only box

The key to all of this, though, is going to be defining not just an extensible file-format but an extensible system-architecture that can be flexible enough to handle all of the present and future requirements for enterprise-architecture. Sounds like a big ask, I know, but should be doable as long as we keep the core ideas really simple, and focus on leaving the right hooks for extensibility.

Anyone else interested in this? If so, let’s set up a suitable forum on LinkedIn, perhaps, and continue the conversation there.