RJLRef: $PH/COOL-FAQ/WhatisCOOL.080126.txt What is COOL? ------------ If you are interested in a pedagogical UML2/MDA-like framework, I have long been developing a simple one for rapid prototyping as a legacy code re-engineering project in MS/CS OOAD and SWEng classes. I advocate an information-model-first approach, followed by control-state models a la Shlaer & Mellor: Object Life Cycles (P-H 1992). It is hard enough for new BS/CS senior and graduate students to comprehend to justify a 2-semester learnng curve. The ROI is they learn a lot about turning relational data models into internal data structures, behavioral modeling of event-driven control flow, combining State Models with 'Design Contracts' (http://www.cs.uml.edu/~lechner/OOSCCh11r1/index.htm) and generating compilable source code from platform-independent models. It would make a (cool) open source project for educational purposes. Check out http://www.cs.uml.edu/~lechner/COOL-... COOL is a framework for MDD with 3 components GEN, BDE and LCP. GEN is used inside of BDE and LCP; LCP will soon be used inside of BDE. BDE and LCP are primary test cases for GEN, and BDE is a (TBD) test case for LCP. (I practice what I preach. :-) GEN includes three back-end code generators to manage a persistent RDB: chgen, gencpp and genjava. LCP and chgen (v13) are stable on Linux 32bit and alpha 64bit platforms; gencpp and genjava are not. BDE is a graphic Block Diagarm Editor with 2 versions: BDE[Unix] for XWindows and Bde2java for Java. BDE for X11R6 is fragile; Bde2java is incomplete. Until BDE provides robust graphic editing of models inputs to GEN and LCP, they must use text-based work-arounds. The COOL Approach to MDD: -------------------------- (MDD = Model-Driven Development) GEN Features: GEN generates C/C++ or Java code for managing 'CRUD' (Create/Retrieve/Update/Delete) transactions and interfaces a persistent RDB to main-memory-resident data structures. It is used in COOL components or other COOL-based applications to design software top-down. GEN's data models are based on the Bachman DSD subset of ERDs extended with inheritance; i.e., simplified UML class diagrams. Its internal representation uses intrusive data structures similar to ones recomended by Jiri Soukup. Its metadata follows the same simple model, so GEN can be bootstrapped. The code library from GEN supports persistence, runtime access and navigation, logging and replay of all database changes. The log/replay option supports distributed systems. Gencpp generates C++ code from the same data model with a similar API and optional STL containers. All persistent data is ASCII and compatible with line-oriented source code version control systems. LCP Features: LCP is A runtime interpreter of control flow based on textually declared Event Types and Instances and State Transition tables for Active Classes and Instances. Similar to Shlaer and Mellor's Object Life Cycles. LCP uses chgen for data and metadata I/O and navigation. It models control flow with nestable Moore state-machine models and calls compiled code for each state action. BDE Features: BDE uses a node-edge graph model to draw block diagrams; these can be styled as and converted into Class Models or RDB schemas for chgen, or State Models and Communication Diagrams for LCP. BDE's graphic code is commented with state models. BDE is currently single-user but Distributed BDE for multi-user collaborative editing is a future goal. Diagrams can be converted by bde2htm into web-browsable form, with hotspot nodes linked to subdiagrams or to state action source code, Main constraints: Namespaces are not used so the tools do not scale up to industrial strength aplications. Most of the code is in CVS but it is student-developed and verbose and needs a lot of refactoring before collaboration is reasonble. --------------------------------------------- Forwarded message: > From owner-sigcse-members@LISTSERV.ACM.ORG Sun Feb 27 20:30:27 2005 > Message-Id: <200502280130.AQA01230@tegan.cs.uml.edu> > Date: Sun, 27 Feb 2005 18:14:20 +0100 > Reply-To: "Peter Sommerlad (ACM)" > Sender: SIGCSE Member Forum > From: "Peter Sommerlad (ACM)" > Subject: Proposal for OOPSLA Panel and Workshop on Teaching Pragmatic Software Engineering? > To: SIGCSE-MEMBERS@LISTSERV.ACM.ORG > Sorry for duplicate delivery, but it didn't seem to have come through > the list first time. > > Hello alltogether, > > I plan to submit a workshop and a discussion panel for OOPSLA this year > on the topic: > > Teaching Pragmatic Software Engineering > P advantages: > learned how to apply the ideas and underlying values successfully. > However, the typical educator lacks the chance to experience agile > software engineering approaches personally in practice, because of other > obligations. This makes teaching agile especially pragmatic software > engineering hard, since most existing literature addresses experienced > software practitioners and their managers and is hard to digest for > inexperienced students. > > I practiced agile approaches, such as consequently writing automatic > test, with my team in my former life as a programmer and head of > programmers. Now, as a professor I am looking for good ways to have > students learn those approaches and also to have other professors > unlearn their believe in other more classical software engineering > approaches, which are not very useful in many smaller project settings IMHO. > > PANELISTS wanted > ================ > I am looking for potential panelists who either already teach pragmatic > software engineering or who believe it is not what we should teach or > have another strong opinion about it. > > Workshop Organizers wanted > ========================== > I am also looking for other educators who want to or are already > teaching Pragmatic Software Engineering to organize and conduct a > workshop on sharing teaching approaches, experiences teaching it and may > be also teaching material. Outcome of the workshop should be a guideline > and may be also a material collection useful for teaching agile and > pragmatic approaches to students learning to create software (in > whatever official subject they are to be promoted). > > Deadline for OOPSLA submission is short, so please get in contact asap. > > Yours > Peter. > > -- > -- > Prof. Peter Sommerlad > > HSR Hochschule für Technik Rapperswil: http://hsr.ch > Oberseestr 10, Postfach 1475, CH-8640 Rapperswil > > tel:+41 55 222 49 84 == mobile:+41 79 432 23 32 == > mailto:peter.sommerlad@hsr.ch > --------------------------------------- RJL Response: From lechner@cs.uml.edu Mon Feb 28 01:45:53 2005 (rev. 080126) From: Bob Lechner Subject: Proposal for OOPSLA Panel and Workshop on Teaching Pragmatic Software Engineering? (fwd) To: sommerlad_peter@ACM.ORG ... [earlier version of content above] ... Bob Lechner Prof Emeritus and Adjunct CS Dept UMass Lowell lechner@cs.uml.edu