Following Software Evolvability 2006, I attended the first day of the IEEE International Conference on Software Maintenance (ICSM 2006), held in Philadelphia, Pennsylvania, U.S.A. on 25 September 2006.
Jean-Sebastien Boulanger of McGill University presented a tool to analyze Java programs for separating concern interfaces. They were particularly concerned with ensuring the principle of information hiding was followed when implementing interfaces. Their tool is called JMantlet and is an Eclipse plug-in. They analyzed the transaction concern in 26 versions of JBoss and, unsurprisingly, found that as the software evolved the implementations consistently became more aware of the transaction API.
Jonathan Maletic of Kent State University reported on a tool to generate documentation for method stereotypes (StereoCode). It is only for C++, but looks like a useful tool. I wish they had done it for Java. They also made use of the srcML tool to parse the raw source.
Suzanne Crech Previtali of ETH Zurich presented the best paper that I saw at the conference. Granted, I was only there for Sunday's workshop and Monday, but their work has some real promise. The paper was entitled, "Dynamic Updating of Software Systems Based on Aspects". They used an aspect-equipped JVM (Prose) to allow updates to running Java systems. Noting that classes or methods could be removed, added, modified or left unchanged, they first analyzed (automatically) which changes need to be made, then ordered those changes to prevent unwanted side effects, then inserted the updates systematically. I really liked their approach. Being a pessimist by experience, however, I did suggest to Suzanne that they not actually remove classes and methods to be removed. Instead, I suggested that they leave them there and modify them to simply throw an exception when called. Practically, because mistakes get made, there should be some more study done to ensure that this process works as advertised.