Tuesday, November 25, 2008

Good IDEa? [posted Dec. 7th 2006 22:41]

Today it occured to me, and a short scan on the net indicates that I've not been the first to think of this (although not many went before me, that should probably say enough...) that it might actually be a good idea to have a web based IDE.

Not only would it be so much a coding IDE as a collaborative environment for developing software. A choice of workplace flexibility, methods, collaborative patterns, collaborative tools, testing strategies, testing facilities, management tools, productivity measurements, project refactorings, code protection, deployment support could be offered. Hows that for an Integrated Development Environment?

As I said I quickly perused the web to see if I wasn't landing last weeks news and found the following:

Of course Goolge has a beta but that looks pretty pre alpha
Someone thought an XML web based IDE would be a good thing
Obie Fernandez thought in september of 2005 of an web based IDE baseed on Ruby on Rails, cool.
another pre alpha
And finaly ECCO that seems to be the most mature of the lot

As I said this rather unsatisfactory result indicates that this idea is probably not as hot as I would like it to be. Personnaly I would love the idea that I could just open a browser on any computer in the world and work on my own pass time projects or projects that I do for a living not having to worrie about if I have the sources, the tools/libs/docs required.

It seems ideal if I want to just test something in Ruby or Groovy or J2EE (or some language I know even less about) to be able to just select a project and in a wizzard like interface tag the options for the kind of application or project or test method and a project is set up, the IDE has the features needed for the specific language and you just start coding. Build scripts, unit test database connections, everything just works since I didn't have to think about how to configure them. That means I can try out and develop an idea in a few hours, the time I usally now am busy trying to get a new compiler and database up and running.

The tremendous collaboration tooling available on the web can be integrated in development and the deliverables of the development process can all be part of the same environement. The possibilities to support projects in terms of methodolgy/project management/code and other deliverables quality/traceability far exceed what can be reached by a set of seperate tools even if they are individually web based (RUP has a intranet based deliverables management tool/Jira or other issue management tool/wiki for collaboration/basecamp for project colaboration/etc) This is for an important part due to the fact that the most important deliverables; models and code are in the vast majority of cases produced on tools based on a single computer/IDE instance. Although code (code or models I see them both as more or less the same in light of this discussion, so lets call them both code for now) is managed in a repository, the actual centre of its manipulation and evaluation is done on an individual computer that needs specific tools installed that usually don't integrate with the other tools just mentioned. And although the individual collaborative tools mentioned above are very good at what they do having one tool that would span all that functionality only half as good would win hands down in productivity/project quality terms just because the integration would allow far better leverage of content.

This kind of environment would possibly have a better protection against code "leaving" a project to become some other projects asset. This would off course not be relavant to open source projects but there are a lot of non open source projects that might have persons responsible that would be really glad about this kind of security.

Open source project would benefit greatly by the fact that a very off the wall project setup in terms of tooling/libs/test setup or whatever would be no problem to new project memebers. They would spend no time getting their environment setup to be able to actually contribute something to the project.

I realise that it is kind of a big brother idea to have someone have the potential to fully control/measure/evaluate everything that is done by the individuals on a project in terms of lines of code written, number of testcases created, number of fixes on a unit of code, the fact that code is related to other deliverables (technical designs, isseus, testscripts), the hours somebody is working, etc etc. Most of these things can theoretically be monitored now aswell, were it not that it would take a lot of effort combining a diverse set of tools (if tools are used at all). I'm sure a lot of project managers would be very happy that they would have all this information. To be frank I think I would not be too unhappy that my project managers would see on what silly things I have to spend my time. But that is in the current, far from ideal, lots of tools, way of working I'm faced with today, not the bright new world of the true IDE.

Too Lua time [posted Nov. 5th 2006 10:38]

Every now and again something interesting comes along, nowadays they come more and more frequently so it seems. Recently I bumped into Lua. It is a free dynalic programming language that has been around since 1993 (shows you how "with it" I am to find this only now ;-)) and was developed in Brazil (the user conferences seems very appealing). It "combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode for a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping", nothing too revolutionairy abou tthat.

The cool thing is that is build to be extendable: "A fundamental concept in the design of Lua is to provide meta-mechanisms for implementing features, instead of providing a host of features directly in the language. For example, although Lua is not a pure object-oriented language, it does provide meta-mechanisms for implementing classes and inheritance. Lua's meta-mechanisms bring an economy of concepts and keep the language small, while allowing the semantics to be extended in unconventional ways. Extensible semantics is a distinguishing feature of Lua."

Ok so that makes the list of languages to learn: Groovy (Wikipedia), LISP/Scheme/,Dylan (Wikipedia), Haskell (Wikipedia), Erlang (Wikipedia), Lua (Wikipedia), Pluvo (Wikipedia knows not of Pluvo),...

Express [posted Nov. 1st 2006 00:27]

Some time back I was discussing MDA principles (with you know who) and it struck me that UML is a great way to express ones thoughts in a structured visual way (being able to communicate a lot in a relatively easy to understand compact manner) but it or rather the tools one has to use to create it are very ineffective/inefficient. I have wondered many times how it can be that modelling tools have only a fraction of the capabilities that modern IDE's have whereas they are used to do the same thing (persist abstract thought in a structured manner). Not only are they used for the same thing they are used by people doing both modelling and coding. MOreover they are written/created by people working on IDE's. Why doesn't anybody creating a modelling tool seem to be bothered by the fact that making models is pretty inefficient. There further is usually very minimal or no support for team modelling, version control, authorisation, merging, configuration management and so on.

Setting my frustration on all these points appart I was mainly p***ed off with the fact that one, in most cases, cannot write UML like you can write code. Not that I love writing code but I can write code a hell of lot faster than I can model the same amount of meaning into UML. Wouldn't it be great if you could just write UML like code. At the moment I think you would have to write your own text to UML/XMI converter to do that or use the OMG standards of which I don't know if there are many implementations (other than producing text rather than using it as a bases) or write XMI directly if you're a real die hard. That would however not even speed up things since XMI is rather verbal. Ron once pointed out that most developers are text oriented rather than picture/figure oriented, suppose that is true for me.

Anyway to take this though a bit further I thought about why not using Java as a language to code ones model in. It is a language that has a meta language definition so why not use the OMG MDA principles to convert it to UML and from there do the [www.omg.org/mda/|MDA] thing. A more dynamic approach with more possibilities could be achieved using a more dynamic language I assumed. This led me to [www.ruby-lang.org/|Ruby] or possibly Groovy (which Ron pointed out to me). The last seemed close to dying at the time and I focussed on Ruby. Not too much later Ruby on Rails began its much famed rise. When I saw the use [http://www.loudthinking.com/|DHH] made of Ruby I was confident that Ruby would be able to deliver what was needed. It actually opened new ideas/possibilities and hopefully would make my life easier.

The idea was to create a framwork that woud support two things.

First it would support code generation based on the principle of enabling domain modelling and defining platform specific artifacts in architectural patterns, a marking model (an idea borrowed from the MDA Workbench) or Aspects. In other words the domain model stays clean and close to the language of the business and as abstract and precise as possible.

Secondly the framework would support prototyping. The importance of prototyping cannot be underestimated I think. In all projects that I have ever worked on I have seen that having something to look at and preferably work with will bring so much more understanding and inspiration to future users of a system than any model that I have ever made. It is with this that Ruby on Rails will hopefully take a lot of work out of my hands. Yes I would like to have frased this "it took a lot of work out of my hands" but I have been busy too much doing client satisfaction.

These two features would give an executable model that would be as abstract as possible and would take as little coding as possible. The executable model would help the definition of the content of the model and at any given time the model could be used to generate code fit for different platforms and architectures. This double cutting sword would possibly be more complex than a static code generation tool, but it would ensure succesfull short cycled iterations. This approach would possibly prevent a lot of hassle with round trip engineering since the code would evolve in the model and the code would hopefully only be generated to enable installing it in the target environment to test it on non functional requirements.

The way things are modelled in the dynamic model is along the lines of RoR (in fact when I first saw the "has_many" style of relationship declaration in RoR it scared me thinking DHH had created everything I thought of already) extending on it to hold more details to enable successfull generation. In fact the extensions or added information (hashes) could be specific for a certain platforms/architecture and not interfere with other target platforms. However, this is probably better addressed with marking model like constructs. The extensions will not interfere with the workings of the RoR framework allowing that to work its magic. Since the platform/architecture of that is set and proven to work the prototyping/dynamic modelling environment is ready to go.

One of the hard bits will be to generate code other than Ruby from the code written in the RoR/dynamic model. To enable this it will probably be necessary to code as much as possible in a generic way not doing any of the Ruby magic since that leaves relatively straight translation into say Java or .Net nearly impossible.

At the moment Groovy seems to be more alive than ever and JRuby is going strong. These are important it seems to me. Not because I think Ruby is not capable of doing a good job but because Java is a much more accepted language and runtime environment which is not something to take lightely in the Enterprise world. It seems to me that having a JVM as a base is more than welcome in getting companies having Enterprise environments to accept concepts like the one described here. Whatever one may think of Enterprise environments I have enough respect for them not to want to be the one standing outside having all the right ideas.

Enough talk/writing for now, time to proof that it can be done. Hopefully, with a little (or lot of) help from a my friends we can show it works soon. Any ideas on a name for the framework are welcome ;-).

Rails might be Ruby's killing application [posted Nov. 1st 2006 00:27]

Recently I held a presentation on Ruby and Ruby on Rails and one of the conclusions I drew at the end surprised me/hit me just when I wrote these conclusions only an hour before presenting.

The only way that Ruby will get out of its niche position is when it can enter the Enterprise world. It has been doing so not directly but certainly ideas that were, in my mind, formed from Ruby concepts like dependency injection have penetrated the Enterprise world.

The main driving force behind a lot that is going on in the Ruby world at the moment and certainly the source of attention is the Ruby killer app Ruby on Rails. However since it is opinionated software and it has a very opinionated (not to say irritating at times) front man in the shape of [http://www.loudthinking.com/|David Heinemeier Hansson] eager to proof the Enterprise world wrong it could well be that if the Ruby community doesn't get the message accross that Ruby is not only RoR, Ruby will never get into the Enterprise environment.

YAMT [posted Oct. 31st 2006 22:48]

If two MDA tools are not enough Ron found another yet another mda tool out there called Acceleo. On the site it is described as: " Acceleo is the most powerful code generator tool of its generation. It has been designed to improve software development productivity." and it continues to explain: "Based on the Eclipse and EMF standards, Acceleo brings to everyone the MDA approach applied to development industrialization."

It is an open source MDA tool of which the creators sell a Pro verison that has extra features, prefab domain specific modeling and generation templates.

Acceleo was created by Obeo a small French company. It is a very practicle/pragmatic tool based on eclipse which makes clever use of all the editor facilities to facilitate the user in relatively easily making genration templates and generating code from UML(2) models.

Wikipedia has the following on Acceleo, I'm afraid it was written by the people who made it though.

It can be found on the Eclipse plugins site. They have further turned it into a project on the ObjectWeb.

My colleague Pascal has spent some time of late to get Acceleo to generate .Net code based on an architecture derived form the Domain Driven Design book using NHibernate as a OR mapping/persistency framework. Hopefully Pascal will share some of his experiences here soon.

Today Ron, Pascal and I had a conference call with one of the CEO's/creators of Obeo/Acceleo. He demoed the new Pro version and we were very impressed by the features that holds over the open source version. Traceablility from model to code is a big feature and very well executed.

If you are looking for an MDA tool to quickly help you on your way and well enough set up to very probably be around and usefull in the years to come you should definately check out Acceleo.

MDA tools [posted Oct. 31st 2006 21:34]

So what happened over the last year, well a lot, and very little came out of my hands except the projects that I worked on for clients. Not the most interesting stuff.

However, my neighbour in the mean time came up with two MDA tools. The first, called MDA Workbench eventually made it into the open source world. You can find it at SourceForge.net. It is described as "Capgemini's MDA Workbench is a powerful, simple MDA tool implemented as an Eclipse plug-in. The MDA Workbench allows for creating (UML) model-to-code mappings, markings and lifecycle management from model to code. Proven in very large and small projects.

As if that was not enough Ron went on and created AmplifyMDA. This MDA tool has the tagline "Amplify MDA is an open source Eclipse-based IDE that enables the generation of software components from high-level (usually UML) models. Components can be generated for any programming language (Java, Ruby, HTML, PHP, ?)".

Please do check both of these tools out. A lot of thought went into them and they have proven to be very pragmatic and usefull. And they proof once again that life's not about doing projects that customer pay for but about things that one feels passionate about. I can only say I am humbled by what Ron managed to do in the last year and I feel lucky he is willing to go and have a beer with me once in a while ;-).

Was it over a year ago [posted Oct. 31st 2006 19:55]

Wohw, they say time flies when your having fun ad that time goes faster the older you get, but I didn't know I was having this much fun nor that I was so old.....

Talking about old, my sister has her birthday today so Happy Birthday to her! Will be back after I call her and write some more. Glad to see everything stll working and hope there are still some people out there reading this. If so, thanks for hanging in there ;-).

Beam me up... [posted Oct. 5th 2005 23:45]

I recently read an article by Scott Ambler entitled The roadmap to agile MDA. Alas, when I just looked it up I found out it was written in 2004, which makes this response somewhat less meaningfull.

I thnk Scott has some good points when it comes to disadvantages of MDA but my main issue with this article is the fact that it is relatively easy to criticise for instance the fact that UML does not have tools to support it as good as modern IDE's and knowledge of UML being less widespread than that of Java. IDE's have been around a hell of lot longer than UML Modelling tools and there has been a lot more competition. And there will probably allways be more people that understand less abstract languages than those that use the more abstract ones.

But that is precisely the point where I don't quite understand Scott, aiming for more abstraction seems like the thing even or maybe exactly the Agile advocates should go for. I don't think code like Java or the like are that agile so why make it the basis.

The problem with people affiliating themselves too much with movements that have a commercial side to them (like Agile, but also UML, RUP and so on) is that one can never quite trust their opinion, as they might incorporate just a little commercial interest. Does this mean I wouldn't mix the two, I like to think so at least, and at the moment I know so. Yes that means this blog is far from hitting it big I'm affraid ;-)

Taking it one step further [posted Oct. 5th 2005 23:16]

The fact that Java source and comment is used in UML - Java roundtrip tools as more or less interchangeable things is completely in line with the OMG MOF model whre UML and Java are both a M2 level definition. This means, if I'm not mistaken that one could use Java as a basis for code generation instead of UML.

This would be good news since UML is still very bothersome when entering large amounts of information. At least I have found very few UML modelling tools if any at all where one could enter information as effectively as in an IDE. I had good hopes for HUTN (Human Usable UML) but I agree with my neighbour that it probaby is easier to use a syntaxt one is familiar with.

Mapping Java to UML instead of the other way around seems a problem, but one probably doesn't need to be able to express all UML features using Java to end up with a powerfull basis for codegeneration based on MDA principles.

These are exciting times indeed.

Thursday, November 20, 2008

Gone but maybe not completely [posted Oct. 5th 2005 22:57]

Don't you just hate it when you think you have a good idea and Google tells you there have been quite a number of people that already had the idea a long time ago...

When I was recently pondering the usefulness of models the thought occured to me that it would be not so difficult to generate a model repository from Java source code in a manner like JavaDoc but more advanced or enhanced. This idea as I suggested and expected was realised by others such as Compuware's JavaDoc enhanced with UML models.

Taking it one step further; all roudtrip UML-Java tools offer even more.

An interesting fact of course and completely in line with current development in MDA/code generation tools, ok, I never said it was a revolutionary idea ;-)

Lost in language [posted Aug. 15th 2005 22:36]

Just in case one is tempted to think nerds speak only computer, there are other languages that inspire nerds.

It's great to see people lose themselves in languages. Especially in an age where people seem to stop bothering formulating anything properly, never mind checking spelling.

I remember someone mentioning his amazement at this phenomenon on technical fora on slashdot (can't find the exact article). He thought it strange since developers (did he think slashdot is only frequented by people capable of producing code? probably a slight over estimation) have to formulate precisely in order to specify or code functionality. He was flamed mercilessly by people seemingly proud of their own inabilities.

Maybe this is an indication that most people can't or do not want to formulate precise even when specifying or coding. Could this be a reason for the trouble in IT (poor quality, delays)? Hmmm, do I feel another reason for heightened levels of abstraction and meta programming coming up?

Next model [posted Aug. 15th 2005 21:36]

Slashdot had an item about next programming models. It's a nice article but I'm surprised at the "next" programming models Simeon Simeonov comes up with after his introduction. In his introduction he indeed talks about programming models and then talks about two software architectures and calls them programming models.

Certainly from his introduction I would have expected something more along the lines of AOP, generative programming or meta programming. Alas, maybe he had those for the last few years and felt something new was needed.

I think I will stick to what my neighbour and I see as the next programming model.

Have cycles [posted Aug. 15th 2005 21:19]

Some time ago Grady Booch (I seriously have to do something about my appearence if I want to make it big in IT...) wrote an article named Got cylces about grid computing. Or rather about grid.org or Folding@Home and their effort to make use of idle cycles of computers. Seti at home is the popular example of this technology.

This technology has been adopted by IBM recently and that's probably why mr. Booch mentions it, apart from the fact that he probably likes to support this good cause.

United Devices has been active for more than 5 years, I have been running the Folding@Home (and the UD agent) for at least 5 years on my own computers and that of the projects I worke on. Usually a short introduction to the fact that this beautifull small application turns your idle cycles into usefull resources used for cancer research is enough to have collegues run it aswell.

So if you want to do good by just sitting there behind your PC, download the program, install and with less than minute you'll have yourself one of the coolest screensavers around (that's thrown in for free).

Have you done your good deed for today

UML- and UML+ [posted July 15th 2005 02:02]

Recently Scott Ambler and the people from agilemodeling have opened a wiki called OpenUML. Their aim is to gather ideas to define usefull extensions or limitations to UML or define DSL's to enable modelling better than UML facilitates at the moment.

Let's hope our wiki will have some ideas about that aswell. Which remainds me I should not only write blog entries.

Hmmm, I'll write my 500 lines; "All blog and no wiki makes MTF a dull site"

Won't choose [posted July 15th 2005 01:27]

I don't know why but I really don't like conflict. It's not that I can't fend for myself as some of my friends and collegues will confirm. I just don't like the idea of trying to argue a point knowing that winning an argument doesn't mean you're right. And usually taking a side on subjects in IT means that you'll end up in numerous arguments about the merrits of things that are probably only distantly related to the hard of the matter. Particularly when the subject has taken on religious proportions. Take MDA vs DSL or rather Java vs .Net.

I see or think I see a difference between how a number of Java people I know seem to think and work differently than a number of .Net people I know. I feel comfortable or seem to support one of those groups most of the time but the number of times that the other groups seems to have the better ideas is large enough for me not to want to choose sides. It's like I really think slashdot is a cool site but when it turns out sometimes how incredibly dumb and unmannered the average slashdotter seems to be I turn to tweakers with ease. Or even though I admire what Apple does when I see how important the persona of its CEO is and how some of Apples consumers follow him like sheep I cannot decide to buy one of their products.

Maybe I like to think that I don't choose sides because I see the good and bad of both of them. One could say that great men changed the world because they chose something, believed in it and stuck with it. That probably makes me not a great man. That probably is why, when I get home, I change into the non conformist uniform; black. Amongst other reasons because it makes me less visible. If your not a great man you can only aspire to have a great mind. So I avoid light t-shirts to start with.

It's not the labels [posted July 15th 2005 01:27]

When I mentioned the religious war that might break out about MDA vs DSL this actually gives the essence of these kinds of differences. The difference is not in those terms or the technical content they stand for but in the people that get behind them.

It is possible to create a DSL with MDA. There are a number of languages based on MOF the OMG keeps reminding us, like UML but also Corba and the CWM. These can be referred to as DSL's. If those examples seem to generic in nature to consider them as DSL I'm sure a short introduction into MDA wil convince anyone that contructing a DSL using MDA is possible. And of course it is possible and probably the most sensible choise to base DSL solutions on a metamodel that combines and relates the different DSL's. So the only difference between your avarage MDA or DSL solutions is whether the metamodel is MOF (open) or that of a vendor and thus perhaps proprietary. We'll probably see a lot of time being spend on these subjects without it resulting in anything that touches upon this subject.

Maybe its best to stick to the as for now still academic group of the generative programming people with Krzysztof Czarnecki as one of its exponents. They include almost every modern subject in IT on their stride towards generating software. And as long as they write great books about it that's just fine with me.

Sleepless in Maarssen [posted July 15th 2005 01:26]

Research in South Africa has shown that to break sleeplessness one should get out of bed after 10 minutes of staying awake and do something boring. Well I got out of bed after three hours of tossing and turning and decided to write, hmmm, I guess I won't beat my insomnia any time soon ;-).

It's not the labels [posted July 15th 2005 01:27]

When I mentioned the religious war that might break out about MDA vs DSL this actually gives the essence of these kinds of differences. The difference is not in those terms or the technical content they stand for but in the people that get behind them.

It is possible to create a DSL with MDA. There are a number of languages based on MOF the OMG keeps reminding us, like UML but also Corba and the CWM. These can be referred to as DSL's. If those examples seem to generic in nature to consider them as DSL I'm sure a short introduction into MDA wil convince anyone that contructing a DSL using MDA is possible. And of course it is possible and probably the most sensible choise to base DSL solutions on a metamodel that combines and relates the different DSL's. So the only difference between your avarage MDA or DSL solutions is whether the metamodel is MOF (open) or that of a vendor and thus perhaps proprietary. We'll probably see a lot of time being spend on these subjects without it resulting in anything that touches upon this subject.

Maybe its best to stick to the as for now still academic group of the generative programming people with Krzysztof Czarnecki as one of its exponents. They include almost every modern subject in IT on their stride towards generating software. And as long as they write great books about it that's just fine with me.

Holy war [posted July 5th 2005 23:28]

For the first months after MDA came into my life I was completely content to know that I had seen the future and it will be. Recently I realised that one of the reasons that I felt so good about MDA was that it seemed so undisputed. Something you have just gotten to know usually is because you simply haven't gotten to that part of the complete picture. With MDA I had a naive feeling though that this was so new and improved it would be years before anything would touch it.

Well alas, it did not take long before terms like generative programming and DSL started to apear on my horizon. It probably was just pure coincidence that I bumped into MDA first since all of these techniques have been around for quite some years. And they have lived along side each other peacefully for about the same amount of time. However, I'm getting the feeling that just as with Java and .NET as one of the most recent examples MDA and DSL will be getting into a religious battle before long.

This usually soils the joy this kind of great technologies have for me. But maybe it is one of the reasons why both MDA and DSL will evolve faster than expected in the coming years. As the great warriors of holy wars of the past IBM and Microsoft again seem to be taking oposing sides this battle is not going to be over soon.

Phew [posted July 5th 2005 22:50]

It's a good thing nobody reads this, judging by the fact that my neighbour was asked when he was going to post again after just a weeks silence, I have quite a long way to go (yes no-body complained that I had a break of more than two weeks). At least I can blame my ADSL provider for giving me cold turkey for much longer than I care to remember. And yes internet feels much better when you went without for a while, but not enough to justify ever having to go without again ;-).

Well, let's hope I can use my lunch breaks for better things than stuff my face ;-).

Basic types go home [posted June 10th 2005 15:49]

As we did see at least in UML 2 there seems an equal treatment of associations and attributes. But why do we need the difference between composites and attributes anyway? They will never be treated comletely equal because you can name the two sides of an association and only name and attribute ones.

Why do we need to make the distinction between a composition and an attribute? One reasons that springs to mind is the much less cluttered class diagrams one gets using attributes. This however is just a way of representing a model visually. I can not let that one count.

The only reason I can think of is the fact that you can not have a composite association to basic types. Ehm, so why did we need those again? There are quite a number of OO languages that do without them. Is it a coincidence that these languages also have a realy elegant feel to them (Small Talk to name but one, and did I mention Ruby, getting to know that one, too little time though).

I guess one does not have to use the basic types, hmmm, I shall give it a serious try next modelling job I take on.

Ice cream [posted June 10th 2005 15:39]

Well just when I thought Enterprise Architect has implemented UML 2.0 I find that M. Fowler states that the "frozen" property has been dropped in Class Diagrams and that same property can still be assigned to associations in afore mentioned tool.

Hmmm, who's wrong or did M. Fowler not mean frozen on association? Another one on my list. I'll get back on that.

I scream, you scream, we all scream for ...

It's a thin line between... [posted June 10th 2005 15:35]

Ok Ok, so I was a bit unfair to UML earlier. UML2.0 does have the concept of template classes (actually I noticed it in a UML2.0 book, was it part of earlier UML versions ;-) ), hey how modern do you want to get ;-). Maybe I'm a bit harsh on UML, I've been using it for years and also don't realy have a better alternative that I can present to you here. I wich I had though because I'm quite certain it's very well possible. The idea of DSL's is one that strikes me as being a good one,

Come to speak of the improvements that UML 2.0 brings, apart form such great things like the closer union between MOF and UML. What to think of multiplicity on parameters and variables. If I may cite UML distilled by M. Fowler, for attributes the syntax is;
visibility name : type multiplicity = default {property-string} For multiplicity he states "I'll explain multiplicity on page 38" (may I just say I do not like the first person style in technical books...). When we look on page 38 we find a text about multiplicity that only fully seems to complie to associations and not attibutes. However when I take a look in Enterprise Architect by Sparx Systems (tool evaluation will folow), a great UML modelling tool for very little money (hey I'm Dutch, sorry) it turns out all multiplicity properties of associations are also available for attributes. Great! Now we do have a feature that to me everybody that used UML for something more than UML 101 has been waiting for for years. What worries me a bit is that it seems that multiplicity is further only supported in the return value of a method. And that has to take the shape of an array. Ehm. And what about parameters? Fowler seems nothing to say about that alas. Neither about the mening of aggregations. Alas agian. Maybe a little less distilled would be better next time. Does one really have to read OMG's UML superstructure document to get to know the answers to these questions? Are they that detailed/irrelevant?

When I find out the answers you can guess where I will let you known ;-)

Saturday, November 15, 2008

What good is UML [posted June 8th 2005 22:30]

One of the things I want to get into in this blog is the quality/usefullness of UML for (certain) modelling purposes.

One of the things that we all seem to discover when working with UML is that it has so little semantics that you end up defining a lot of it for each project you do. One could argue this is a powerfull feature, I think it is a weakness. It makes an argument for DSL. This could lead us straight to a discussion of Generative Programming vs MDA, it is way too early for that, first I need to get some other stuff of my chest.

One of the things that strikes me is the similarity between Java and UML. It probably isn't a coincidence that they grew up together in the mid nineties. The fact that a lot of tools that offer UML combined with coding facilities offer at least Java as a coding/generated language makes for a bias of course. The fact that both have interfaces and classes, and the same basic types (more about that in a later blog entry) might be an indication. OK UML supports multiple inheritence and C++ also has these basic types. So maybe it's more accurate to state that C++ and Java together fathered the UML syntax. Not surprising because in the mid eighties the race wasn't run. It could have been won by C++ just as easily (at least that was the general opinion then, which noone will now admit to ever having of course...). However the point I'm trying to make is not so much where UML came from but that it seems to be lagging behind on even Java and C++ today, never mind other developments (Ruby, AOP, metaprogramming, ... interestingly these have been around longer or about as long as Java and UML).

Is it wise to specify in a language that seems to have missed a great deal of the important inovations that happen around us today in the wold of software devolpment?

Saturday, November 8, 2008


Meta Thought Facility has been riunning for some years at a provider of my choice which made it possible for me to have full control but also meant I had to do all the system maintenance on the blogging software and such.

Maybe it's because I'm in software and have to maintain/tweak/install software more than I like to during the day that I just cannot be bothered to do that stuff at night and enjoy it. Worse I dislike it so much it was getting in my way of blogging for a long time since my blog had to be stopped for security reasons (the software I used needed an update really bad).

Anyway I decided to ive blogspot/blogger a try since I hope it means I have to do very little in terms of maintenance. We'll see what this brings. I will move my history of blogging to this place soon.

Hope I will pick up the blog soon and with higher frequency than before, :bob