Tuesday, January 31, 2006

openArchitectureWare 4 RC1 available

The openArchitectureWare team is proud to announce the availability of openArchitectureWare 4 RC1. It comes with many new features and makes development of MDSD tools a whole lot easier. The rewritten and extended documentation should also make the tool much easier to learn. You can download it from the download page

The development of V4 was really a lot of work, but the team really did a great job. Most of the core and the IDE support was rewritten, several new components have been build and the new version is also much easier to understand.

Have fun, and let me know what you think about it!
Sunday, January 29, 2006

Software Engineering Radio is on the Air!

A while ago, I tried to find a good podcast on software engineering. I couldn't find any. So I decided to start my own one. I invited a number of people to join in (you might know some of them if you take a look at se-radio.net), and the team has now managed to come up with the first couple of episodes as well as a neat web site. It was really cool how enthusiastically everybody joined in and built something that is going to be really cool. Thanks to all of them!

Software Engineering Radio is a regular podcast covering topics interesting to professional software developers. The show is produced by a group of experienced software developers and architects. Episodes include coverage of important topics such as programming language concepts, patterns, middleware, enterprise architecture, as well as topics from the area of development process and project organization. From time to time, we will have interviews with interesting people from the software development field.

The show is hosted at se-radio.net and you can get the feed from se-radio.net/rss
Saturday, January 28, 2006

openArchitectureWare now hosted on Eclipse.org

Right in time for release 4 of openArchitectureWare (RC 1 is scheduled for Feb 1, 2006) we have moved our project to Eclipse.org! While the oAW 3 code will stay at Sourceforge, development and release of version 4 now happens under the umbrella of the Eclipse GMT project. GMT is a composite project that contains a number of useful projects in the MDD space, among others, the well-known ATL transformation engine. Please go to www.eclipse.org/gmt/oaw
to see our home on Eclipse.org.
Thursday, January 26, 2006

129 Pre-Orders :-)

As you know, Tom an d I are working on the english translation of our book on model-driven development. It is currently in the copyediting phase, done by the really great copyeditor Steve Rickaby. He has already copyedited my two previous english books as well as all of the rest of the Wiley pattern series. And the best thing is: we already have 129 preorders for the book... so it seems like this could become a success!
Tuesday, January 24, 2006

openArchitectureWare 4 Demo Slideshow

A really cool slideshow that shows how to use oAW 4 ist available from Sven's Website.
Monday, January 23, 2006

Creating Flash Slideshows

Ever wondered how to create small flash slideshows that show screenshots and explaning text? Wink is a freeware tool that does just that.

openArchitectureWare 4 Beta 1

As of today, the beta1 release of openArchitectureWare 4 is available from the sourceforge download page

The same procedure as every year: OOP 2006 conference

Last week I had been at the OOP conference in Munich. As always, it was a lot of un, meeting many friends and colleagues. It's like a "family meeting" at the beginning of a new year :-)

My own talks have been received quite well, feedback was very good.

I have been to a number of interesting talks. Actually, I have been to more talks this year than in the years before. I'd like to mention a couple of especially interesting ones. I have been to Kai Tödter's J2ME Action Game Development session. That was really funny, and developing these games seems quite straight forward. Another interesting session was Steffen Schaefer's presentation on embedded, distributed, pervasive computing, discussing technologies such as RFID, Zigbee and mobile satellite phones. Also, Axel Uhl's talk on MDSD, MOF and OCL was very interesting. It was cool to get some ideas about how SAP approaches the MDSD topic. Also, Axel has a very good (and sometimes) funny way of presenting, so if you ever have a chance to see a talk of his, go there. It was interesting to see that all the other MDSD/MDA-Speakers have been to that talk, too :-)

The biggest hype this year was - guess? - SOA. I have tried to go to several talks but had a really hard time staying there. I really have problems in seeing what differentiates SOA from well-done component architectures. Is it XML based data description? Web-Serivces for communication? Asynchronous communication? Or even the magic word "business driven"? All of the above? Don't know, and nobody can answer this question ... I think the upcoming SCA standard changes this, but there was no talk about this topic. Maybe I'll have to submit one next year :-)
Friday, January 13, 2006

Some Thoughts on Dependiencies and Dependency Injection

Controlling, or managing dependencies has been a problem for a long time in all but the most trivial software systems. Factories, Naming Systems have been used for a long time, recently, dependency injection has received a lot of hype.

But what is the essential "pattern" behind dependency injection? What is really essential? Is it the setter operation that passes in the resources? Hardly. In this post I want to elaborate a bit on this topic.

For dependency management, it is essential that a) a module declares explicitly, which resources it needs to access, b) has a way to actually access them, c) an external entity makes those resources available to the module, and d) the module cannot access any other, non-declared resources. And e), you Often, want some flexibility about the resources at confirguration time, e.g. the module only declared the required resource types whereas the actual instances of those types are configured into the system at startup.

Item a) is important, so that analysis tools can find out which dependencies exist between modules. b) is necessary, otherwise the module cannot work. a) basically requires d), because if a module can have additional dependencies than analyzing the declared resources does not really help you much. And finally, c) is necessary to make a) and b) work, and to enable the distinction between resource types and resources described in e).

So what about the classical dependency injection scheme where you use a setter operation on the module for each resource? The setter serves as a way to advertise the required resources (introspection can be used to find out about the setters and the required resources described by them). The setters also serve as a way to make the resources available to the module, under the control of an external entity that "wires" the module to its resources. Assuming there is no "backdoor", such as a global variable, in the system there is no way for a module to access resources not declared by the setter.

So, dependency injection is a good way to manage dependencies. We knew that before, however. So, are there any other, not-so-hype means of managing dependencies? Or, asked the other way round: Maybe the "old" schemes aren't that bad, after all. Let's evaluate.

A factory per se does not implement the requirements outlined above since it is typically application-global and not module-local. Also, the module does not need to declare its required resources, since it can get everything "stored" in the factory by querying it. You have basically the same issues with a naming service.

Now enter model-driven development. If, for example, you specify your modules in a model and that model also includes the required resources (e.g. using stereotyped UML class diagrams, or whatever), you can generate from that model various strategies to make the resources available to the module implementation. You can generate a base class that has the DI-setters, just as above. You can also generate a custom factory. It will have a getter for each "legal" resource. Such generated, module-specific factories are often called contexts. You can also let the module implementation access a naming system to access resources, provided that the naming system (or at least, the specific modules' view on it) only contains the "legal" resources. Of course, in these scenarious, you would perform dependency analysis on the model level.

So, what does this tell us? It's always good to look behind the scenes, read: at the patterns, and not be stuck into thinking that "using setters or constructor parameters is the only way to get dependencies under control".
Monday, January 09, 2006

OOP 2006 Slides online

A week from now, the 2006 edition of the OOP conference will take place in Munich, Germany. I have three sessions at the conference, the slides for which are online at my conferences page. Among them is a session with Doug Schmidt and Tom Stahl called Model-Driven Development - State of the Art. We have compiled almost 300 slides for that session :-)

If you planned to come to my talk at the conference, you are of course not allowed to download the slides - would spoil the "experience" :-)
Saturday, January 07, 2006

Semantic Web??

You may remember a while ago, when everybody was talking about where the web might go as a kind of "next step" after the web we have all come to know. It was more or less generally agreed upon that the web will become "machine usable", i.e. the web content will become "semantic". What people meant by saying that was, that the information contained in the web pages would be structured in ways that would convey the meaning of the pages to machines, automating information processing. Terms like ontologies and taxonomies were heavily used.

Now, today we are still far away from that situation. In fact, the term Web 2.0 has been coined to denote the next generation web technology. Nobody really knows what that means specifically, however, a couple of things are consistenly mentioned in the respective forums and discussions. This includes AJAX, rich clients (Google Earth, for example), involvement of the masses (e.g. del.icio.us), "grass roots" (i.e. web logs).

Semantic Web? Nowhere to be seen. Instead of making the web more semantically rich, search engines and other tools are using computing power and clever algorithms to extract information from the web as it is (e.g. Google can translate from one language to another without understanding the language, just based on huge huge amounts of text - and a couple of clever algorithms). The only "semantics" that we put into the web today comes in the form of tags, e.g. in del.icio.us or in flickr.

So what does this tell us (and why do I tell you about it)? It think it is interesting to see that things often don't come as the "experts" predict. And also that the web has become a real mass medium, where sophisticated things like ontologies, RDF and XML only play a nice role.
Thursday, January 05, 2006

Off Topic: Security Now! Podcast

I have to do some advertisement for a really good podcast. In Security Now! Steve Gibson and Leo Laporte talk about PC security. It is sometimes very basic, sometimes quite advanced. Even computer-savvy people like me can learn a lot in those podcasts. It is worth listening also from another perspective: Steve explains complex technical topics in an easy to understand way without powerpoints and diagrams for support. And he does that really well. If only there were more educational podcasts like that. I made it a habit of going for a walk, preferrable at night, and listening to (and concentrating on) the episodes. So Security Now! is not just healthy for my PC, it's also healthy for me :-)

Give it a try here!
Monday, January 02, 2006

Classification of Model Transformation Approaches

Krzysztof Czarnecki and Simon Helsen have written a really nice paper that classifies the various approaches to model transformations (model-2-model and model-2-text). It provides a really nice overview over the various approaches for transformations - a must read. The authors are currently working on a significantly updated version, so watch this space.

Blogtools: Java2HTML

Cedric Beust points to a very nice tool called Java2HTML that is not just useful for blogging, but *also* useful for blogging. It formats you Java source code to colorful HTML ... you can see the effect in one of my previous posts that contains a lot of source code (just click onto the Java links). You can get the tool from here.

back to voelter.de

This is Markus Voelter's Blog. It is not intended as a replacement for my regular web site, but rather as a companion that contains ideas, thoughts and loose ends.

December 2005 / January 2006 / February 2006 / March 2006 / April 2006 / May 2006 / June 2006 / July 2006 / August 2006 / September 2006 / October 2006 / November 2006 / December 2006 / February 2007 / March 2007 / April 2007 / May 2007 / June 2007 / July 2007 / September 2007 / October 2007 / November 2007 / December 2007 / January 2008 / February 2008 / March 2008 / April 2008 / May 2008 / June 2008 / July 2008 / August 2008 / September 2008 / October 2008 / November 2008 / December 2008 / January 2009 / February 2009 / March 2009 / April 2009 / May 2009 / June 2009 / July 2009 / August 2009 / September 2009 / October 2009 / November 2009 / December 2009 / January 2010 / February 2010 / April 2010 / May 2010 / June 2010 / July 2010 / August 2010 / September 2010 / October 2010 / November 2010 / December 2010 / January 2011 / March 2011 / April 2011 / May 2011 / June 2011 / July 2011 / October 2011 / November 2011 / December 2011 / January 2012 / February 2012 / October 2012 / January 2013 /

You can get an atom feed for this blog.