Dear John: here are some testimonials from users of our software. -- Karl ================================== "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 ========================= 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 =================================== 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 ================================================ 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 ------------------------- 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 ======================= 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 ============================= 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 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) =================