Goals for this course: RJLRef: $PH/08s522/08s522Goals080123.txt In this course I hope to convince you that the future of programming lies with Model-Driven Architecture (OMG/UML2/MDA) and its current and future commercial alternatives. These models can be developed by anyone who has mastered Object-Oriented Analysis and Design fundamentals and is supported by tools. An O-O data model can define database content AND runtime control flow behavior for any application, and this 'design database' of model diagrams can be stored in a version-controlled relational database (RDB). From there it can be applied to automatically generate source code libraries, which assist reduced amounts of lower-level user-written source code to execute many (if not all) applications. To divide and conquer this complex framework we are evolving Collaborative Object-Oriented Laboratory (COOL). This has three major components: GEN, LCP and BDE. COOL-GEN: GEN works as a pre-compiler to process models for any application's persistent database. GEN translates these data model[s] into a source code library (C/C++/Java) to access and maintain data for most real applications. Three versions of GEN (all written in C) produce C, C++ or Java code, respectively. COOL-LCP: LCP interprets behavioral models [state and interaction diagrams] which define rules for an application's runtime behavior. These models are also stored in the version-controlled design database. LCP is a run-time interpreter that obeys rules for event-driven control flow and executes (efficiently simulates) the application. The LCP event que and dispatcher can support concurrent threads and distributed processes. The LCP ionterpreter is written in C. COOL-BDE: BDE is a graphic editor for generic block diagrams. COOL uses BDE to draw block diagrams of class, state and interaction types. GEN and LCP get their inputs from relational database tables, and BDE represents these tables in a human-understandable way, since the RDB and graphic representations are two-way convertible. Converting BDE diagrams to/from GEN and LCP input tabular format is relatively simple because all three COOL components use a relational table format. In fact, GEN is used to generate code for both LCP and BDE, and LCP can provide a runtime interpreter for control flow within BDE, which has a state-model-based design. Of course, the COOL framework doesn't eliminate programming - it just pushes it down to the level of writing smaller individual class action methods that are invoked by LCP's event dispatcher. However BDE's graphic state models permit visualization not only of class-level control flow rules, but also of runtime simulations. A future goal is to animate or visualize object or instance-level behavior on state diagrams drawn by BDE. BDE has XWindows and Java versions. Anyone can try out this link: www.cs.uml.edu/~lechner/COOL-BDE/bde2java/bde2java04f/bde2java2 whose 'Run Application' button executes a block diagram editor (15K of Java code, 30 sec download on a cable modem). It works under MS/IExplorer and Java SDK but not Firefox. A bde2java User Guide is at www.cs.uml.edu/~lechner/08s522/bde2javaUserGuide080123.{txt,htm} and a bde Unix User Guide is at www.cs.uml.edu/~lechner/COOL-BDE/BDEUserGuide2005 A future goal is to produce a platform-independent version of BDE based on the FOX open-source GUI framework. ============================================ Bob Lechner lechner@cs.uml.edu www.cs.uml.edu/~lechner 781 449 1497