RJLRef:$PH/08s522/08s522aareadme.txt where $PH is my home page http:/www.cs.uml.edu/~lechner I would like to welcome interested senior and graduate students to course 91.522 Object-Oriented Analysis and Design. This course will be held again this Spring 2008, on Monday evenings 530-830 PM on the Lowell campus of Middlesex Community College. Registration permission numbers are available from Prof Canning or myself. Prior O-O programming experience and one or more MS/CS core courses is recommended. COURSE OVERVIEW: 91.522 OOAD begins a sequence whose follow-on course is 91.523 Software Engineering I. If under-enrolled, 91.523 may be replaced by a Project course with the same content. The focus of this sequence is 'Model-Driven Development' or MDD based on the Unified Modeling Language UML2 standard promoted by the Object Management Group (OMG) comnsortium. [OMG's name for MDD is Model-Driven Architecture (MDA).] When code for data management is auto-generated and runtime control flow is interpreted, actual programming can be reduced to writing individual state action routines (C++ or Java methods) which obey 'design contracts' (pre- and post-conditions). State diagrams represent many of these constraints graphically. COURSE TEXT: In the spring 2008 semester, course 91.522 OOAD (08s522) will use this textbook: [UMLP]: Craig Larman: "Applying UML and Patterns, Introduction to OOA and D and Iterative Development" (3rd Ed., PH-PTR 2005). Larman's text was highly recommended by previous students as the most readable tutorial on the subject of OOAD. This third edition applies Design Patterns [DPs] within an agile or incremental test-driven style of development. Larman uses the notation of Unified Modeling Language version 2 which includes Model-Driven Architecture [UML2/MDA]. This course will explore follow-up subjects that go well beyond the scope of Larman's text. COURSE CONTENT AND GOALS: (1) Learn the basic UML2/MDA models which are portable across a variety of implementation languages and platforms. These models are detailed and precise enough to be translated automatically into executable code. They are augmented by 'Design Contracts' that specify testable software behavior using UML2's 'Object Constraint Language' (OCL) for this purpose. (2) Learn the internals of a local code generation framework called COOL (Collaborative Object-Oriented Library), and use it to specify models that are precise enough to support automatic code generation, using a simplified UML graphic notation. Two types of artifacts can be generated by the COOL Framework: (A) Code libraries for application database management (B) Tables to drive a generic interpreter for runtime control flow. Our COOL Framework includes three components: * BDE (Block Diagram Editor) to edit model diagrams and convert them to inputs for GEN and LCP in relational table form; * GEN to parse data models and generate a code library for persistent data management and access; and * LCP to interpret an application-specialized set of state models and a constraint network of allowable runtime interactions among concurrent hierarchical state machines. For more details, see http:/www.cs.uml.edu/~lechner/08s522/08s522Goals080123.txt For an overviewof the COOL Framework components, see the links in $PH/COOL-FAQ/webLinksTBD080126.htm