Monday, July 14, 2008

Generate, Then Degenerate?

My friend Celso Gonzalez and some guy named Scott Ambler (just kidding Scott, this is an old Marc Fleury joke) have released a thought provoking article in the June issue of Better Software named "Agile Model-Driven Development".

Despite using formal models as bootstrapping artifacts for TDD, so it can scale or survive team distribution, one key aspect of AMDD resides in the skilled transformation that happens in the generation chain.

This is a subject dear to my heart. My very first published article was about a model to code generation tool and I had the chance to initiate and gravitate around the roll-out of a pragmatic MDA framework (notice the emphasis on pragmatic: I have not drunk the MDA kool-aid).

To make this skilled transformation happen, you have to capture architectural decisions so a model will translate in an application that is layered according to some standards.

But what happens after that? Developers' hands still have to run over their keyboards and, as business decisions will come and go, they will be likely to take shortcuts and alter the original architecture vision to satisfy some imperious needs. From there on, all bets are off... The original architectural intention will be compromised sooner or later. What was generated will degenerate.

We do have some pretty nice analysis tools to help us ensure that code will keep on satisfying pre-defined coding standards, will avoid common bugs or will shoot for acceptable levels of test coverage.

But what about architecture?

The June issue of Computer talks about a tool, named SAVE, which could help... saving the day! SAVE, an acronym for Software Architecture Visualization and Evaluation, started as a Fraunhofer-supported thesis in 2004 and looks really promising.

I have tried to find the Eclipse update site of the SAVE plug-in but to no avail (a generic term like "save" does not hint Google much about what I am really looking for).

Does anybody know where to get this tool? And does anybody know if it is possible to run SAVE in the build process, like other code base analyzers? Indeed, I think it is important that any IDE tool has a counterpart that is usable at build time.

Architectural verification sounds tasty. Is it too good to be true?

5 comments:

djebar said...

Hello David,
another reference about evaluation and impact studies
http://www.sei.cmu.edu/architecture/ata_eval.html

in particular the Arche tool (Architecture Expert (ArchE) Tool)
http://www.sei.cmu.edu/architecture/arche.html

regards
djebar

David Dossot said...

Interesting links, thank you for sharing this!

zepag said...

Have a look at Lattix for scanning the evolution of a software architecture very easily (http://www.lattix.com, watch the demos ;) ).

Lattix uses Dependency Structure Matrix (also available in IntelliJ Idea version 7 if I remember well).

(it seems my first comment didn't commit.. :p)

David Dossot said...

Mmmh, Lattix got a Jolt, that's nice. Too bad I am not a judge in this tools category ;-)

After watching the demo, I feel like giving it a try. The only thing is I am not keen on receiving the sales-guy call after filling their download form...

ArchE looks also pretty good but their installer only works on Windows... how sad.

zepag said...

It seems they're willing to let one use it on an Open Source project. I'll check to see if they're willing to do it in order to give it a try and give a bit of feedback.