How to do software architecture evaluation ?

I've gotten an assignment doing a software architecture evaluation without getting access to the code. The customer have chosen a platform and wants to know how the major software vendor that they are using, complies to this platform. That is - how can my customer utilize the software vendor's solution on the chosen J2EE platform.

I searched a bit on the internet and found a few resources Carnegie Mellon Software Engineering Institute. They have a sample chapter from the book Evaluation Software Architectures. They talk about doing a SAAM analysis (Software Architecture Analysis Method), but I'm a bit unsure how this will work with a software vendor who is a bit protectionist.

Since services seems to be THE hype word these days, I was thinking about a services focus on the architectural review. I'm going to try to stress the vendor by asking questions about:

- Deployment diagram
- Documentation of services (use case it supports, data input and output documentation and state changes as a result of the service)
- Backward compatibility policy (does it exist, is it predictable)
- Business separation from client/channel
- Layering within the solution
- Available tests
- Other reuse points (stored procedures, portlets++)

I'm also going to prepare a few scenarios which is relevant for my customer and try to evaluate the answers I get.

In the end the customer wants a matrix where we can do a cap analysis between where we want the vendor to be and where they actually are. This isn't going to be easy...

Do you have any experience in this area? If so - write down your thoughts.


CruiseControl progress

I've browsed the Jira page for CruiseControl. One thing that struck me is that a lot of people have submitted patches for CruiseControl, which is a good thing, but it's seems like it takes some time before they are applied. Another thing that strikes me is the lack of roadmap. There is a release 2.2.1 where all the issues marked for this release is resolved, but it isn't released. No other release seems to be planned.

Do we have a situation where the product has a lot of users willing to contribute, but the project itself lost it's interest ? Is this a sign that somebody else should drive the project ?


Book review: More Eric Meyer on CSS

Want to make sexy tabbed navigation like apple.com have on their site ? Want to learn how to use CSS on concrete problems ? If so this might be the book for you.

Eric Meyer is an authority in the field of Cascading Style Sheet and have written several books on the subject: CSS Pocket Reference, CSS The definitive guide and Eric Meyer on CSS. You get the picture.

This book - as the previous - looks at ten projects with different challenges. Examples are: Converting existing page, styling photo collection, attractive tabs, CSS driven drop down menus. The book also includes color pictures of the web pages as they evolves. This is a big plus. Black&White doesn't give the same level of feedback about the elegance of the design.

It's a very good book and I would definitely recommend it to anyone who have learned the basic about CSS, but need help to achieve the really good result. If you have a concrete problem, look whether the first or this book addresses it. Without having read it, I guess that CSS Cookbook might compete with these books.

Got the book for half price on amazon.co.uk and it was worth it. On the minus side might be some lacking comments on best practices. A few comments on this is offered, but it definitely could have offered more advises on when to utilize different strategies. I also had problem following the rationale on some occasions. The solution was to trying to do the changes ourselves to see the problems that a particular CSS styling gave.

Looking forward to the new CSS features in IntelliJ IDEA next release. Maybe I must download Irida from Jetbrains Early Access Program....

So we end up on.....

RedHat/Fedora... I'm leaving you soon

My first try on Linux was RedHat 4.1 when I was a student. Struggling with Linux on the student server that we owned. Over the years I've always had a Linux partition on my PC, and it always have been a RedHat distribution. I started using Linux as my primary desktop at home two-three years ago and it was RedHat 7.3. Followed up with 8.0, 9.0 and then the Fedora Core versions. Currently I'm running Core 2.

So why change now ? There's a couple of reasons. I started using Ximian Desktop when I was running RedHat 8.0. This desktop was really slick - I liked it a lot. Now Ximian is Novell - which also means Suse - which also means: No Ximian Desktop for Fedora. There's also quite a few important features missing - mp3 support being the most important of them. Also I don't like the fact that Fedora kernel doesn't include the Software Suspend in their 2.6.9 kernel. I've struggled SO long with getting suspend functionality to work on my Dell laptop.

The turning point was my sudden awareness of Ubuntu Linux. This Debian based distribution seems to fit my interest perfect: Bleeding edge on GNOME features, new releases at regular intervals, standard based, slick desktop. I downloaded and gave the distribution a try on a small available partition and it seems very good. Seems to boot faster than Fedora.

So when I'm done with my current project, get some spare moments, Fedora gets kicked out of my Dell Inspiron....

Eclipse and GNOME finding common ground ?

I've been reading the Around the planet which is rumors about what's going on in the GNOME land. As a Java development I notice that it seems like there's some momentum around RedHat's participation in the Eclipse world. I think RedHat was one of the founding members in the Eclipse board.

Havoc Pennington have some interesting links on his blog. Also Fernando Herrera talks about GNOME development in Eclipse.

The interesting stuff is where is GNOME headed. We all know about Novell's (former Ximian) effort on the Mono project and there seems to be an agreement in the GNOME community that they need a higher level language than C in order to reduce development time. Is this an indication that Novell and RedHat represent a pro Mono vs pro Java effort ? We also know that Sun have contributed to the GNOME platform with accessibility features and they will probably push for Java as future platform for GNOME.

Interesting times.....


Citrix client on Linux

I use Linux as my development environment and it would have been great to access the Citrix solution that is used a lot by my current customer. First I thought "Citrix and Linux - probably not a good match", but then I entered "citric client Linux" in the google search and got a product page from Citrix up. This is too good to be true. Downloaded the rpm (!!!) and installed the thing. Had to do a rpm -ql ICAClient. It installed everything under /usr/lib/ICAClient. I tried to run the configuration tool which has awful GUI (ugly Motif stuff). Didn't get that working. But since the Citrix server offers a URL to a launch file, I dowloaded it a run the command:

sudo /usr/lib/ICAClient/wfica.sh launch.ica

And voila: Full windows desktop up and running. Pretty cool.


BEA's sorry excuse for unit testing in Workshop

dev2dev.bea.com have posted both an article and a tech talk on unit testing in BEA Workshop. When I saw this article, I thought 'YES ! This is exactly what I need' because my new employer have a strong focus on the tools from BEA. I absolutely see the productivity gain using BEA workshop, but I've been skeptic since I've tried TDD and liked the confidence it gave me. Doing so in Workshop seems like a struggle.

So then I started on the article in hope for all my concerns to be redeemed. I haven't started developing with Workshop yet, but it's just around the corner. The article shows how you can launch JUnit from Workshop using command line. Well... OK... that wasn't very useful. That's NOT the problem. There's a discussion about the classloading stuff in JUnit, but it fails to mention that disabling this can be done in a property file on the user's home area - which is what I do. The author suggest doing this either on the command line or in code. A bit awkward I thought and moved on...

Then he starts to talk about the difficult stuff. How to test Java Page Flows, Java Controls, Web Services and EJBs. The author names it "Unit testing Externally Testable Components" - and then the bad feeling got worse. He's actually talking about doing FUNCTIONAL testing at the UI level and calls it testable components !!! I think that must be as far away from testable components as you can get.

Further down he talks about testing web services and EJBs through their remote interface when running in the container. Testable components - sure !!!

Then he uses the term "Unit testing Internally testable components" which in practice is the usage of Cactus. I have great respect for the work around Cactus and I think the Java world owns a lot to Vincent, but I consider Cactus as work-around when you can't do unit testing. Vincent himself mentioned that Cactus test are probably more like integration tests: "Type 2: integration unit testing. Cactus is typically in this category" (from start page of Cactus).

So the conclusion is that unit testing will be very difficult with the Java Page Flow and Java Controls stuff included in BEA platform 8.1 and the only way to work around this probably is to embrace Cactus for all it's worth and that's a shame when you think about that TestNG is created by a former BEA employee.


Book review: Designing with web standards

Are you using HTML tables when designing your web site ? Many space GIFs ? Are you using browser detector scripts ? Got a feeling that these HTML hacks smells (like teen spirit ;-) ? Well then Designing with web standards might be the book for you.


I've been working with Java technology for quite some time now, but I never actually done any major web client programming. Mostly the focus have been server side components or swing programming. I just started working in a new company and I actually got my first web project with JSPs and stuff. I started out trying to avoid using scriptlets and learned JSTL and a few of Jakarta's tag libraries, but I still ended up with crappy HTML code because of tables wrapped inside tables in order to get the layout to look good. So it occurred to me that I had to do something about my HTML skills. My friend André got this book recommended by a web designer and he spoke warmly about it - so I gave it a try.

Diving into the problems...

Being ignorant about the browser wars and web standards, this book gave me historical background and points out that 99,9% of the web sites are crappy and ignorant about the fact that most browsers now actually support the important web standards; CSS, XHTML, ECMAScript and DOM. It's possible to make a site without having to write HTML specific for Internet Explorer (don't understand why anyone still wants to use such a browser - but that's another story) or any other browsers.

The book takes us through the history and how things gotten better. This section could have been a bit shorter for my taste. After that the focus is on the different Web standards and explaining them and then showing examples. Zeldman also addresses problem areas with older browsers and how one can work around these issues. The last chapter shows how he changes his homepage from a table based layout to a CSS driven layout. A really good wrap up on the technology.

Might not be your cup of tea...

This is a great book to get an overview on the technologies and some practical advice, but still it's not a HOWTO or reference on for instance CSS. If that's what you're looking for, you might consider some like Eric Meyer on CSS. I've bought the follow up called "More Eric Meyer on CSS".

Summing up

  To conclude, my dice landed on five. The ovations of web standards and historical background is a bit verbose. On a few occasions I had some problems following the arguments in the text with the examples. Other than that - I'm pleased with the book.

Hopefully this ends up with me finally getting my homepage up and running...


Configuring special laptop keys on Linux

I upgraded to Fedora Core 2 a while ago, but haven't taken the time to get LinEAK up and running again before today. It's been a couple of years since I last did it and I had forgotten most of it.

LinEAK has support for Dell inspiron according to it's documentation and since my initial configuration didn't work anymore, I tried to use the following command:

lineakd -c DI8K

This generates the lineakd.conf file needed. I didn't get it to work so I google'd a bit and found some hints. I included the special configuration for Inspiron 8500 and run the command again. YES !!! One step further, but the old commands for mute, volumeUp, volumeDown wouldn't work. I had used EAK_MUTE, EAK_VOLUP, EAK_VOLDOWN. This didn't work so I looked at the next google hit and voila... All special keys up and running.


Want a GMail account ?

You know the drill. Leave email address in the comment....


JavaZone 2004 in a nutshell

The JavaZone conference is sold out this year. 800 tickets got sold out a few days before the conference started. I've been on all three of these conferences and I value the effort that Totto with friends put into this conference.

I started the day with participation of Tom Gilb's presentation about quantifying quality. In general the presentation said: "You can measure everything within software industry so just get started". Very little practical advice other than using google and you will find a method to help you. His books might be more practical and before christmas it's available on his website. Don't think his book is on my highest priority list...

The next session was Kevlin Henney talking about value object pattern (yes - the real value object pattern). Some practical advises, but nothing revolutionary stuff. Henney is a great speaker, and I like his perspectives on software development.

Aslak Hellesøy was next out with a talk about the PicoContainer and NanoContainer. Showed some interesting features adding aspects to the components by using NanoContainer. Unfortantly the sound was fubar so it was a bit difficult to hear Aslak.

John Crupi talked about a project inside Sun called SALSA which is used to govern projects by analysis code and identifying architectural patterns (based on his work on Core J2EE Patterns). Pretty ambitious project and it will be interesting to see the result of this work - especially the visualization part of this. Currently I would focus more on XRadar since it's free, but it definitely could benefit having something like SALSA at the architectural level.

Eric Evans (written the book Domain Driven Design) talked about the modeling and a way to establish a common languange between developers and domain expert. The problem is that Eric is increadable boring to listen to. Had a few good points, but I think the book probably is a better choice than listening to the man.

Took a little break after Evans session and took a beer with Andre and friends. Some of them had bought books from the new series from O'Reilly; Developer's Notebook.

Next out was Rickard Öberg. His talk was about how his AOP sort of gives back the value of domain modeling - or maybe OO analysis, but it's definitely not OO programming. Since last time I heard Rickard on this kind of talk, it seems like they have taking a more extreme route when it comes to utilizing AOP. Prior Rickard have been talking about using AOP to add infrastructural services to objects, but now they use AOP also for core business functionality. It will be interesting to see how SiteVision will do in a market full of big competitors. Recommend to look at the presentation when it's published on the JavaZone site.

Stallman was at JavaZone talking about the Java trap. I thought this was going to be a bit more detailed, but then again I've never heard the man speak before. He clearly have somewhat extreme views upon the software industry. He also mentioned the distingtion between free software and open source. I have actually been ignorant about these conflicts. Anyway - he is a curiousity, but nothing more than that to me....

I participated on Maven2 BOF. I must say that Maven 2 looks VERY promising. Speed, no more Jelly and corrected some of the annoying behaviour. Within a few weeks an alpha release of Maven 2 will arrive. I'm also headed toward a new project so I might try the alpha release. We'll see....

Then it was PartyZone ;-)


One Maven experience

In my former company we decided to change our 'in-house' build scripts from reusable ANT scripts (which got included using the XML import functionality) to using Maven instead. One interesting experience was in a project where consultants were coming and going. There was never a question on how to build the different components that the consultants were building. All the plugins had decided this for us.

This is as close as the Java community have reached compared to linux's ./configure, make, make install. As long as there isn't established such conventions on the builds, there's a need for Maven and all those ANT imports will never help.


New job and new location

I've moved to the city of Tromsø and started a new job in a company named Invenia. Still be working with Java technology and it looks like it's going to be a lot of Weblogic for me - which is ok. The one thing that I'm a bit sceptical about is the usage of Weblogic Workshop, but I'll probably use IntelliJ anyway. My personal license to the rescue ;-)


Geronimo and code standards

Seems like the J2EE project from Apache doesn't care much about code convention. I just browsed the Checkstyle report on the Geronimo core and there are 2600 violations on the code convention. Thought these open source developers cared about these things since the code is available for everybody to look at.

The PMD report is much better, but the default setup with Maven uses too few rules. Maybe I should run a more strict PMD analysis on this code. Anyway - it's a shame that one have the power of the maven reports and then projects don't use this advantage.


SOAP in non object oriented languages

Have some business architect (great name ;-) on my neck regarding some recommendation I've given. Do anyone know where I can find SOAP toolkits for non object oriented languages ? I've located a toolkit from Fusion for C. Are there any other toolkits ? Do anyone got experience using SOAP from non object oriented languages ?


Are JMock allergic to JavaDoc

Saw that JMock have reached release candidate 1. I've tried to use JMock, but whenever I'm in trouble I get really provoked by the fact that JMock developers seems to hate JavaDocs. Try browsing JMock's JavaDoc and you'll see the lack of comments is astonishing.

I value JavaDoc, but then again I might be just too stupid since I see the value of having JavaDoc for something simple as a mock object library.