19 March 2007

Aspects and Architecture

Finding myself with free time between consulting gigs, I've been thinking about aspects. Aspects are a very active research topic in computer science and software engineering for addressing crosscutting concerns.
Here's a non-computing analogy: imagine you are writing an outline about something that interests you. You've got 5 or 6 top-level categories, and you've refined each of them to several levels. Inevitably you find some things that either: (A) don't fit in any of those categories, or (B) rightfully belong under more than one! So maybe you add some categories, rearrange things, and guess what? You run into A and B again, and again! This happens perhaps because most things that are interesting at all can't be easily described in a single way.

Aspect-Oriented Programming. Well, maybe this is no big deal when making outlines, but it can have a big impact on software development. The impact comes from the same situations: the same code needs to be replicated in numerous places and gets tangled with other code, making it hard to maintain. Gregor Kiczales and colleagues developed the ideas of aspect-oriented programming (AOP) to address these problems back in the 1990s at Xerox PARC.

Aspects in Architecture. My particular interest is whether the insights of AOP have any use in clarifying the descriptions of software systems architectures. To that end, we organized a workshop First Workshop on Aspects in Architectural Description at the AOSD 2007 conference, and gave a paper trying to cast aspects into the conceptual framework of IEEE 1471, at the Early Aspects workshop.

AOSD 2007. I really enjoyed the AOSD (Aspect-Oriented Software Development) 2007 conference. It was held in Vancouver, BC—always a nice place to visit (more on this below).
Monday we held our workshop on aspects in architectural description. My co-organizers were Paul Clements, David Emery and Philippe Kruchten—all smart, fun people to work with. It was a small, very interactive workshop of 15 people. The papers and discussions were very thought-provoking. A summary will appear on the workshop website.

Tuesday was the "Early Aspects" workshop. Again, a very thought-provoking collection of talks and discussions, with a wider focus than just architecture, to include requirements and design. Anthony Finkelstein gave the keynote (and participated in our workshop on monday). His ideas are very compatible with the multiple views approach taken in software architecture and he has tools to support that approach. In fact, he coined one widely used notion of "viewpoint" back in the 1990s which was an important insight we used in IEEE 1471. (More about views and viewpoint some other time.)

AOSD has largely a research focus, with some industrial participation; it was very nice to talk with young researchers and see what they are up to. It was fun to be an ancient industry guy and make pronouncements like:

It's nice you are studying ADLs (architecture description languages) and inventing new ones, but remember almost no one in industry uses ADLs: most architectures, if captured at all, are written down with Powerpoint or maybe UML.

It reminded me of the spirit of early OOPSLAs. There is a lot of work on using aspects in requirements engineering, including a number of tool demos. Two of my favorites were from Lancaster University: MRAT (Multidimensional Requirements Analysis Tool) and EA-Miner. Thomas Cottenier presented some very impressive work on model weaving for a (real) software project at Motorola.

The thing I did not hear at AOSD were any new conceptual insights into aspects. The community seems to be in a consolidation phase, extending the aspects metaphor to design and requirements activities. Also, there is still some conceptual fuzziness: one that particularly confuses me is the blurring of concerns (which I think of as naming problems to be solved) with aspects (which I think of as packaging the solutions to those problems).

Sundries. Vancouver is a great town for restaurants. I did not get to as many as I might have, because AOSD provided breakfasts and lunches, and two evening receptions which included plenty of good food. The Early Aspects workshop had a group dinner at a nice Greek restaurant nearby, Kalypso. One of my favorite cafes is in Vancouver: Caffe Artigiano.

My return to the east coast was somewhat disrupted by a winter storm—which gave me chance for a stop over in San Francisco: long enough to visit friends in Mountain View and have a very nice super at a new Chinese-Indian fusion restaurant, temptations.

No comments: