THIS IS A COLLECTION OF MESSAGES ABOUT THE USE AND POTENTIAL OF THE ADAPTIVE SOFTWARE TECHNOLOGY (INCLUDING THE DEMETER TOOLS AND RELATED COURSES) ============================================== Editor's Note: This collection spans many years. In the meantime several things have changed: The software got better and a lot cheaper; indeed the COMPLETE Demeter Tools/C++ and Demeter Tools/Java are now distributed free of charge over the Internet in SOURCE form. See: ftp://ftp.ccs.neu.edu/pub/people/lieber/DemeterTools.txt Some of the messages below indicate that only a demonstration version is available for free but that is outdated. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From bdelav@hotmail.com Thu Dec 17 22:33:08 1998 From: "Bill de la Vega" I enjoyed the course (Adaptive Object-Oriented Software Development: The Demeter Method, http://www.ccs.neu.edu/home/lieber/com3360.html) quite a bit. It is the first course where I didn't know anything about the ideas before the course started. Although I'm quite familiar with the problems you are working on, the solutions were entirely new and interesting. I've read some of Knuth's Literate Programming and interviews with Charles Simonyi on making programming easier. The Demeter system seems to address some more tangible problems quite well. Good luck with it. Bill de la Vega Lotus Development Corporation and now Bow Street Inc. ------------------------------------------------------------------------------ A success story using Demeter/Java ... Although it is primarily intended as a tool to facilitate software evolution, it proves also to be fast on the first iteration for some projects ... From jtsilla@ccs.neu.edu Tue Nov 10 15:00:48 1998 Date: Tue, 10 Nov 1998 15:00:46 -0500 (EST) From: James Tsillas To: lieber@ccs.neu.edu Subject: Demeter/Java in action Just thought you might be interested to know that I used Demeter/Java to develop a tool where I work (Ascend Communications). This tool takes the output from a C++ compiler and generates structure offsets files so we can integrate handwritten assembly code with our C code. I used a .cd file to represent the output of the compiler and wrote a couple of visitors to go around and print the structure fields in a format which our assembler can understand. It took me less than an hour to get the whole thing to work. Using C++ and (or even something friendlier like Perl) would have taken at least a day or two. thanks, -Jim. ------------------------------------------------------------------------------ From anonymous reviewers of our OOPSLA '98 paper (Mezini/Lieberherr): Adaptive Plug-and-Play Components for Evolutionary Software Development http://www.ccs.neu.edu/research/demeter/biblio/components.html ... The research is well supported by both deep theoretical analysis which follows a thorough literature survey, and prototypical implementation in the context of a larger software development environment project. Two running examples make a compelling case for the new construct. This is the kind of work that the software industry needs most. Hard core work, aimed at developing tangible and implementable mechanisms to help bridge the chasm between illusive design methodologies of arrows, bubbles, use cases, processes, etc., and the tough reality of the programmers in the trenches. Even the simple observation and unequivocal statement that a design segment should be a distinct lingual construct, have formal parameters that can be matched against several locations in the class graph merits honorable publication, since most previous work tried and failed to do so while using existing programming constructs (see e.g., observer pattern implementations using inheritance and templates). There is however in the paper much more than that, ... ===== ... This paper addresses an important problem - that of providing programming language support for the widely used analysis and design concepts of use case/scenario. ... Anonymous OOPSLA '98 reviewers June 1998 ------------------------------------------------------------------------------ See http://www.ccs.neu.edu/research/demeter/evaluation/success.html for Demeter/Java success stories. Some quotes: "The project has been a sound success", "Taking into account the scope of the changes, it is an incredibly short amount of time", "The complexity of the Demeter/Java solution is substantially smaller than its Lex/Yacc counterpart". Luis Blando, GTE Laboratories November 1997 ========================================= REVIEWER FEEDBACK by a reviewer of the IEEE Transactions on Software Engineering (1997): ... In summary, this is an excellent, technically sound paper that introduces a novel mechanism that is applicable to various kinds of object systems. ... Conference version of paper: @INPROCEEDINGS{spl:context-conf, AUTHOR = "Linda M. Seiter and Jens Palsberg and Karl J. Lieberherr", TITLE = "{Evolution of Object Behavior using Context Relations}", BOOKTITLE = "Symposium on Foundations of Software Engineering", YEAR = "1996", ADDRESS = "San Francisco", PAGES = "", EDITOR = "David Garlan", PUBLISHER = "ACM Press" } July 1996 ==================================== Oct. 3, 1996 Feedback on NTU class: http://www.ccs.neu.edu/research/demeter/course/f96 http://www.ccs.neu.edu/research/demeter/course/f97 By the way, this class is shaping up to be the most influential in changing the way I solve problems. I've read parts of the Design Patterns text, but this class is helping to tie the concepts to implementation. I've tried to sell one of my peers on the visitor pattern in the past and been unsuccessful because he thought it made the code more difficult to support (due to the loose coupling). But he's wrong! I've been using a few of these concepts during my entire career (15+ years) - even when writing in COBOL (although the language makes it more difficult). I hope to get two things from your class. First, more ideas and better use of the ones I have. Second, a way to verbalize them so I can sell them to my peers. ==================================== I just started reading your book this morning. I am finding it very interesting. Certainly not the usual stuff one finds in books about software engineering. Naftaly Minsky minsky@darwin.rutgers.edu, Tue Jun 25 15:49:54 1996 =================================== From 106042.1615@compuserve.com Mon May 20 15:50:26 1996 From: 106042.1615@compuserve.com To: demeter@ccs.neu.edu Subject: Thanks for Demeter The subject really gives it away. Thanks for Demeter. A few weeks I stumbled across the book in a local bookstore and it somehow drew my attention. Now after having studied it I find myself employing the philosophy in the projects I am doing. Having been a functional programming adept for quite some years, I think this book for the first time provided really convincing material in favor of OO programming. I especially like the structure shyness of the approach. I used to think FP did a great job in this respect, but it is outperformed by the methodology described in the book. Although I follow the methodology I am more than eager to use the tools. Unfortunately I'm currently developing C/S applications using Delphi, and I haven't found any references of the Demeter tools being available for that target. ... Mark van der Voort May 20, 1996 Eindhoven, Netherlands ======================================================== Subject: Java version of Demeter Thank you for all the work you have been doing. It has had a profound impact on my understanding of objects, and has helped me educate and train many Smalltalk students. Demeter seems to be that combination of the best science with the finest aesthetics in the service of a practical art which is good engineering. It deserves recognition. Are there any plans to port the tools to Java? This would be a very popular platform, I am sure. Steve Parker From sparker@well.com Fri Mar 8 01:23:37 1996 =================================== The high-level approach of Adaptive Software is very interesting. I believe the biggest benefit in using Adaptive Software is the next level of abstraction up from Object-Oriented programming. Doug Sprague IBM Microelectronics Dec. 1995 =================================== From the ACM Computing Reviews, October 1995, page 528. About the Communications of the ACM paper: ``Adaptive Object-Oriented Programming using Graph-Based Customization'', by Karl Lieberherr, Ignacio Silva-Lepe and Cun Xiao, {\em Communications of the ACM}, May 1994, pages 94-101. Quote from review: "If you have been writing object-oriented programs and are interested in what comes next, this paper is certainly for you." Wayne Summers, Las Vegas, NM Oct. 1995 ========================================= I might add that propagation patterns are a way to specify flexible (C++) database programs which adapt to a broad class of schemas or, another way to look at it, allow the application programmer to specify code that does not need to know in detail the database schema. Given that in practical C/S application for MIS, DSS, TP and in general mission critical applications, the underlying database can have a very complex schema, this has the potential, in my opinion, of greatly simplifying writing C++ mission critical C/S applications. Professor Ugo Gagliardi Harvard University May 30, 1995 ====================================== From an anonymous reviewer of a funded NSF proposal on "Engineering adaptive software" (award for $295000 to Northeastern University) I have followed the work of Professor Lieberherr for a number of years, and have been consistently impressed by the approach and the results. He and his group have had many good ideas in the area of object-oriented programming and development methodology, and have published them. The Law of Demeter is widely recognized as an important stylistic guide. They also have an excellent record of going beyond the ideas and their publication to implementation and use in an educational environment and beyond. The Demeter System supports at least two object-oriented programming languages, extending its benefits to programmers in those languages without requiring them to learn a new one. It has been used in many classes at Northeastern University, and has been requested by many other organizations. Several tutorials have been offered on the Demeter Method, and it has been included in a survey of object-oriented analysis and design methods undertaken by the Object Management Group. This proposal deals with a critically important area of research. The object-oriented paradigm is widely believed to provide major benefits, and is becoming increasingly widely used. Actually achieving the desired benefits of reuse, extensibility and ease of maintenance, however, is no easy matter. Simply using object-oriented style is not enough. Many researchers therefore study object-oriented methodologies to find ways to improve those characteristics. Many of the approaches, such as the popular and valuable "frameworks" approach, allow the good designer to produce a unit of software that is highly reusable in certain planned ways. Such a unit of software will not easily be reusable in unplanned ways, however. Only a few approaches to object-oriented software engineering concentrate on supporting unplanned extensions. These tend to require extensions to the object-oriented paradigm, so they are not currently "mainstream", but it is my belief that these approaches will be of paramount importance as object-oriented software engineering matures, and will be instrumental in achieving its potential. Prof. Lieberherr's "adaptive software" approach is one of these. Anonymous NSF reviewer ================================= Review of Dr. Lieberherr's book, ADAPTIVE OBJECT- ORIENTED SOFTWARE: THE DEMETER METHOD WITH PROPAGATION PATTERNS. The manuscript is very well written. Comparing with other text books on object-oriented methodology, this one is the easiest to read. ... a) Three main technical strengths: i) Adaptive programming provides a higher level of abstraction than existing object-oriented programming. ii) Propagation patterns are formal specification. ... iii) The separation of program behavior (propagation pattern) and data structure (class dictionary graph) provides flexibility b) Three main pedagogical strengths: i) The book is self-contained. One can read the book and understanding adaptive programming without referencing additional reading materials. ii) The book uses simple notations. The graphical illustrations are easy to follow. Many text books have complicated schematic diagrams which scare readers away. iii) The Demeter/C++ tool provides hands-on experience for the readers. iii) The preface of the book is unorganized II. Overall evaluation. The current trend in computer science is moving toward object- oriented programming. Most schools are switching to use C++ as their principal programming language. Dr. Lieberherr's book is a significant contribution to the current movement of moving computer science courses into the object-oriented environment. The Demeter method is a practical and productive software methodology. It can be used as a stand alone methodology, or it can be interfaced with other methodologies. The Demeter method (adaptive programming) is more than just a way of programming. It is a means for us to think abstractly about a problem using real world concepts, rather than computer concepts. It has a high education value. The book is very well written. Descriptions of concepts are solid. Notations are few and clear. It is one of the easiest to understand. The book can be used as a text book for a graduate level or advanced undergraduate level course on software engineering. It can also be used as a reference text for a course on programming languages. The book is complementary to other books in object-oriented programming. ... Dr. Ka-wing Wong Eastern Kentucky University wong@eagle.eku.edu May 12, 1995 ============================================== It has long been a goal in the software development community to link the design documents and the implementation code more directly. The Demeter System is a powerful tool that helps designers accomplish this goal. Because so much of the conversion from design to implementation is made automatic by Demeter, when errors are detected, the designer is encouraged to modify the design rather than tinker with the low level C++ code. In the context of a software design course, this methodology encourages students to think and design on an abstract level rather than on the level of a particular programming language such as C++. In our view, this is precisely the kind of thinking that computer science educators have been trying to instill in students for more than 20 years. ... Given the fact that students can learn only a single methodology in detail [in an eleven week term], we believe that Demeter is a particularly suitable one for teaching purposes. The reason is that Demeter is based on theoretical studies of the optimal way to design loosely coupled classes for maximum effectiveness and flexibility. These theoretical principles can be used by students in whatever design environment they happen to work in. Comments by students who have completed the Software Design and Development course indicate that this is in fact the case. Richard Rasala Professor and Associate Dean of Undergraduate Education College of Computer Science, Northeastern University, Boston May 1, 1995 ================================= From an engineer who now studies computer science in our graduate program. He learned Demeter by himself from book, documentation and using the tools. ... Though I started with absolutely no idea about the Demeter environment, I was able to pick it up within weeks. I enjoyed working for you and I liked the work I did. I have learned a lot. I was actually planning to meet you and discuss about the possibility of doing a future project with you. ... Now I have learned the Demeter Tools also to the extent that I have the confidence to take up any project done in a different environment and do it again with the style and flavor of the Demeter environment. ... I think that my experience exemplifies how easy it is to learn this environment and the methodology. From: Muthian Ratinasabapati March 18, 1995 ================================= About the grammar-based approach used by Demeter ... LIBRARY PROJECT This project is an information system for a library. This system was built using Demeter for C++, and the Texas 0.3 persistant object store. Probably 50% of the work involved in this project was implementing a graceful (hopefully) interface between Demeter and Texas. I'm not sure that I used any special approaches when doing this project. I've been working with compiler generators, and code generators for several years now, and I used the same basic approach that I do there. Design the grammar first. After the grammar parses correctly, then you can worry about dealing with the intricacies of the internals. When dealing with the internals, try to work with small disjoint pieces of the puzzle. David Bernier Dec. 15, 1994 ================================ My approach was to define the Library System class dictionary. Once the class dictionary was designed, the next step was to define the operations that would be performed on that class dictionary. Lastly I designed the propagation patterns to implement those Library functions. Although this class was my first introduction to Object Oriented Design and to C++, I found that the Demeter System and adaptive S/W to be extremely flexible and a very powerful technique. This flexibility was important especially in this project when I had to make changes (of which there were many). I never had any problems with the basic Demeter tools: gen-imake, gen-make, make, run, make clobber, and make clean. Peter Monteagudo Hardware Design and Development Engineer Raytheon Company Missile Systems Division Labs in Tewksbury, MA Dec. 11, 1994 ================================= Overall, we learned that adaptive software allowed us to implement a fairly complex software system in a fast, flexible, and efficient manner. It reduced the amount of time devoted to actual coding and debugging, and allowed us to redesign parts of the package with very little effort. Rafael David Sarah Sullivan Dec. 11, 1994 =================================== It is my attempt to understand the answers to the question ... why your experience is that adaptability makes design easier while the experience with class libraries and MOPs is that design for flexibility is difficult. I think the difference is that the kinds of adaptability you have addressed have been focused towards letting programmers talk in concepts they already had rather than in artificial concepts, while class library design has focused on figuring out what new concepts are necessary to get new flexiblities. For example, you let the programmer talk about the wheels of a car without worrying about whether it is car.drive-train.final.wheels, while the CLOS MOP factored object initialization into two parts: basic initialization and re-initialization. In your case, the programmer gets the liberty of using a concept that they already had, rather than have to deal with a bunch of gratuitous details. In the CLOS MOP case, the MOP designers had to think very hard to realize that object initialization could and needed to be split in two, giving two new concepts. John Lamping Xerox Parc Nov. 11, 1994 (MOP = Meta object protocol) ===================================== The adaptive software work by Karl Lieberherr and his group is also very useful here because it's about telling you something about the way the internal data structures are arranged, but not too much about how they are arranged. ... and again, adaptive software plays in here because it is about being looser about the carving of the world. Gregor Kiczales, Xerox PARC, in his invited presentation at OOPSLA '94 (see http://www.xerox.com) ================================== From an anonymous course feedback form: Question: Do you agree or disagree with the view that class dictionaries and propagation patterns are a design notation which you can manually translate into the programming language which your employer has decided to use? Give an explanation. Answer: Agree. Learning the adaptive software notations ... has done wonders for my object-oriented programming without the Demeter Tools. Undergraduate student in the Northeastern Software Design and Development class ======================================== From hesham@bnr.ca Wed Nov 2 1994 From: "hesham (h.) el bakoury" To: "granville (g.) miller" Cc: lieber@ccs.neu.edu Subject: re:Demeter at BNR I have installed the Demeter/C++ system in BNR. It is now working and I have already use it for some simple OO programs. I am using the system to build adaptive programs and to get familiar with cd (class dictionaries) and pp (propagation patterns). The novel idea behind the Demeter system is great!; it decouples class behaviour from its structure which allows for easy and smooth evolution paths for OO programs. Once you get familiar with cd and pp the system saves you alot of coding. The adaptive programming techniques and the Demeter system and CASE tools can of course decrease development time and reduce time-to-market. I will pursue my work and investigation on Demeter to find out how we can adopt it in our real-time S/W development environment. Regards Hesham Bell Northern Research, Canada ================================================ The project I am working on ... is developing an object-oriented power system model in C++ for ABB Network Control in Vasteras. When the implementation of the model was almost done, I read your article on Demeter C++ in the Feb. 94 issue of the C++ report. It struck me that with a method and tools as you describe in the article, I would have been able to reduce the amount of time I spent on implementing and debugging my power system model drastically. It seems to me that the Demeter C++ system addresses exactly those aspects of C++ development that make implementing and comprehending a non-trivial C++ application tricky and time consuming. Is a commercial product ready today? Martin Falkevall Magistratsv 55 K324 S-226 44 Lund SWEDEN ================================================ Once the basics of OO analysis and design have been understood, Demeter should be very useful to make the step from design into programming much more intuitive and productive. The three most significant technical strengths of the Demeter System/C++ are: 1. supports reuse and maintenance; 2. supports abstract design (data-structure-shy); 3. supports higher productivity. I recommend software and book to the interested and EXPERIENCED reader/user. Willi Rossak New Jersey Institute of Technology June 6, 1994 ================================================= I believe that the Demeter approach is a significant advance in the art of software development ... because it allows the construction of object-oriented systems, but reduces the dependence of programming on the schema of the object dictionary. Terry Glagowski Washington State University June 7, 1994 ================================================== I've found Demeter to be very useful in regards to compiler design. For this homework, I developed a grammar using Demeter and 'sem-check -i' for an object-oriented language that is LL(1) compliant. The translation to EBNF form was then trivial. sem-check's analysis and violation reporting made the design of the grammar much faster. The grammar was then ready for input into the compiler-compiler LLgen: ... The scanner definition, designed for flex, is very similar to that of Demeter's generic parser. In fact, I used many of the patterns in lex-DEM.l for my scanner. ... I know Demeter is useful for many more things besides compiler design, but that is my main interest. Traversal and transportation specifications, along with wrappers, make coding such things as intermediate-code generation and optimization analysis much easier than tools such as yacc or bison. Andrew Purtell College of Computer Science, Northeastern University June 9, 1994 ------------------------- In response to the CACM paper, May 1994, pages 94-101. ... Adaptive software leaves ... the issues of partitioning the world into objects and navigation between objects flexible. I completely agree with your perception that this is a serious issue. ... It is also one that holds a lot of interest for the group I work in ... ... We discussed your CACM paper today at our weekly paper reading group, and came up with a couple of ways of looking at your system other than the "adaptive" description: "It's a tool that lets you do OO programming directly in terms of class dictionary graphs, bringing programming one level closer to OOA/OOD." "It's a tool supporting more powerful forms of object relative reference in OO programming than just slot access." John Lamping Xerox Parc around May 19, 1994 ========================= "I am very enthusiastic about the Demeter System, and feel it represents a major advance in software engineering (a field where "hard" advances are rare). I think it will also transform the way a number of areas of computer science are taught." ... I've been using the software fairly heavily and have a few comments on it. ... (I've been using it to teach a class and my students are using Demeter to design and build a text-adventure game). It is a remarkable system with many potential applications beyond the scope of software engineering (for instance Compiler Design can be done very effectively using the Demeter System.) "This is an extraordinary powerful software tool that will undoubtedly become a standard fixture in Computer Science curricula (and in several areas, including Compiler Design, Software Engineering, Artifical Intelligence)." ... "Extremely valuable --- I predict it will sweep the industry" Justin R. Smith Drexel University May 19, 1994 ========================= From a discussion on the patterns news group. The Visitor class reminds me of the Demeter work by Karl Lieberherr and his associates at Northeastern University. They're taking an approach that involves abstracting the "meat" of the behavior of a complex construct from the "skeleton" methods that deal with managing and navigating the construct. Their work also addresses keeping the abstraction valid across changes to the implementation of the construct. To do this, they use a graph notation to represent the class structure, and a "propagation pattern" language that tells, in a general way, how to distribute the meaningful methods and navigation methods across the structure. A propagation pattern may be applicable to many class structures, thus allowing changing the latter without needing to modify the former. A code generator does the work of creating the C++ code. A good introduction to this is in an article called "A Report on Demeter C++" in the February '94 issue of C++ Report, by Ignacio Silva-Lepe, Walter Huersch, and Greg Sullivan. If you can't get to this periodical, you might try emailing them at {nacho,huersch,gregs}@ccs.neu.edu. Don Dwiggins "Things should be made as simple as possible, Mark V Systems, Inc. but no simpler" dwig@markv.com -- Albert Einstein April 7, 1994 ============================ Our software initiative over the last two years, with special emphasis on Software Engineering and Object Oriented Programming will undoubtedly need to seriously consider the use of an adaptive software approach to be successful. Sam Daniel, Motorola March 4, 1994 ================================== I was very intrigued by the article I found in the C++ Report about Demeter C++ and decided to write you asking about its availability for real projects. It has many features we would find advantageous in developing our new project. What platforms is it available for? We have both Sparc and HP-UX platforms for which we would like to have it implemented. Can you help us out? Daniel Levine Johns Hopkins University Applied Physics Laboratory From: "Daniel J. Levine" Date: Fri, 18 Feb 94 11:35:41 "EST ================================= I really think you are on to something with Demeter. I think propagation patterns are very powerful. ... I think that the best part of Demeter is the "adaptive" part. Being able to modify the interface of a class or change the class hierarchy without major problems is a huge benefit of propagation patterns. C++ and OO languages in general do not address this problem. Joseph N. Coco, Software Engineer TASC, 55 Walkers Brook Drive, Reading, MA 01867 Dec. 20, 1993 ======================= I came up with a model to represent objects in Ada 9X under Demeter. To tell you the truth, with all my skepticism toward Demeter, I have to confess that Demeter helped me to get my model up in shape. If I may use allegory, Demeter is like the pencil and the eraser for a painter or a designer. You can sketch and erase as much as you like until you are satisfied with the final result. Ariel Lieberman, Dec. 1, 1993 Software Engineer, Alsys Inc., Burlington, MA ====================================== The Demeter Tools improves the process of writing C++ code especially in the area of eliminating the need to write many small "pass through" methods. The tools also allow the engineer to concentrate more time on the conceptual areas of the problem and less on the implementation details. Nicholas J. LaPlaca, Oct. 27, 1993 Dynamics Research Corporation =========================== A professional at IBM Switzerland who took my course, has sent the following letter to his colleagues working in various application development areas: (The original letter is in German and is available on request.) In August, I had the opportunity to attend the Summer School of the Swiss Computer Society on the topic: ``Object-oriented Analysis and Design with the Demeter Method''. The Demeter System is a very remarkable combination of methods and tools for object-oriented application development, as far as I can judge after a three day course. Therefore, I take the liberty, to inform you about Demeter. If you are interested in further information, please let me know. In the enclosure you find a current article on Demeter (by Huersch, Seiter, Xiao; to be published in Ed Yourdon's publication, the American Programmer). The following points appear important to me: 1. At the center of the Demeter Method is the class dictionary concept which at the same time models inheritance structures and assembly structures (one of the big difficulties of object-oriented application development). 2. The class dictionary develops from a data-oriented approach and serves as lattice for distributing the functionality. Thanks to the propagation patterns can the functional dependency between the classes be kept small. 3. The Method is programming language independent and works with graphs and a meta-language; the existing tools are based on this meta-language and can therefore effectively support the design (e.g., by automatically detecting certain design errors). 4. In the last step, the Demeter Tools generate C++ code. Demeter supports the complete application development process. The focal point is on design and code generation. Behind Demeter are six years of development work at Northeastern University in Boston, under the direction of Prof. K. Lieberherr. Since the Demeter System was developed to help teach students, it is relatively easy to use and can serve as an introduction to the object-oriented paradigm. The Demeter development work is supported by two IBM labs. Demeter is expected to be available as product this fall and it will run on SUN workstations and RS/6000. Thank you for your interest. Best regards, IBM employee, 1991 ============================= From dale@alux2.att.com Wed Nov 20 15:18:20 1991 Return-Path: Dr. Lieberherr, Thank you for your quick reply. After reviewing the free demo copy of Demeter, I will discuss plans for reengineering our existing VLSI layout generation tools with my management. My department head has expressed interest in providing funds for tools for a pilot CASE-analysis driven object-oriented design project in 1992, and Demeter appears far superior to the methodologies for C++-driving front-end CASE that we've seen from IDE (Software Through Pictures) & Cadre. My own most difficult constraint at present is finding time to do an evaluation of the demo copy of Demeter. I am also making a number of other Bell Labs software engineers who are migrating from C to C++ aware of Demeter, and they are planning to take a look at it. I will discuss costs (which are reasonable) and support (obviously Bell Labs has a tradition of working with Ph.D. candidates) with my department head after I have had a chance to examine the demo copy and talk with two of my colleagues who are doing likewise. I look forward to the prospect of working with Demeter. Sincerely, Dale Parson ============================= Anonymous reviewers of two of our works. "Propagation patterns are a sound and appealing approach. I believe that they can significantly simplify the writing of a good deal of object-oriented code, especially of code that conforms to the Law of Demeter." "Propagation patterns formalize techniques that are commonly applied by hand. They have the potential to be very powerful and useful." ============================ From jost@bronco.vlsi.tuns.ca Fri Dec 18 15:14:25 1992 Return-Path: Prof. Lieberherr: I wrote you in September asking for information on the Demeter Tools, and we received and installed the demonstration version in October. My research assistant, Doug Guptill, whom I believe you met at your recent tutorial in Vancouver has actually been doing all of the detailed work on this. We are working on a research project involving the design and demonstration of a visual hardware description language, which I mention only because I nave noticed from the literature that you also have some interest in HDL's. Doug has been using the tools intensively for several weeks now, and is very enthusiastic about them. He has also already run into the 20 class limit of the demonstration version. We would like to obtain the full version as soon as possible, as he now depends on the system for his work. I've looked over the product description, and it appears that we can purchase the full version for U.S.$1000 (presumably without support). It is not clear to me whether you distinguish between commercial and academic users. In any case, what do I need to do now to follow through on purchasing a copy? Do you require pre-payment in some form, or will a P.O. from our university purchasing department be sufficient at this time? To whom do we make out the order, to Demeter International or to Northeastern University? I would like if possible to obtain and install the full version by the first week in January, as the funding for our project expires in a few months, and we want to get on with our work. The university closes for the Christmas break next Thursday, so this means I should initiate the purchase order or a request for foreign check by about Tuesday if it is to get out of here before January. If I have not heard back from you within a day or so, I will attempt to reach you by phone or FAX. Thank you in advance. Allan Jost School of Computer Science Technical University of Nova Scotia Halifax, Nova Scotia, CANADA Phone: (902)420-7777 Email: jost@tuns.ca =================================== Experience report from Walter Saegesser in Switzerland +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ I write software mostly for PC's using Borland's Turbo-Pascal (DOS, Windows). For about one year and a half I have been working with the Demeter Method and Tools (adapted for TP). For me the Demeter Method was actually the breakthrough to become devoted to OOP (although I had been writing object-oriented programs before). Next I want to put the emphasis on propagation patterns, which are part of the Demeter method. Why do I use propagation patterns (PP for short)? Well, there are several reasons: 1. easy to learn 2. source code at one place 3. automatic source generation 4. tremendously supports adaptations after structure changes 5. minimizes dependencies between classes 1. Easy to learn. This was important for me. Otherwise I would have left them behind. It really took me only a few days to get used to PP. Of course the learning process still goes on as new possibilities are discovered. 2. Source code at one place. For one specific interface (method function or procedure) all the code for all involved classes is in the same file. That helps a good deal to keep the overview. 3. Automatic source generation. We were told that we could spare a lot (50% and more) of typing work. This really is true. Trivial code along the class-path is generated according to the structure of classes and data members. The less code you have to care about, the better you can concentrate on the important parts of the application. 4. Adaptations. For me this is one of the highlights of PP. Sometimes it happens to me (I don't know about other programmers...) that after having been walking a long way on the development-path of an application I come to the conclusion that I would have prefered another structure of classes after all. Well, I am more or less convinced that without PP I'd never take the pain to actually change the whole system unless absolutely necessary. With PP however the effort for such an undertaking is comparingly small, and you can't help thinking that PP are great! There are other aspects which fall in this same chapter. In general I find that whenever an interface is propagated on more than one class, PP simplify the first coding as well as changes of any kind. 5. Dependencies between classes. If you are using PP you can't help writing better structured programs. "Better structured" does not mean better class structures here but rather better calling structures. The Demeter Method defines rules about this matter. By working with PP these rules are met almost automatically. It's somehow hard to describe the advantages of PP on dry paper. You must feel them, get in touch with them. Once you have put hands on PP you do not want to miss them any more. Another little experience may show the facts of the case in another light. I had to write a program in C++ for which I do not have Demeter tools (yet). I was truly frustrated to have to do all the tiny boring hand-work: no generation of classes and files, no generation of standard methods, no generation of stream-registration, no propagation patterns, etc. Beware, if there should be a serious error in the design of the classes or - even more probable - if the customer comes up with some new ideas! Date: 31 Dec 92 13:29:42 EST From: Walter Saegesser <100114.2556@CompuServe.COM> ============ From felix@dbis.informatik.uni-frankfurt.de Wed Feb 10 09:33:01 1993 From: felix@dbis.informatik.uni-frankfurt.de (Felix Gaehtgens) To: lieber@sun375f.CCS.Northeastern.EDU Date: Wed, 10 Feb 93 12:33:41 MET hallo karl! ich experimentiere nun mit demeter herum, und bin auf dem besten weg, es bald verstanden zu haben. ich bin wirklich begeistert, solch eine arbeitserleichterung habe ich noch nicht gesehen. ;-) vielen dank, felix ======== From an OOPSLA '1992 tutorial attendee: (There were 52 participants from industry and government and only 5 from universities.) My initial reaction to Demeter (from the tutorial description in the advance publicity for OOPSLA '92) was very favorable. After three months of using the Demeter System/C++, it has lived up to my expectations, and more. It is, in my opinion, a major advance. It has greatly shortened the development time of our project. I'm glad to hear that the Demeter system is on its way to being commercial. I think it has a great future. From Doug Guptill, Feb. 11 and May 31, 93 (guptilld@tuns.ca) ================= I find the entire Demeter System really intriguing and -- even though my knowledge is limited to what I have read in the book -- I think that this could be the wave of the future. Object-oriented programming has already had a tremendous impact and this "adaptive" approach overcomes some of its limitations and provides, in essence, a higher-level description of object-oriented software. ... The presentation is nicely done and the manuscript reads surprisingly well. Feedback from a book reviewer, April 1993 ================= The Demeter Method is one of the best software engineering methods which I have ever seen. Phil Dunbar, Projectleader, Modicon Inc., North Andover and Frankfurt, April 14, 1993 ================= From pwbecker@cup.portal.com Fri May 14 11:00:35 1993 Subject: Ego boosting review quote Date: Fri, 14 May 93 07:58:37 PDT Karl, "...Lieberherr could do for the OO paradigm what Codd did for database management." The above quote from a tardy reviewer of your book. Congratulations! Paul Becker at Prentice-Hall Oct. 7, 1993: The reviewer identified himself as Professor James McKim, Hartford Graduate College, jcm@mstr.hgc.edu ================================================= From ehren@orden.cl Wed Sep 1 17:17:03 1993 Return-Path: From: Thomas Ehren Message-Id: <9309011950.AA21557@orden.cl> Received: by erizo.noname (4.1/SMI-4.1) id AA02578; Wed, 1 Sep 93 15:54:14 CST To: lieber@ccs.neu.edu Subject: Demeter System Dear Sir, a recent posting in comp.os.ms-windows.programmer.misc said: > If you want a nice and fresh approach, you should try the > Demeter system. Contact Prof. Karl Lieberherr at Northeastern > University, Boston, lieber@ccs.neu.edu. This is not an > academics/theorists system but a live, efficient set of > tools with a very nice and new visual approach. I would like to know more about this system, and if it's possible to try it (PD software?). Thank you in advance Thomas Ehren | Thomas Ehren | ACM Member Nr. 4022026 | | email: ehren@orden.cl | | | ORDEN SA., Huerfanos 1052 | | | Santiago / Chile | Per asperam ad astra. | ======================= The rough equivalence between relationships, behaviors, and message passing between objects is the essence of the Law of Demeter. This law forms one of the corner stones of the design approach of the Global Finance application architecture. Business Elements Analysis A major bank 1991