Pronunciation: di me'tr. The stress is on e, which is pronounced like e in equal.
Answers: There are many answers depending on your point of view.
What is new?
======================================================
An important concept of Demeter is to split software
into at least two parts: The first part defines the objects.
The second part defines the operations. The goal of
Demeter is to maintain a loose coupling between the
objects and the operations, so that one can
make modifications to either without serious impact
on the other. This cuts down significantly on
maintenance time.
The most exciting and novel aspect of the Demeter
technology is the concept of adaptive software based
on traversal strategy graphs (strategies, for short). When you describe
a traversal in a shorter form than writing it out
completely, it is called a succinct subgraph
specification. Strategies
introduce a novel way of loosely coupling software
artifacts to make evolution much easier. Strategies
are very important since they appear in
many aspects of object-oriented software development
and other processes:
groups of collaborating classes
traversing objects
e.g., navigation in UML/OCL
www.ccs.neu.edu/research/demeter/course/f97/lectures/powerpoint/
file lec9.ppt
www.ccs.neu.edu/research/demeter/course/f97/lectures/postscript/
files lec9*.ps
defining collections and iterators for Generic Programming (see DJ tool)
http://www.ccs.neu.edu/research/demeter/DJ/
transporting objects
copying objects
marshalling objects
parameterizing classes
collecting resources
queries in data bases
expressing views
defining participants of collaborations
connecting components
structure-shy knowledge representation
structure-shy planning
etc.
The programs described above are
adaptive programs of dimension 2 since
there are two parts. We also consider adaptive
programs of dimension n: Adaptive programs are
specified by n complementary, collaborating parts,
each one addressing a different concern of
the application. Those programs are now called
aspect-oriented programs.
Adaptive programming is the special case of aspect-oriented programming
where graphs and strategies are utilized.
The main goal of
adaptive programming is to separate concerns
by minimizing dependencies between the
complementary parts, so that a large class of
modifications in one part has a minimum
impact on the other parts.
The complementary parts approach has
the advantage that programs become less tangled,
more flexible, understandable, and shorter, without loss of
run-time efficiency.
One or more of the dimensions must be expressed using
strategies for the program to be called adaptive.
A condensed list of
applications of adaptiveness
sorted by technique to achieve adaptiveness.
Law of Demeter
==============
The Law of Demeter was developed early during the
Demeter project by Ian Holland et al. and it provided the
motivation for the work on Adaptive Programming.
We called it "Law of Demeter" because we discovered it while working
on Demeter but it is a general style rule for structure-shy programming.
Design Pattern Support
=====================================================================
Demeter/Java provides excellent support for working with
design patterns. Traversal strategy graphs (strategies, for short)
are useful for capturing groups of collaborating classes
which are involved in a design pattern.
Demeter/Java provides outstanding support for an
improved form of the visitor design
pattern. Behavior is expressed in terms of strategies and
visitors which are loosely coupled to each other and to
the class diagram.
What is the most general definition of Adaptive Programming (AP)
================================================================
Adaptive Programming is the special case of
Aspect-Oriented Programming
where at least one of the aspects is expressible in terms of
graphs and where the other aspects or components refer to the graphs using
strategies.
In summary, AP is about adapting to changes in a graph and
about succinct specifications to achieve the adaptation.
begin definition
An adaptive program consists of n parts a1,a2, ... ,an,
where each part ai expresses a concern expressed in language Ai.
There is a combination function c which maps the n parts to an
executable program c(a1,a2, ... ,an).
In an adaptive program there must exist a graph-based concern,
say A1, such that for a "large family" of changes S
to elements of A1, the result of the
combination function adapts to the change:
c(S(a1), a2, ... ,an) ~= c(a1, a2, ... ,an) (adaptability cond.)
~= means that the two programs have "analogous", but different
input-output behavior.
In AP, the adaptiveness is achieved by using the following mechanism:
Elements of A1 are mathematical structures consisting of sets and relations.
At least one of the concerns, say A2, is expressed in terms of succinct
specifications of a structure related to A1. A specification is succinct
if it is "much shorter" than the structure it specifies.
end of definition
Example:
n=2
Split program into two parts: behavior and class graph
(e.g., a UML class diagram).
Behavior _adapts_ to many changes in class graph.
Behavior and class graph concern are connected by
strategies, i.e.,
succinct subgraph or succinct pathset specifications.
http://www.ccs.neu.edu/research/demeter/biblio/strategies.html
Solves following problem: Many maintenance and evolution tasks for
object-oriented programs become simpler and even partially
automated.
Method
=====================================================================
The Demeter Method is a software design and
development method for deriving object-oriented
software from informal specifications, such as use
cases and scenarios. The software is not described
directly at the object-oriented level, but at the
adaptive object-oriented level with the double benefit
that the software gets both shorter and considerably
more flexible. The software is called adaptive since
it adjusts automatically to a large number of context
changes. For other context changes it is easily adaptable
by manual intervention.
Interface
=====================================================================
Demeter provides a high-level interface to your favorite
object-oriented programming system. It defines a high-level
interface for defining the structure of your classes and
objects through class dictionaries. It also defines
a high-level interface for defining the behavior of your
objects through adaptive programs. When an application
is written using adaptive programming, it is much easier
to port to a new programming system, like going from C++
to Java.
Book
=====================================================================
Entitled ``Adaptive Object-Oriented Software:
The Demeter Method with Propagation Patterns'', the
book introduces the important concepts of adaptive
software, such as class dictionaries, and propagation
patterns. It presents a simple process model on how to
develop adaptive software. The book is written for
advanced undergraduate students, graduate students
and professionals. The publisher is PWS Publishing
Company.
Framework Technology
=====================================================================
Adaptive Plug-and-Play Components for Evolutionary Software Development
is an OOPSLA '98 paper that makes the connection
between frameworks and AP. The APPC style of programming can be viewed
as programming with many little frameworks.
Modeling Behavior with Personalities
shows how to improve framework technology using the Laws of personalities.
Research group
=====================================================================
The developers of the Demeter technology.
Demeter Research Group.
Some easily accessible publications are:
Karl J. Lieberherr, Ignacio Silva-Lepe and Cun Xiao,
``Adaptive Object-Oriented Programming using Graph-Based Customization'',
Communications of the ACM, May 1994, pages 94-101.
ftp://ftp.ccs.neu.edu/pub/research/demeter/documents/papers/LSLX93-adaptive-programming.ps
Ignacio Silva-Lepe, Walter Huersch and Greg Sullivan,
``A Demeter/C++ Report'',
C++ Report, SIGS Publications, February 1994.
ftp://ftp.ccs.neu.edu/pub/research/demeter/documents/papers/SLHS94-demeter-cpp-report.ps
To learn more, see WWW address:
http://www.ccs.neu.edu/research/demeter
Tools
=====================================================================
The tools are distributed free of charge on the WWW
in source (and object) form for Demeter/Java,
Demeter/C++, Demeter/Perl5 and Demeter/CLOS.
Users are very enthusiastic:
From Bell Laboratories:
"Demeter appears far superior to the methodologies for
C++-driving front-end CASE that we've seen from IDE
(Software Through Pictures) & Cadre."
From Drexel University:
"Extremely valuable --- I predict it will
sweep the industry"
Read more feedback
on adaptive software technology.
Information about how to get the Demeter Tools/C++
through the Internet is at:
ftp://ftp.ccs.neu.edu/pub/people/lieber/DemeterTools.txt
Information about how to get the Java Tools Demeter/Java and DJ
is at:
www.ccs.neu.edu/research/demeter
Agriculture
=====================================================================
The Greek goddess of Agrigulture.
The Demeter project was named after Demeter because we were working
on a hardware description language Zeus and we were looking for a tool
to simplify the implementation of Zeus. We were looking for a tool name
related to Zeus and we chose a sister of Zeus: Demeter.
Later we promoted the idea that Demeter-style software development is
about growing software as opposed to building software.
We introduced the concept of a growth plan which is basically
as sequence of more and more complex UML class diagrams.
Growth plans are useful for building systems incrementally.
Back to Adaptive Programming = Demeter home page
To learn more on adaptive software and to get periodic
updates, send the message
subscribe adaptive
to majordomo@ccs.neu.edu
============================================================================