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 pageThe 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!
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
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.
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!
openArchitectureWare 4 Demo Slideshow
A really cool slideshow that shows how to use oAW 4 ist available from
Sven's Website.
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.
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 :-)
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".
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" :-)
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.
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!
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.