University of Massachusetts - Lowell
Computer Science Department

Object-Oriented Software Engineering
www.cs.uml.edu/~lechner Home Page #3

Professor Robert Lechner

(Last update: 8 January 2008)

Welcome to the OO Software Engineering Web Page3
with links to OOAD and Software Engineering Projects.

This page is under construction.

TBD: Include links to more recent projects

(bde2fox, SetGame, Hominid, BdeState, etc.)


Index of 03f522 OOAD Project Reports (Fall 2003):

(TBD)


Index of 03S592 Software Engineering Project Reports (Spring 2003): 

·           bde2java03s:  BDE2Java_Report.htm


Index of 02F522 OOAD and 02f592 Software Engineering Project Reports (Fall 2002):

·       02f522Hominid via LCP, 02f592  bdeReplay Projects           (LCPphase2andBdeReplay.txt)

·       02f522 JPsim2genv12 Report (Revised 031116)                                (jpsimreportRev03f.txt)


Index of 02S OOAD and Software Engineering Project Reports (Spring 2002):

·  Hominid Animation Project - Introduction

·  Hominid Animation Project - Team Reports

·  02s522 OOAD Hominid Navigation Projects (Spring 2002 semester)

·  02s592 Software Engineering BDE Replay Project (Spring 2002 semester)


Index of 01F OOAD and 01f523 Software Engineering Project Reports (Fall 2001):

·       bde2_BdeState Project:   Team bde2's  state-splitting attempt prior to refactoring bde/src code to move state models into class methods  (HG, HN, HL, HP. CG,  etc) and then select each of them as a class method (Add, Move, Restyle, Resize, Delete, etc.) with a small number (1 to 3) OLC states within the State Model for an operation.                                                                                               

·       bde1_bdeEventlog Project:   P Kingston's  project to copy X11 event structure data to an Event Instance (EI) row so it gets logged by bde.  This prepares for tracking mouse move and button-press events to log and share them across windows.


Index of 01f522/02s522 slide presentations (Spring 2002 semester):

·  BDE (Block Diagram Editor) User Guide (.gif version, Rev. 2k0504)

·  BDE (Block Diagram Editor) User Guide" (Office2k/ppt version Rev. 2k0606)

·  Object-Relational Databases - COOL/GEN approach (PowerPoint Slides)

·  Refactoring with GhostVariables 2k0206 (PowerPoint Slides)

·   Coherent Models for OOA, OOPSLA '91 (95f523)


Index of 99f522 slide presentations (Fall 1999 semester):

99/9/27: Finite State Models for a Pascal Comment recognizer.

Microwave Oven Controller Project Design Rationale and Schedule

[NOTE: If you have [a viewer for] MS PowerPoint V4.0 or later, download the .ppt (v4) file to view it. This is much faster than browsing the slide show via a 56KB modem.]


Index of 97f522 slide presentations (Fall 1997 semester):

EER (Extended Entity-Relation) Data Models Tutorial 970910

EER (Extended Entity-Relation) Data Models Tutorial 970910

COOL-FAQs (Intro to Collaborative Object-Oriented Laboratory) 970923


Notes on object-oriented legacy software projects: (This has been relocated after the following hyperlinks which are relevant to OOAD - RJL 031016 )


Index of GEN tool documentation

(under construction - RJL 2kf):

COOL-GEN/chgenv11r2UserManual.doc: (Latest compete and self-contained User Manual (in $CASE/gen/ver_11, featuring genlog from the genmerge project.

COOL-GEN/chgenv12r1.doc: Extending genv11 to Log and Replay BDE


Final Report2 on 02f522 conversion of chgen to gencpp for g++ and VC++. (COOL-GEN/gencpp/gencppFReport2_mo_rl.htm; For Figures, see .doc version)  (A summary of gencpp is under 'Notes on object-oriented legacy software projects' below).

Alternate MSWord .doc version of gencpp report.

Hints on bulding and running gencpp (ntansala)

Index of GEN tool documentation:

pGen93s523: Encapsulation of field access in chgenv7 code library.

(For relevance to genv11, see MSWOrd version with footnotes and properly indented source code fragments in $CASE/93s523/pGen93s523Finalv2.doc)

Data Modeling Support to C Programmers

(A LaTex/PostScript paper on the philosophy behind the GEN part of our COOL framework.)


The BDE User Guide 2000 is the BDE User Guide which describes how to use both bde and bde2java. It contains an option to download the PowerPoint source file bdeUG.ppt.

The bdeJava User Guide discusses differences of the 97s523 Java version of BDE from BDE for unix/X11/Motif.


Index of projects by semester then topic:

 

Index of 03f522 OOAD Project Reports (Fall 2003):   

(TBD)


Index of 03S592 Software Engineering Project Reports:       

·           bde2java03s:  BDE2Java_Report.htm


Index of 02F OOAD and 592 Software Engineering Project Reports:

·       02f522Hominid via LCP, 02f592  bdeReplay Projects           (LCPphase2andBdeReplay.txt)

·       02f522 JPsim2genv12 Report (Revised 031116)                                (jpsimreportRev03f.txt)

 


Index of 02S OOAD and 592 Software Engineering Project Reports:

·       02s522 Hominid Animation Project - Introduction

 

·       02s522 OOAD Hominid Navigation Projects  

·       02s522 Hominid Animation Project - Team Reports

·       02s592 Software Engineering BDE Replay Project  


Index of 01F OOAD and 01f523 Software Engineering Project Reports

·       01f522 bde2:_BdeState Project:   Team bde2's  state-splitting attempt prior to refactoring bde/src code to move state models into class methods  (HG, HN, HL, HP. CG,  etc) and then select each of them as a class method (Add, Move, Restyle, Resize, Delete, etc.) with a small number (1 to 3) OLC states within the State Model for an operation.                                                                                                 

·       01f522 bde1:_bdeEventlog Project:   P Kingston's  project to copy X11 event structure data to an Event Instance (EI) row so it gets logged by bde.  This prepares for tracking mouse move and button-press events to log and share them across windows.


Index of 98s thru 2kf Projects:         (TBD)


Index of 97f522 projects:

·       97f522 JuicePlant Browser Update Project

(Our first non-trivial application of bde and bde2htm; its diagram file contains data model and state model diagrams to define the state and simulate the behavior of the Juice Plant case study in Shlaer-Mellor's Object Life Cycle text.) [This DEMO can be viewed but most rectangles expand only to their own node list. (Some) nodes expand to diagrams or source code in the JPsim Demo at Index of 96f522 projects: 96f522/JuicePlant2html Project Menu - RJL 030905]


Index of 97s523 projects:

·       97s523/bde2gif bdeJava Report

(linked to $CASE/97s523/bde2gif/hren/report.htm)

·       97s523/bde2ht1 Demo

(linked to $CASE/97s523/bde2ht1/lechner/public_html/index.htm)

·       97s523/bde2ht2 Node Ops Demo  (linked to $CASE/97s523/bde2ht2/PROJECT/NODEOPSDEMO/index.htm)

·       97s523/bde2ht2 Text Ops Demo  (linked to $CASE/97s523/bde2ht2/PROJECT/TEXTOPSDEMO/index.htm)

·                 bde2gif Demo  (linked to $CASE/97s523/bde2gif/bde2gifSCD/index.htm)

·                 GENCPP Project (GEN C++ output)   (linked to $CASE/97s523/gencpp/bhu/doc/97sugencpp_rev.html)

(Others TBD)


Index of 96f522 projects:

·       96f522/JuicePlant2html Project Menu

·       Logic Simulation Using State Models    (linked to $CASE/96f522/omcgonag/doc/OMcGFFwd9.doc;
This is a Word97 document with readable diagrams.

·       Life Cycle State Model Interpreter     ( copy of $CASE/93su523/olc/base/doc/jparchitecture/newarchitecture.pdf)

(Others TBD)


Index of 96f523 projects:

96f523/bde2sql Project Menu
96f523/bde2ht1 Project Menu
96f523/bde2vj++ Project Menu(TBD))
96f523/bde2vj++ Project Report
96f523/bde2kmap Project Menu
96f523/bdecode Project Report
96f523/bde2java Project Menu(TBD)
96f523/bdecode Project Menu(TBD)
bde2JavaApplet.html(TBD)


Index of 96su591 projects: 

The bde2jav1 project was extended to a full-fledged block diagram editor by Manuel Fernandes and Dan Rosato in project course 96su591. The following URLs contain javadoc-browsable class documentation for bde2jav1:

·       bde2jav1: java version of the block diagram editor

·       bde2jav1: javadoc browsable documentation

·       bde2jav1: demo of the java version of bde (NotAv)


Index of 96su523 projects:

·       bde2ht9: State Diagram to Source Code browser demo

·       bde2ht4 project


Index of 96s523 projects:

96s523/bde2ht1 Project Menu
96s523/bde2ht2 Project Menu
96s523/bde2jav1 Project Menu
96s523/bde2jav2 Project Directory
96s523/bdesym Project Menu
96s523/gendft Project Menu (.html not available))
96s523/genlog Project Menu (.html not available)


Index of 95f523 projects:

·       95f523/bde2ht3 Project Menu

 


91.204/309 Syllabi

·       01s309 Database I (Spring 2001)(Syllabus)

·       01s309 Database I (Spring 2001)(Reading Assignments)

·       01s204 Computing IV (Object-Oriented Compiler Construction) (Spring 2001)

·       02k204 Computing IV (Object-Oriented Compiler      Construction)(Fall 2000)

Index of 99f204 slide presentations:

·       Nested FSMachines to separate Pascal code from and skip comments 990926

·       Recursion and Iteration in Syntax Diagrams (six slides) 991014

·       Eleven Finite State Models 99f523


 

Notes on object-oriented legacy software projects:

[Project root directories are rooted at $CASE = /usr/proj3/case. Course directory roots use the naming convention yyszzz. Here, yy = [91..99], s = s/su/f, and z = 522/523 identify the academic year, semester and course number respectively in which the project was conducted. E.g., 96f523 is the 1996 Fall offering(s) of course 91.523.]

Generic Tool Summaries:

·  LCP stands for Life Cycle Prototyping.

·  BDE stands for Block Diagram Editor.

·  GEN stands for database code GENerator.

Most of the projects indexed here involve prototypes of three generic CASE tools described in the COOL slides above. These tools have been continuously evolving for multiple languages, GUI's and hardware platforms. They are carried out within ongoing projects of graduate OOA&ampD (91.522) and Software Engineering (91.523) courses. These courses are taught by Professor Lechner within the Computer Science Department.

GEN supplies database code libraries by which BDE and LCP can import/export, maintain and navigate an arbitrary normalized EERD database. (EERD denotes an entity-relational data model extended with inheritance.) (see also gencpp below).

BDE is a generic diagram editor, whose data model is described in the BDE slide presentation referenced above. Historically, BDE evolved first as a C program interfaced to INGRES It ran under Unix and used X11/Motif as its GUI. Then BDE was rewritten in C++ and was adapted to take advantage of GEN.

LCP is a generic table-driven State Model (SM) interpreter which simulates concurrent event-driven behavioral prototypes. Its State-Event Model inputs represent Active Classes as in the text: [Shlaer-Mellor: Object Life Cycles, Prentice-Hall 1992].

All three tools read ASCII-text-based tables that can be manually text-edited and converted to EERD or State-Event Model (SM) diagrams for BDE display. However, BDE simplifies the use of GEN and LCP because users can draw block diagrams (static information models and dynamic behavior models) interactively and save them in a persistent relational database as ASCII text. These tables subsume graphic layout information as well as semantics of user-defined types.

BDE and LCP both take advantage of customized GEN-supplied code libraries which can import/export, maintain and navigate tables of an arbitrary normalized relational data model. A GEN-supported database application maintains surrogate primary/foreign (p/f) keys to simplify access. (Human readabilty is less important within CAD/CASE tools, whose content is seldom directly read or updated by its users.)


BDE Diagram Conversion (bde2*) Projects:

To convert BDE diagrams to (and from) the metadata formats of GEN and LCP respectively, various data conversion projects were also implemented. Project names bde2* with prefix "bde2" have been used for these projects:

·  bde2SM and SM2bde for BDE to LCP conversion

·  bde2sch = (b2t+t2s) and sch2bde = s2t+t2b for BDE to GEN conversion.

BDE Language/Platform Conversion (bde2*) Projects:

Projects which do hardware platform and GUI environment conversion (port the software) also use project names with prefix bde2*:

·        bde2ht*: Conversion of BDE diagram sets to HTML for Web browsing

·        bde2VCPP, and bde2alpha: Ports of BDE source code to WinTel and DEC/alpha/DigitalUnix platforms respectively.

·        bde2jav* and bde2PC: Rewrites of BDE to the Java language and to the platform-independent wxWindows GUI respectively.

BDE Diagram Conversion to HTMl and .gif format for web browsing (bde2ht*):

·        Bde2ht* is a family of projects to produce interlinked web-browsable images with hotspots at each node of each BDE block diagram.

·        Bde2ht3 was a 95f523 project to convert a file of block diagrams, that were generated by the Block Diagram Editor BDE, into a set of .html, .gif and image-map files. Hyperlinks are automatically generated to link any node of any diagram to refinements or expansions defined by other diagrams and/or text. Each visible node in any diagram can have two clickable hotspots defined as its upper or lower half respectively.

·        The bde2ht3 project was extended by spring 1996 projects bde2ht1 and bde2ht2. These projects update index and menu files after new html files are produced by bde2ht3, and provide email forms to add a row to any database table of any schema that is compatible with GEN, our database code generator.

Bde2ht3 Project Demo

BDE Ports to the Java(TM) language (bde2jav*):

·        The bde2jav1 project in 96s523 and 96su591 partially completed a Java implementatiion of a BDE block diagram browser and editor prototype, respectively. These are partly functional and have veen extended and documented with javaDoc. They work by down-loading a BDE diagram file and converting it into Java classes. Java applets display the diagrams and detect their hotspots. This avoids bde2ht3 preprocessing but expands a single bde data file to three files per diagram.

·        The first bde2Java project represented the clickable hotspots by small pink or gray squares at the right sides of each node; later, these were made invisible. [Project 96s523/bde2jav2 allows email returns of the content of one row of any table when this row of a schema diagram is selected.]
In 97s523, project bde2gif improved both the bde and bde2java editors by adding an option to convert one or all diagrams to .gif format. This is a prerequisite to and simplifies bde2ht* conversion, and now both C++ and Java versions of bde can generate .gif files.

Ports of BDE to Microsoft's Visual C++ (bde2vcpp):

Several projects produced and improved this version of BDE, which is not yet complete (and may never be, since a PIGUI is preferable.) (PI = platform-indepenent)

 

 

 

Gencpp: A class-based version of chgen (rev. 010827; URL TBD - RJL)

·        Both chgen and gencpp support a normalized object-relational database for complex objects, chgen's API manages structs and functions in C, while gencpp manages corresponding classes and methods in C++. When imported to memory-resident form, a GEN-defined database supports imbedded pointers and O-O navigational capability.

·        A The GEN-defined database is appropriate for handling complex transactions such as editng a graphic CAD or OO-CASE design database. The evolution of chgen to gencpp will generate classes with method declarations and containers instead of relational tables and demonstrate an evolutionary, not revolutionary, path from RDB to ORDB and OOAD methodologies.

·        The jury is still out about object-relational databases and their evolution. Tom Janzen critiqued an early version of gencpp; Naiyana Tansalarak completed the latest one, for which Kathy Miu fixed alpha 64-bit port warnings. Similar port fixes are needed in chgen - whose bde/pr_util library API support code was manually edited but is not yet auto-generated correctly.