innoQ

Hartmut's BoxHartmut Wilms’s Weblog


Main | Februar 2005 »

24.01.05

Generic Implementation Interface

Christian Weyer asks for additions to the WSCF wishlist. This made me think about parameter and return type handling in ASP.NET Web Services …

You can help us improve WSCF, now

Take a look here if you work with WSCF and just think: “well, it’s nice, but…”.
We want to hear your ‘but’. Thanks.

I haven’t had that much time to investigate WSCF 0.4, but I think the tool generates code in a single way, only, i.e. the way the tool (or the author) sees fit. It generates parameter classes which map to the types defined in the XSD file. Although this approach is recommended in many ASP.NET and Contract First forums, I think it is still one step from really being “losely coupled”. Why? Because your implementation is bound to the types in your service description/interface. If the interface changes chances are that you’ll have to change the implementation (of the client), too. This would destroy the most important reason for SOA being independence. Service-oriented architecture is all about reducing dependencies as much as possible.

In order to achieve this independence concerning parameters and return types the implementation should use XMLElement and XPath to access and deliver parameters, return types respectively. If the service changes (non-breaking changes!) and the client isn’t interested in the new additional features, it still would work, because all necessary data is fetched from the XML tree via XPath queries. This approach might seem odd, because C# is a strongly typed language and string queries aren’t really typed … But service description aren’t C# typed either. They are typed by the XSD/WSDL which should be the only service and data definition! There are some (few) sources for this approach:

I like to call this approach the “generic implementation interface”, because the implementation expects an “untyped” XMLNode, which is accessed in a generic way by XPath queries. The opposite is the concrete or typed implementation interface. Both approaches are valid. Sometimes it’s just more effective to generate typed parameters and the corresponding proxies. But in most cases the generic approach largely adds to the losely coupled idea. I still have to investigate how to implement this with ASP.NET Web Services. Maybe there are some serious drawbacks. The idea is to define the fully typed (XSD) WSDL and to use XMLElement or XMLNode parameters and return types in the implementation.

Therefore my most wanted WSCF feature is to make the generation process configurable, perhaps by introducing a template based approach. I know this is much asked for, but you asked, didn’t you ;-) ?

Posted by Hartmut Wilms at 10:51 | Comments (1)

21.01.05

Sony Ericsson P910

After two weeks of using my new mobile phone I decided to write a brief summary of my experiences. This is not an exhaustive review but rather my first impressions after using the phone for some time. I originally opted for a T-Mobile MDA compact, but Vodafone Germany does not offer the MDA compact or any equivalent. Thus I chose the Sony Ericsson P910i …

Sony Ericsson P910(i)

The specs can be found here.

(1) Size

The exact sizes are given on Sony Ericsson’s web site. In my opinion the SE P910 is just big enough to be usable as a smartphone (calendar, contacts, web browser) and small enough to fit in most of your pockets. In fact it’s
form factor is perfect for an organizer (PDA) combined with a mobile phone.

(2) Handling

The handling of the SE P910 is very good. The tiny keyboard which seems to be of no use at first became my preferred input method. To be honest I’m very slow on the numeric pad even with T9 switched on. The jog dial is superb! I can’t think of any better device for navigation on a smartphone. It’s better than any other pad I’ve ever seen and used on a mobile phone/PDA.

(3) Display

The display quality is very good when used inside. Outside it’s much better than for instance the SE T610 which I owned before. The screen seems to be quite scratch resistant. I don’t use a screen protector.

(4) Camera

I’ve never used the camera, because it’s not important for me…

(5) Software & phone

That’s the most important part. I looked for a smartphone whose telephone features and agenda/contact features play well together. I found it. The best thing is that everything works as expected. When browsing the internet via GPRS you may receive any incoming call. After the connection is closed the phone switches right back to the browser and you may continue browsing. The same is true for the bluetooth features or any application. Although this may seem to be the least you should expect, other devices don’t manage to cope with these use cases.

(6) Performance

Well, …, I used a Dell Axim with a 400 MHz processor before. I have to admit that the Axim performs better, in some cases much better. But, the P910i’s performance is O.K. Sometimes it takes a (very) little while until the calendar application switches to the edit entry form for instance. But these latency times have never been really annoying, though.

(7) Memory, Standby time,…

The standby and talk times are very good. Although I’m not a power user, I use the PDA features a lot and I talk about 45 min/day. Power lasts for approx. three days. That’s according to my usage, you will have to check the specs for any (honest?) details.

The phone is well equipped concerning memory. If you want to listen to some mp3 songs or store some other huge fancy stuff, you can extend the memory up to 1GB by inserting a Memory Stick Pro Duo.

(8) Applications

I won’t mention the built-in applications nor the contents of the accompanying CD. But I will list the 3rd party software I’ve tested and bought so far:

“Tracker is a real and fully customizable desktop application. With the special skin system it looks and acts exactly like you want, offering you hundreds of unique functions and possibilities transforming your device from a simple organizer to a powerful and great looking handheld computer.” Fantastic today view! The only agenda/today application which shows the next X days in one view (without hiding the date - great Agendus feature :-( ).

Tracker users may use also use TaskMan (task manager) and FileMan (file manager) for free. Two thumbs up!

This tool makes up for the missing profiles in Symbian UIQ. Very, very good. A must!

This is a very good application for storing annual events. I can’t think of any reason for not allowing annual whole day events. Sony or Symbian can … Handy Dates is a good substitute.

(9) Vodafone branding

Vodafone seems to have learned after the SE T610 disaster. No Vodafone logo on the phone, no Vodafone skin, only one “Vodafone Services” applications. Maybe I’m blind or dumb, but there isn’t any annoying Vodafone branding …

There are some nice reviews which you should take a look at for further information:

http://www.mobile-review.com/review/sonyericsson-p910-en.shtml

http://www.mobileburn.com/review.jsp?Page=1&Id=1001

Posted by Hartmut Wilms at 15:21

07.01.05

UML, OOAD and MDD

In addition to my previous entry, I’d like to comment on Jack Greenfield’s view of UML and it’s shortcomings in the field of Model-Driven-Development (MDD). Jack describes UML as a useful means of object oriented analysis and design here and here. He says that UML is not the appropriate tool for MDD and that it’s “focus is primarily on creating documentation that describes system structure or behavior.”.

My question is, what are analysis and design all about in Jack’s view? In my opinion software development is a series of model transformations. Parts of this transformation process can be automated and some parts have to be manually transformed. What are models anyway? Models are an individual’s view of real objects or processes. In order to cope with the complexity of reality models reduce the sum of aspects to those which are relevant for the context at hand.

The first model which comes to our mind is the natural language, at least I hope every developer’s brain works that way (funny, imagining Jack or Grady thinking in DSLs or UML diagrams ;-)). That’s what I would call analysis. Some parts of the design model may also be described in a natural language. Thus analysis and design are about creating models, aren’t they. Granted, these models are also suitable for documentation purposes.

The next step in the process is transforming your natural language model into a UML diagram (or a DSL). Why should I do this? Just write down your analysis requirements into plain code. We might argue about that, but I think that’s out of the scope of this blog entry … To answer the question: Model transformations are a way of reducing complexity and thereby formalizing models and at the same time loosing information. By formalizing we manage to remove ambiguities which is important for developing a consistent software. But we also lose information. This information might be added by for instance OCL constraints or other formalisms. I think that they are better gathered and manually added later on in the development/transformation process.

Additional transformation steps may be added before generating or manually implementing code. For instance an analysis model is transformed/formalized by a design model.

The last noteworthy step is to generate code from your (UML / DSL) models and fill in the missing information by manually implementing business rules which would have been much to difficult or even impossible to express in the UML notation, i.e. OCL. Your code is then transformed into byte code, and eventually into a sequence of 1000101001001 …

O.K. but UML still is not suitable for MDD, but DSLs are! First, I hope that I managed to explain why UML diagrams are models which may be transformed into code (-> MDD) and not a mere means of documentation. Simply put analysis and design contribute to implementing a software system as well as documenting the system! What is the difference between UML and DSLs? UML as pointed out in many other blog entries, e.g. by Stefan here, is a flexible instance of MOF which can be used in great variety of contexts. In addition UML can be customized by UML profiles (stereotypes). The advantage of customizing UML in contrast to specifying a new instance of MOF is that many aspects of UML can be reused and don’t need to be defined again and again. It might also be easier to get used to different UML profiles, all based on UML, than to familiarize with totally different DSLs. In the end it depends on the user. Some may prefer a more flexible meta model, which lacks some specific traits of the domain, others want to use a model which is as close to the domain as possible.

Posted by Hartmut Wilms at 18:15

05.01.05

UML vs. DSLs

Don Box is commenting on the ongoing debate between the MDA camp and the Software Factory/DSL camp.

I’m not baffled “why the UML camp puts so much emphasis on UML relative to MOF and XMI”. It’s in the name ;-). Alright, “MDA camp” might have been the better term. However, to my mind this is maybe the bottom line of Don’s critique. Why do the MDA people put so much stress on UML? The first thing I could think of is: because this is what every developer/architect will work with each day. UML is the “UI” of the MDA process, it is used for building models!

Is this a good thing? It depends … I fully agree with Don’s opinion about MOF and XMI. The reason why UML is so important is its support and its importance in nearly every tool set. I don’t know of any tool on a MOF basis save the EMF editors. In such modeling tools UML would just be one of the possible “visualizations”, syntax respectively, for models. In this regard MOF is the meta DSL and Microsoft’s DSL Tools are a tool set after my fancy. Well, at least they are a first approach. Even text based model languages would be possible and in some regard even preferable.

So, where is the difference? UML Stereotypes are very similar to DSLs and MOF might have been the basis for DSLs. The only notable difference might be that DSLs resemble the domain a bit more, i.e. it is easier to achieve a resemblance with DSLs and the right (meta) modeling tool.

The argument that MOF maybe too complicated for the typical developer is pointless. I think the typical developer would normally not define a DSL either. DSLs and stereotypes are defined by architects or domain experts with a profound knowledge of models. Such people will be able to cope with MOF as well. The Microsoft approach might look a bit easier, but this is merely achieved by tool support.

As .NET stimulated the sluggish Java and J2EE community DSLs might encourage the MDA camp to think about new ways of improving tools and processes. I’m curious. How about you?

Posted by Hartmut Wilms at 17:22 | Comments (6)

About Hartmut and his box

A new year, a new job and a blog, at last. I’m still wondering, if this is a climax or a catacosmesis ;-). However, now seems to be as good a time to start blogging as any.

Who am I, anyway?

I’m a software developer and consultant focusing on software architectures and enterprise application development. Over the course of the last ten years, I’ve worked as a developer and architect in several Smalltalk and Java projects. Developing tons of classes for applications, frameworks and class libraries, drawing (UML) diagrams and analyzing requirements has been a lot of fun, especially running into the same ole difficulties and mistakes, which seem to be part of (almost) any software development project from the early days on until today ;-).

Thinking of the wonderful and great ideas and visions I had when I graduated, e.g. building tools that are seamlessly integrated and accompany the development team from analysis to maintenance, I have to admit to myself, that all technologies, paradigms and platforms still don’t do the job. That’s why I took a chance on service-oriented architectures, web services, code generation, MDA, Domain Specific Languages and also .NET in the last two years. Good luck!

Am I nuts?

Aren’t these at least partially competing and contradicting things? Do you really think SOA, MDA or any other hype could change anything?

At first, I’m rather sure I’m not nuts.

Second, I try to be as unbiased as possible concerning technologies and paradigms. I like to thing of complementing technologies or processes when it comes to Java and .NET or MDA and Software Factories/DSLs. Just take or combine the tools, which suits you best in a given context; whatever that context might be. At least try to gather as much information as needed in order to come to a reasonable opinion based on profound knowledge.

Finally SOA & Co. are no technical revolutions. They are processes, paradigms and guides, which have been known to software developers for some years. Now they are packed into a consistent ready to use “box”. And yes, I think they will help.

Apropos box, what’s in my box?

Recently I went up in the attic. I don’t remember what I originally sought, but I found a couple of dusty boxes. Curiously I peeked into one of them and discovered several treasures, which I totally forgot about. Back in my home office I sorted some articles about SOA and web services, which were pretty up to date, and I thought “Haven’t I read something similar a few minutes ago?”. Sometimes it’s surprising, funny and interesting to read old stuff again, especially when compared to todays opinions.

That’s the reason for naming this blog Hartmut’s box. I’m already looking forward to dig down to the bottom and grab some of the funny stuff I (hopefully) will have written in the coming years.

What will you and I find? As you might have guessed already, we will find all my thoughts about software architectures, paradigms, software development processes and all these wonderful new technologies, which I love to play with. Anything else? Sure, sometimes I will put in some thoughts on different things and treasures I found, too.

When will you find something new in my box? To be honest, I don’t know. I do care about the stuff I put in my boxes, therefore it may take some time until you find something new. But whenever I can spare some time, I will look around for anything worthy :-).

Enjoy!

Posted by Hartmut Wilms at 11:58 | Comments (2)