Consulting at Fiducia

I left Dortmund with ICE in direction Karlsruhe. Today and tomorrow I will be at Fiducia AG, the IT company for Volksbank, Union Investment, and other companies of Volksbank Group, to consult them on oAW. Fiducia evaluated last year different MDSD framworks and chose oAW as the one they will use now to support model driven development for their Horizon architecture. They are now starting a project with oAW, and therefore Mischa Hoechsmann (itemis Pforzheim) and I will support them. Fiducia is working with RSA 7, and their models are UML2 based. One challenge they have is that the code generator should integrate as seamless as possible in their IDE. The most part of our assignment Mischa will do. I have worked with Mischa at Bosch in Stuttgart before, he is a very skilled consultant, and so I am sure that we will do a real good job at Fiducia. Also I am happy to meet my contact persons at Fiducia again.

itemis publishes openArchitectureWare 4.3.1 distribution

Patrick Schönbach has announced the availability of the itemis openArchitectureWare 4.3.1  distribution. The reason why it lastet so long is that he had to build openArchitectureWare with Amalgam‘s build model. It was really much work to get the build running with all dependencies.

The itemis oAW 4.3.1 distribution is available for Windows, MacOSX Carbon and Linux GTK x86.

fit4oaw 1.0.0 released

Yesterday night I finished the work on fit4oaw release 1.0.0. This has been hard work in the last weeks, especially since I had to work in spare time for this project. My daytime job is already challenging and exhausting, and after 8-10 hours of work the additional work on fit4oaw began, often until deep in the night. For work on other projects, i.e. openArchitectureWare, M2T Xpand, EMFT MWE, Fornax etc. there was no time naturally.

fit4oaw screenshot

This is just the first release, there is many more work to do to make this project successful. Not only additional features, the current feature set is quite sufficient to be useful, also other tasks like documentation, PR, usage scenarios, examples have to be solved. I plan to document the main tasks into the project wiki. If you are willing to contribute then check this task list.

I am quite confident that this project will be a success and of great use in my projects in the future. I already managed to find first users within itemis who used the beta versions and gave valuable feedback. Therefore I thank Alexander Nittka, Marc Eilens, Michael Bädorf, Ingo Feltes and Heiko Behrens. Tomorrow I will have an interview with Hergen Oltmann, and then I will announce this release in our internal itemis podcast.

For my current project this project comes a bit late. It would have been of great use in the past weeks. We developed lots of extension functions, which are only tested by executing within our generation process. They weren’t documented enough and I would document and test them now with fit4oaw. Who knows, maybe my customer decides to extend my work for them and then I could have a chance to place this fine product in the project. I really think it would be of great use in mid-term. They would have to document all developed stuff properly anyway.

Download fit4oaw now and give it a try! Just unpack, start and run the Fit4oawDemo test suite. It is really easy!

Working on fit4oaw

In the last days I made huge progress in the development of my new open source project, fit4oaw. Most of it in my spare time when I was in the hotel in Frankfurt, but today and yesterday I spend some time from my regular working time on it. At itemis we have an open minded management, which let us invest some of our time for such activities. We call it “4+1”, means in average we have 1 day per week on our own, which is totally filled with my various open source developments.

This week I released the first beta version, which already is bundled as an out-of-the-box solution with all dependencies within. Just download, unpack, start and run the Fit4oawDemo tests. As I heard from colleagues it also worked for them and I get already positive feedback. This is really nice, and confirms me that I had the right idea.

After releasing the beta I realized that I have to change some fixtures again to make things even easier. The CallXtendFunction fixture will disappear and all will be done in the Expression fixture. To give you an impression how test cases for oAW Xtend functions and expressions look like:

fit4oaw Test Execution

Next week I meet with Hergen Oltmann to record our itemis internal podcast. Until then I want to release version 1.0.0. I’m quite confident that I will manage to release the first version and that it already matches many needs. And I spent time to set up the build process with Maven. Building a release package is just executing a Maven build.

However, I already have ideas for extensions and further colleagues addressed interesting ideas for extending the project after 1.0.0 already. I will talk with Andreas Mülder, he worked successfully with the Groovy EMF Builder, with which test models can easily be created. Until now I assume to load fixed models with fit4oaw. I hope we can integrate the EMF Builder into fixtures easily to create EMF and UML2 models on-the-fly for tests.

I’d like to thank Alexander Nittka, Marc Eilens and Michael Kloss for evaluating the project in this early stage. Their feedback was very valuable to see real requirements besides my own. For now I could only test the product for small examples, since I spent much time on the build process and those examples. I’m sure that in a greater context I will face some gaps I need to fill.

Further news is that I told Darius Jockel and Andre Neumann to use Fit4oaw to test development of the Fornax JavaBasic and Hibernate cartridges. And Carsten Oltmann will create a nice logo for this project soon!

Socket problem observations

In my previous post I reported that I had problem with FitNesse to open a socket. I made further observations. This is no problem with FitNesse itself, it seems to be more general. I looked at the FitNesse sources and extracted this small test class reproducing my problem:

package playground;

import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;

public class SocketTest {
public static void main(String[] args) throws IOException {
Socket socket = new Socket();
SocketAddress localaddress = new
InetSocketAddress(InetAddress.getLocalHost(),8888) ;
socket.bind(localaddress);
System.out.println(“Socket established #1”);
socket.close();

socket = new Socket(java.net.InetAddress.getLocalHost().getHostName(), 8888);
System.out.println(“Socket established #2”);
socket.close();
}
}

Of course I expect that I get both System outs, but for some reason the first succeeds, the second rans into a timeout.

java -cp bin playground.SocketTest
Socket established #1
Exception in thread “main” java.net.ConnectException: Operation timed out

What I have recognized in the meanwhile is that it has something to do with my UMTS modem connection. When I am online I sometimes (!) run into this problem, but when I disconnect then it succeeds.

Experience report about my current project at Deutsche Boerse on CG2009

My current customer, Deutsche Boerse in Frankfurt, allowed us to give an experience report about this project at the Code Generation 2009 conference in Cambridge. Heiko Behrens and I are currently working on the so-called new Global Trading System, where we support the team with knowledge and implementation for building code generators and tool chains build with openArchitectureWare and also their successor projects TMF, M2T, MWE. This project is really challenging, and I enjoy every day working with this high skilled and motivated team. The team members and deciders are convinced that they can benefit from code generation and that openArchitectureWare provides the best toolset for doing so. We were able to build a tool chain with several different kind of modeling frontends, all integrated with each other within Eclipse. For example, we use UML2 modeling with Magic Draw for the domain model and combine those models in an Xtext based editor for model enrichment. In MDA terms, the domain model would be the PIM, and it is really platform independent, and these Xtext models are the marks to add platform specific information. Further, we adapt the Fornax Hibernate and JavaBasic cartridges for the JPA layer, and provide model transformations for the adaption, so that we do not model with this platform specific profiles.

Heiko and I are confident that our talk is an interesting contribution to the conference. I am happy that our customer is open minded to talk about this project.

The abstract of this talk is:

Mastering differentiated MDSD requirements at Deutsche Boerse AG

Deutsche Boerse AG (www.deutsche-boerse.com) is developing a so-called global trading system, where Eclipse Modeling Technology is used in different parts. From diverse models C++, Java, Python adapters and different other artefacts are generated to build a mission-critical and highly scalable software system.

In this session we will present how openArchitectureWare helped us to build a tool chain that spans across different subprojects and connects existing modeling tools be they graphical, tabular or textual. In an international team we were able to build custom parts or re-use slightly adjusted community cartridges by applying AOP techniques to build M2M transformations, sophisticated editors as well as validation and server-side code generators.