[aosd-discuss] can you have interception w/o aop?

Cristina Videira Lopes lopes at ics.uci.edu
Wed Apr 5 11:49:34 EST 2006


 

> -----Original Message-----
> To briefly quote from the paper:
> 
> 	"We say that a design or a part of a design is modular 
> if its elements
> 	do not depend on each other (although they may depend 
> on external
> 	design rules that serve to decouple them)."

Maybe I'm interpreting this out of context, but this is the strictest
definition of modularization that I have ever seen...

Under this definition, my laptop doesn't seem to be a modular system. For
example, the main body depends on both the power cord and the battery to
function properly. There is no design rule that decouples the power cord and
the battery from the main body -- the computer industry seems to make a
point in creating an endless variety of power cords and batteries that are
specific to every laptop model out there. 

You may say, of course, that there are different design rules decoupling the
power cord and the battery for every laptop model. Well, yes, but this seems
to trivialize the concept of design rule. Applying this to software, it
would mean that you go from a non-modular to a modular design simply by
proliferating interfaces, with the sole purpose of "decoupling" every pair
of interacting components. While we can do that, those interfaces / design
rules / decoupling are an illusion, they serve no real purpose, because some
implementation dependencies are an inherent part of the problem formulation.

There are many purposes for modularization, not just the ADT-ing purpose,
which is what this definition seems to imply. In the case of my laptop, it's
very convenient to dettach the power cord and the battery from the main body
when I travel, even if they only work for my laptop and no other laptop in
the world. The battery-as-module is particularly convenient, as its
performance degrades over time; it's good to be able to replace it with
another one of exactly the same type, rather than having to buy a new laptop
when the battery dies. 

In the computer industry, non-ADT-ing modularizations work to the financial
advantage of market leaders... "Buy a complete modular system where some
modules may break; you can get a replacement from us only, at $50!"
Standardizing the technology of power cords and batteries -- technically
simple -- would disrupt the market. 

Establishing design rules in a modular design has effects which you may or
may not want. But that doesn't mean that a system isn't modular until all of
its components depend only on design rules. I would claim that the whole art
of modular design is in deciding what is *and what isn't* a design rule. The
proliferation of trivial design rules can have a negative effect on the
value of the design.

-Crista

PS. ADT = Abstract Data Type, roughly, an interface that can have many
implementations.




More information about the discuss mailing list