/* $PH/05f523/index.htm - RJL050905; last rev: 050913 */

/* This is an index to the 01f523 course home page */

/* at cs.uml.edu/~lechner/05f5523 on the web.                  */

/* UML/CS account holders can see much more at */

/* $PH = ~lechner/public_html and $CASE = /usr/proj3/case.*/

/* RJLtalk2CS050921.htm*/

/* RJLtalk2CS060301.htm*/

 

91.523 Course Info:

Update for Fall 2005 (01f523):  ./05f523Update.txt

 

Tentative Schedule, Fall 2005: 05f523Schedule.htm               

                                                    ./05f523Schedule.xls

Links to Assignments: 

05f523 Assignments 1 and 2:    ./05f523asgnt1-2.txt     

         

05f523 Assignment 3:     ./05f523asgnt3.txt 

 

Textbook links:

Link to KDBC: Database Concepts:

          ../Kroenke

Links to slides and figures in OOSE text:

          ./OOSEChapterLinks.htm 

Information on Collaborative O-O Laboratory COOL:

 

Frequently-Asked Questions (rev.050903):

          ../COOL-FAQ/COOL_FAQv6.PPT

BDE

GEN

LCP

          COOLFramework Risk Factors: $PH/05f523... 

Information on CVS: ($PH/cvs/*)

          ../cvs/CVSBestPractices.html

          ../cvs/cvsManualV10RevisionTree.html

          ../cvs/cvs_tutorial.pdf

 

 Information on Block Diagram Editor BDE

../COOL-BDE (Block Diagram editor)

 

Data Models for BDE:    

          ../COOL-BDE/bdeUG_2005DataModels.ppt

          ../COOL-BDE/bdeUG_2005DataModels.mht

 

User Guide for BDE:      

          ../COOL-BDE/BDEUserGuide2005/bdeUG_2005.htm, bdeUG_2005.ppt

         

 

Pre-2005 Info on building BDE:        

          ../COOL-BDE/How2BuildBde_98s_hh.txt

          ../COOL-BDE/How2BuildBde_97s_faq.txt

 

BDE Browsing Alternatives - RJL050919

          ../COOL-BDE/bdeBrowserAlternatives.htm

 

BDE Distributed applications:

          SetGameProtocol: ./04fdsg_raReportR05f.doc

          SetGame04f Report: ./ DSetGameProjRept_ra_rl06f.doc

 

Information about bde2java:
          $PH/COOL-BDE/bde2java/bde2java04f/bde2java04fStatus050924.txt

          (This  applet  creates and edits multi-diagram files local to your PC.)

 

Click here to run latest version of bde2java (04f523/smandava,jma & 05s523/kyang):

          $PH/COOL-BDE/bde2java/bde2java04f/bde2java/

 

Information about COOL-GEN:

../COOL-GEN  (Code generators and data models):

 

Data Modeling Tutorial:  

                    ../DataModels05fr1.mht

                    ../DataModels05fr1.ppt

Object-Relational Databases:     

                    ../Obj-RelDBv05f.mht

                    ../Obj-RelDBv05f.ppt

 

Structure Chart documentation

(of genv11, gencpp, and the code they generate):

          $PH/COOL-GEN/gencpp/gensrcStructureCharts_nt.ppt

 

Structured Design is graphic documentation of program organization in the form of labeled Call Tree diagrams with argument flow labels on the call links, and looping and conditional annotations on the caller end. These 34 slides by Naiyana Tansalarak are a valuable contribution both to illustrate the value of Structure Charts for program  understanding and to document COOL-GEN operation. (The call tree diagrams do not include link labels showing call arguments, hence they are not complete Structure Charts).

 

Four types of COOL-GEN code are documented: 

          (1) slides    1- 6:    gen/src;

          (2) slides   7-14:    gencpp/src;

          (3) slides 16-23:    pr_*.c code (output from genv11)

          (4) slides 24-33:    pr_*.cc code (output from gencpp)

Slide 15 is a flow chart of the refactoring process;

Slide 34 is the ERD for schoodb.sch.

This test data model contains five entity types; two are binary associations.

 

Chgen User Manuals and reports

          This is a partial list covering only the most significant and comprehensive

versions of chgen. These include genv8, genv10, genv11 and genv13.

 

genv8:  $CASE/gen/ver_8/doc/{genv8_UserManual.*, genv8_report.*}:

 

This is the easiest starting point to learn chgen basics. It merged the genv7 project

that allowed either 8-byte (the default) or 12-byte [option -keysize = 12] ASCII keys

and compressed them to 32-bit unsigned ints, with another project that incorporated

access macros that later incorporated  change-logging.

 

The genv8 UserManual retains the earlier tutorial and example of programming with the pr_*.c API.

It is also the last version whose UserManual and Report docs are written in LaTex

(.tex, .dvi, .ps, .pdf)

 

 

genv10log: $PH/COOL-GEN/chgen_docs/genv10log_manual.pdf

 

This is the latest report that covered all chgen options and a comprehensive  tutorial

with complete example code.  It developed the first complete solution

to the problem of logging and replaying database changes with the goal of  debugging

state-based code designs  and synchronizing multiple interactive users

for distributed collaboration and competition.

 

 

genv11merge (Karner and Spinney, 990512):

$PH/COOL-GEN/chgen_docs/genv11projectDocs/genv11_project.htm

 

This is the Final Report for chgen version 11.  This merged genv10log with RRassman's set/get field log and replay macros. It added an option (-datinput) to pr_load schema content from a <schema>.dat file,  as an alternate to parsing a <schema>.sch file.

 

Section 2.3  contains a good writeup on how to use CVS  (except for the cvs log command and -A option)

 

Section 6 is a comprehensive discussion of chgen evolution  beyond gencpp, with class-based concrete methods replacing pr_*.c's switch(tabletype) case branching:

 

 

chgenv13 (05s523: sboddire, lmalladi, mmulaka, 050517):

$PH/COOL-GEN/05s523Genv13FRept_SBLMMM050519.doc

 

The genv13 project in $PH/05s523 and $PH/04f522 was a significant upgrade

of genv12 to generate more changes defined in bde/pr_util for bde log and replay.

In this respect it was similar to NTrivedi's upgrade of genv11 to genv12.

Genv12 and genv13 changes were also merged onto the main trunk

of the CVS repository with non-branch tag RootOfGenv13

and branch tag Genv13Bugfixing.

 

Genv13 also generates a new file pr_accessors.c, which contains class-based

access functions for all table attributes of its input schema.

[see Appendix F: Get|Set Macros Expansion.]

These functions were generated by macros in olc3common.h (in COOL-LCP below).

Genv13 now auto-generates these macros as ghost functions for  

the pr_set/getType macros, with the goal of refactoring bde code to replace

all pr_set/get macro calls.

 

During summer 2005, RJL upgraded chgenv13's build process for  dual-platform

log and nolog versions and changed the default options to -ansi and -nobp;

the deprecated non-defaults are now  -noansi and -bp.

 

          $PH/COOL-GEN/genv13 = $CASE/gen/ver_13

 

Gencpp:     

          $PH/COOL-GEN/gencpp/gencppFinalReport_km_mo.doc

          $PH/COOL-GEN/gencpp/2kf522_gencpp_nt_rl.txt

          $PH/COOL-GEN/gencpp = $CASE/gen/gencpp

 

Gencpp is a C++ class and STL-container code generator

which evolved beyond genv11's recommendations.

 

For a comparison of gencpp [-DUSE_STL] option effects

when generating  bde/pr_util/pr_*.c[.cc] from 94sbde_schema.sch:

$PH/COOL-GEN/gencpp/gencppComparison/testgenv12bde/aareadme_testgenv12bde

 

Genjava:

This version of chgen is written in Java and generates Java class code instead of C or C++.

The one on COOL-GEN is from $CASE/02f522/genjavaProj/ntrivedi.

This is not the most recent version of bde2java - it evolved further

by smandava and jma in $CASE/04s522/bde2java04s.

 

The most recent version is in $CASE/04s522/bde2java04s.

This is not browsable from $PH yet. Its further enhancement

will be along the lines of integrating it with genjava, as bde

gets integrated with gencpp.

 

Gencpp/genjava integration comments to RAlmonte in  05s523:

http:/www.cs.uml.edu/~lechner/COOL-GEN/gencpp_genjavaIntegration050328.txt

 

My vision for Namespace and Schema Integration for chgen/gencpp is proposed in

          $PH/COOL-GEN/NamespaceAndSchemaIntegration050915.txt

 

 Information about LCP

../COOL-LCP (Object Life Cycle Prototyper / State Model Interpreter)

          $PH/COOL-LCP/jparchitecture

          $PH/COOL-LCP/JPsimProj_js_tk/jpsimreportRev03f.txtt

 

LCP (Life-Cycle Prototyping) is based on an Event-driven State Model Interpreter.

This was inspired by the Shlaer-Mellor text Object Life Cycles (P-H 1992).

That text modeled a process-control plant for blending and pasteurizing fruit-juice.

Course 91.522 implemented this simulator to demonstrate the GEN and LCP components.

The JPsim project continued to evolve over 7 semesters: 95s, 95f, 96s, 96f, 97f, 01f and 02f.

 

The goal of the last (03f) project was to compile the juice plant simulation

on a 64 bit Alpha machine using genversion12. It did not succeed due to porting problems

which we anticipate to be solved in chgen13.

 

In 1996, all the graphics in the JPsim demo were converted to html and gif files with

hyperlinked hotspots in each diagram node. Entity types on each EERD were linked

to their data declarations. Active (Entity) Classes were also linked to their State Model

diagrams. States on these diagrams were hyperlinked to their Action Routine source code.

The results can be browsed at this URL:   

          $PH/COOL-LCP/JP2html/public_html/

 

(../COOL-LCP also has links to other object-life-cycle prototype design projects.)

 

 

======================================================================

Opinion by  OMG partners and critics:

ADTF Discussion thread on UML2/MDA:../OMG//uml2ocl_ed2gb050816.txt

Critique of  Model-Driven Architecture:            ../OMG/UML2MDA_JonKernCompuware0508.htm

Another Critique of MDA:                            ../OMG/uml2mdacritique020923.txt

User Involvement in Requirements -   ../OMG/GUIReqtsCaseStudy050805.txt

More OMG/ADTF UML2MDA doc links:   ../OMG

 

Links to previous courses:

 

Syllabus for 91.523 (Obsolete/TBRevised): ./05s523syllabus050131.htm

 

Link to last semester's 91.523 course: ../05s523