Reusable Ideas and Archimate in Practice

Communicating an enterprise (or solution) architectural vision to a group of business stakeholders is a non-trivial activity. This is due to several reasons

  • The architecture is attempting to bridge the IT/ business divide
  • There may be significant pre-existing positions and points of view that need to be overcome to ensure a successful adoption
  • Often the concepts that the enterprise architecture is attempting to communicate are esoteric, ethereal or just plain old complicated

Pictures and diagrams help a lot, and a common language or set of symbols improves matters greatly- I am currently using Archimate in Visio to create these diagrams and it seems to work fairly well. But the real challenge comes in dividing up the diagrams to uniquely convey a single point that can be re-used.

What exactly do I mean by this? Well, for a number of years the IT world has attempted to create reusable objects of code- first in procedural functions, then in object oriented programming, now as web services. Whatever technique was used the idea was the same: Invent once, reuse many times. It can be debated how successful this has been, personally I can point to at least a couple of successes where I created or used existing web services and many, many times where the reuse was difficult orĀ  flat out impossible. As we move into ‘higher’ areas with tighter turnaround times, the need to create reusable things becomes ever more important.

I have given up counting the number of times I have read documents created in the business environment that simply consist of cut and paste from other documents. Now that is fine if the purpose of the two documents is exactly the same and the idea that is being conveyed is exactly the same (though this does then beg the question, why are you recreating the same document again? But that is a discussion for another time and place) but most times the purpose of the document is different. At this point you need ‘atomic ideas’: Atomic ideas are difficult to create in words, but diagrams that convey a single point are slightly easier to create as long as you don’t try to overload the picture.

And this is where Archimate starts to come in: It is a rich language and set of symbols that can describe a wide range of architectural scenarios- this is good as the typical enterprise that is attempting to create an enterprise architecture is a complex beast. However, the very richness available through Archimate means that, very much like the UML that it is largely based on, it is very easy to confuse the message a diagram is trying to show by adding in more and more details or fogetting to be entirely consistent in what types of objects you associate on a single diagram.

The rigour necessary to create these truly reusable diagrams can be implemented in a tool- if it creates a set of underlying data, rather than just creating the diagrams. This is what I mean by ‘architecture by model’ as opposed to ‘architecture by diagram’: In a model a Component ‘knows’ that it can connect to another component, it can be accessed by a role or an actor but, for example, it is not possible to connect a component to a department.
Unfortunately, most of the time the reason for creating the diagram is to communicate. And in order to communicate we overload the diagram to help explain things. This would be fine if the diagram were built up of these atomic ideas- the idea could be reused in many diagrams, and a different view on the same set of data would allow the atom to be used for different purposes. But if you are truly creating a diagram then you aren’t using atomic ideas, you are creating a complete picture.

I just think that most people don’t think in terms of atomic ideas: making people think inside a rigorous, formal structure is difficult. Maybe it is because thinking in this way requires a large learning curve and needs you to leave your preconceptions at the intellectual door or maybe most people just aren’t wired in such a structured way. I don’t know what it is, but the ability to create and then use fundamental ideas as part of a structured system is going to be crucial if we are able to build consistent, stable solutions. Archimate helps in this matter, as does UML, but the real leap is an intellectual one: We need (as an IT profession) to be able to create atomic ideas that can be reused as fit for purpose communication to all interested parties (and even a few uninterested ones too) until then we will be stuck doing things by diagram instead of by model.

Archimate: A language for Architects

A large part of the role of a Solution Architect is to communicate the sometimes abstract ideas in a computer system to business users, technical experts and often times just to yourself. I am a visual guy; I like pictures. There are many, many languages and diagram formats that can be used for different levels of detail in an IT system: ER diagrams for the data part, UML class diagrams for the class model, use cases, component model, node model, deployment diagram etc.

Except that often as a Solution Architect I do not work at this level of detail: I am trying to extract what business information a user needs, where reports are generated and what processes access the various pieces of information. ER diagrams don’t really work, UML class diagrams aren’t what I need either. I kind of need an extension of UML and hard as looked I couldn’t find anything…..

Until I started working in the Netherlands (damned clever, these cloggies) and came across Archimate. I am using it on a number of projects to create solution and domain (small scale enterprise) architectures. And so far it seems to be a damned good idea. I have heard rumours and rumblings that it will soon be adopted by the Open Group so that it will be a language extension to UML- we’ll just have to wait and see on that front.

The only downside is that so far I can only use Archimate in Visio, so I am doing ‘Architecture by diagram’ rather than ‘Architecture by model’. In the not too distant future I hope to start using System Architect to do the architecture work- and SA is probably the best tool out there for this kind of work, does have a true model behind it (thus allowing true validation of what you construct) and it should be possible to set it up to use Archimate as the language.

This may make my life harder in the short term as I learn a new language, get re-aquainted with a tool and fight to meet deadlines; but in the long run this is a good thing. Storing a true model is far, far better than any set of diagrams.

Continuing saga of e-mail organisation

I have been eating my own dog food as it were and using the filing approach for organising my e-mail. However, I ran into another problem: I have a main desktop computer at my home office and an ultraportable laptop. Unfortunately, the ultraportable is running Vista whilst the desktop is on XP and synchronisation between the two has proven to be tricky (if I received 1 new e-mail from someone, I was having to copy 20 or 30MB of data because of the way the folders were organised). So I needed a better solution to managing my e-mail between computers, rather than within the mail system.

Fortunately there is such a protocol: IMAP. Unfortunately, neither or my e-mail providers support it (Damn you, Yahoo!) so I needed something else. Enter Google: gmail (or googlemail in the UK) has changed the way people deal with e-mail: There are no folders, just Labels and you can store massive amounts of e-mail on-line. Well, as far as I can make out, Labels are exactly the same as Tags, so that is no big deal and the storage of e-mail on-line seems to solve many of the problems of accessing my mail from multiple computers.

Except that quite a lot of the time I need to use mail in locations where I can’t get on-line (e.g. planes) so I still need an off-line set up. And I need to access all my existing mail accounts, and I don’t really want to have to tell anyone about a new e-mail address.

And wouldn’t you just know it, Google mail does all of this: So now my desktop/ laptop e-mail clients have an IMAP connection to Google mail. My Google account is set up to download all the mail from all my existing providers, I have even set up an existing account as my default (so no-one needs to know where my mail has really come from). Each label in Google is automagically converted into a folder in my mail client and I set up all my folders to be available offline.

All I need to do is make sure that I download all mail to the local PC and then at various periods (about 5GB periods in fact, as that is my mail storage limit) archive my mail to local files and then copy those local files to both my computers.

So far it seems to work. I hope it continues.

Data Portability

… coming to a Web 2.0 near you.

I haven’t had time to dig into the details behind the announcement, but it looks like some of the big players in web 2.0 (Facebook, Google and Plaxo) have joined the data portability workgroup.

The initial aim is simply to allow users to export contacts from one social network to another, but this is hopefully the first step on the path web 2.0 conforming to sound data architecture principles. I have no idea if this was all part of the plan, but I can’t help but think that comments about how OpenSocial missed the point by ignoring the data from people like Tim O’Reilly and echoed by myself may have spurred on the process.

Whatever, congratulations to them for joining up and let’s hope that they are able to commit resources to Data Portability to improve the resources available

Recommendations on how to organize e-mail

In order to keep control of e-mail there is all sorts of advice on web sites, books and TV shows telling you to use folders and tags to organize (or even organise) your e-mail. But there is almost no advice telling you how to organize it. So, in the spirit of rampant egotism and the belief that I know best, here are some recommendations how to organise your e-mail. Although first we just need to describe the tools and techniques that I suggest to use

i. Understand the difference between folders and tags. Folders are long term, structural things that divide messages. Tags on the other hand are far more flexible.

Think of folders as the wall that divide up a house- you can move walls, but it is quite an undertaking. Tags on the other hand are more like a free standing bookcase that you buy from Ikea- it is pretty straightforward to move the bookcase from one side of the room to the other or add another bookcase etc. In fact the bookcase metaphor works on a second level: In an ideal world, any tag will exist solely within a single folder, just as a bookcase will normally exist in a single room. However, you could always place the bookcase so that it is half in one room and half in the other; but you would probably need a fairly particular purpose to need to place a bookcase in a doorway.

Finally on folders and tags, and this is where the bookcase metaphor breaks down, you can easily assign multiple tags to a single message. Storing a message in multiple folders generally requires physically copying the message multiple times.

ii. Know the searching and sorting capability of your e-mail program.

Every e-mail application that I have used in the last 5 years allows you to customise the information that is displayed. Most times the message pane will contain the senders name, the message subject (or title), the sent time and possibly whether the message had an attachment or not. The crucial thing to note is that all these columns are sortable (and in some applications they are groupable- though that may not be a real word). What this means is that we can use the computer to search or sort on any column that can be displayed in the message pane.

So, with that understood, how should you organise your e-mail?

1. Create your folders based on large, stable groupings that (and this is the crucial part) are not based on any column that is available from the message pane.

This means that you should (probably) not create a folder called “John Smith” to store all the messages that you send to John and he sends to you. Instead think of what John is, or how you know him or what you talk about with him. So, if John is part of your family or if you know him from the pub then perhaps those are the folders you can create. At work this process is often easier: if you work on multiple projects (or even have multiple billing codes) then the process is simple: 1 folder per billing code. It doesn’t matter who sends the message, if it is related to that project it goes in that folder.

2. Supplement your folders with tags that provide additional information not contained within the folder, the message pane columns or elsewhere.

3. Finally, and this does bend the previous rules slightly: If you are using an e-mail program that doesn’t use a database to store the messages you will need to archive your messages. This is obviously a time based breakdown, which is one of the sortable columns. However, I can’t think of a smart way of creating archives any other way, so just suck it up.

So, some of these suggestions may be old hat- I think that the crucial one is #1: I haven’t seen anyone anywhere else make this proposal, but I have been using this approach for a while now and it works a charm at work (it is a bit more problematic at home, but that is because deciding on the folder structure is harder). Good luck with it. Or just ignore me and carry on as before

Organising e-mail using an Ontology

Like most people I receive e-mail. Like some people I like to save that e-mail for future reference. Like virtually no-one I want to have a unique, somewhat formal way of storing that e-mail so that I can find it again later. The traditional approach to this has been to use folders: Many people store e-mail by the sender’s name, some by when the message was sent. The downsides to this approach include the fact that in order to find the message again you must know the single item of information used to file the e-mail, if a message was sent to many people you may have to store multiple copies of the message etc etc

Enter tags: Tags should allow you to add extra information to your filing system: Now you can record the fact that this e-mail from Clive was about the “Winter Weekend”, that one was also from Clive but it was about “sport” and there is a group of your friends called the sports club who regularly conduct e-mail discussions. The problems with this approach include that without a controlled vocabulary the number of tags can become too numerous to manage, how do you know whether to classify something as “film”, “cinema” or “movie” (or even “movies”) and even knowing what this message is actually about.

Fortunately, there are some readily available resources: to determine whether to use film, movie or cinema use WordNet (BTW the answer is “movie”. And “cinema” is a different thing (the building that shows the movie) so don’t use them interchangeably) and to know where to classify the message use SUMO: So the WinterWeekend is a Meeting, possibly a SocialParty but not a FormalMeeting. And just to complete the hierarchy- a Meeting is a SocialInteraction, which is an IntentionalProcess, which is a Process, which is Physical, which is an Entity. Phew! (And I am stopping putting in the hyperlinks now- go look them up yourself)

Which all sounds fantastic. And it is, but I want more: The WinterWeekend was for a SocialGroup (called the Strollers, which is a GroupofPeople, which is a Group, which is a Collection, which is also Physical and still an Entity.

So what I need is the ability to classify my Tag WinterWeekend in mulitple locations in the SUMO hierarchy (or taxonomy to give its proper title). And I am fairly sure no e-mail system allows me to do that (on account of the fact that none of the tools I use even have the SUMO concepts built into them). And yet there is more: the O in SUMO stands for Ontology. And I want an ontology to be “a taxonomy with attributes“. So the WinterWeekend is a SocialParty which means that it has a date, a location etc. And the WinterWeekend involves a group so it has members and those members who showed up (attendees) etc.

SUMO doesn’t define the attributes for each item, so I have to make them up. OK, I am a data modeller by profession so I can make a good stab at the attributes, but it shouldn’t be up to me. But if I do define the attributes then I can use my e-mail to answer the query: Find me all the messages from November 2007 that refer to Lisa. And it should find Clive’s message about the WinterWeekend because Lisa is a member of the Strollers and the WinterWeekend took place in November.

Now maybe I am the only anally rententive person in the world who would try to file e-mail this way, but the point is; if I set up the tag WinterWeekend in the taxonomy, it will prompt me for the metadata (or even extract it from my Calendar) and from then on all I need to do is apply the tag and all the attached information is immediately available. To quote Mary Chapin Carpenter: “Is it too much to ask?”

Facebook Application Overload

Hard to believe amongst all the frisbee throwing, vampire chasing and general waste of time and space… but there are some cool applications running on Facebook.

The problem is that is not clear what Facebook is… but maybe that is the point. Different people use it in different ways- but what happens when “friends” are using it differently? Does the added stress of one person conspicuously ignoring another’s request to be a pirate or whatever indicate a deeper incompatibility?

Or maybe I just got ground down by the number of invites to install a new app.

A smarter man than I

Or at least a more well known man than I: Tim O’Reilly (the man credited with coining the term “web 2.0”, which should put me right off him, but I’ll get over that) is less than impressed with OpenSocial. And why is he less than impressed? If I understand his post correctly, it is because OpenSocial fails to do exactly the things I wanted it to in my post on the subject:

  • SingleĀ data entry
  • (User) Control over the flow of information

This may be a case of data and solution architects having requirements that the application functionality can’t deliver. But that doesn’t mean that the requirements are wrong or should go away. So we continue to wait.

Just when you’re thinking things over

The world is not black and white- it is much more beautiful than that.

Which unfortunately means that for many questions there is no single answer. Like a simple one: Which aggregator do you use?

My choice has been between Yahoo and Netvibes (though there are many more): Netvibes looks cool, Yahoo is the “safe” choice. And here comes the problem: The basic feeds that people want (Reuters, BBC, The Register etc) are available to all aggregators because they use RSS/ATOM. But the really cool feeds lock you into a particular aggregator.

And here is my rant (and a particular example): I want to display sports scores from my favourite teams all aroung the world- NHL (Calgary Flames), MLB (Chicago Cubs), NFL (da Bears), NCAAF (Michigan), Premier League (Arsenal), Premiership Rugby (Gloucester), County cricket (Kent), Italian Serie A (Sampdoria) etc etc. This functionality exists in both aggregators, except it doesn’t.

Yahoo used to provide me with all the north american scores and some of the european ones, but their most recent revamp has removed all the feeds from north america (it still recognises that I have selected some teams, it just won’t display the scores). I guess they assume that because I (now) live in the UK I must have lost all interest in sport outside of Europe. Netvibes is reliant on RSS feeds available to it and the only one I can find only supports the north american scores.

So, I can get most of my scores (still not all) but only by looking in two places. Surely this is what the net was supposed to solve? We live in a distributed world, so how do we provide the information to support the inhabitants of this world?

Because we aren’t doing it right now. Well, not properly anyway.

(BTW I still don’t know which aggregator is best)

What I use

Here is what I use (for what it is worth) in the general Web 2.0 sphere. Hey this is as much for me to remember as anyone else (so expect the odd edit to occur)

And I’ll add more as I remember them. So far, I haven’t signed up with YouTube as I a) don’t like the quality of their videos b) can host videos quite happily on BatWeb.

I am sure that there are more apps that I use, but I can’t remember them for now.