From johan@ccs.neu.edu Wed Dec 5 13:54:55 2001 X-UIDL: c87b4f7d55bb05a75c1681fb12f7233b Return-Path: Received: from caph.ccs.neu.edu (caph.ccs.neu.edu [129.10.117.174]) by amber.ccs.neu.edu (8.10.0.Beta10/8.10.0.Beta10) with ESMTP id fB5IsnH14460; Wed, 5 Dec 2001 13:54:49 -0500 (EST) Received: from caph.ccs.neu.edu (localhost [127.0.0.1]) by caph.ccs.neu.edu (Postfix) with ESMTP id 7B18C3F8F6; Wed, 5 Dec 2001 13:54:48 -0500 (EST) X-page-me-by: putting the word URGENT in the subject X-pgp-key-url: http://www.ccs.neu.edu/home/johan/pgpkey X-pgp-fingerprint: B9 EF F6 16 B0 FA 1F 48 CE 37 37 9B A3 8F 7A B5 To: Doug Orleans Cc: Karl Lieberherr , skotthe@ccs.neu.edu, edwards@intranet.com, johan@ccs.neu.edu, john_j_sung@yahoo.com, neerajsangal@mediaone.net, robby@ccs.neu.edu, wupc@ccs.neu.edu Subject: Re: contracts and AOP In-reply-to: Your message of "Wed, 05 Dec 2001 13:40:34 EST." <15374.27170.744534.145317@vega.ccs.neu.edu> From: Johan Ovlinger Mime-Version: 1.0 (generated by tm-edit 7.106) Content-Type: text/plain; charset=US-ASCII Date: Wed, 05 Dec 2001 13:54:48 -0500 Sender: johan@ccs.neu.edu Message-Id: <20011205185448.7B18C3F8F6@caph.ccs.neu.edu> Status: RO Content-Length: 1516 Yes. There needs to be a way to classify and discrinate between aspects -- or collaborations in general. The very high level story is that types are no longer enought to buy us safety; what we are looking for is something along the lines of dynamic interfaces. An example of a dynamic interface is that you must open() a file before read() from it (*). Other dynamic interfaces may be the pre and post conditions, or constraints about the object graph. In general, we don't want to make statements like "aspects shouldn't modify invariants", as of course, in my world, EVERYTHING is an aspect(ual collaboration) so where would we get these unmodifable invariants from? Rather, each collaboration needs to be able to define an interface of constriaints which it guarantees, and then we need to provide tool support for maintaining these constraints under composition. Unfortunately, we can't require full constriaints (expecting people to write their programs in Z isn't realistic), so we need a soft constraint system which allows trivial things like the logging aspect (works with everything) to interact gracefully with the I-am-really-picky aspect, which perhaps can only be used in one highly specific scenario. I think this may all be subsumed by my object-graph constraints bullet, which has remained stubbornly in the future work section for too long! johan (*) This is actually really hard to capture in a real world program, so we are stuck just asserting a quality "plays nice with files". yuck!