CS 6310 ADVANCED SOFTWARE ENGINEERING: SYLLABUS (Fall 2008) Instructor: Ted Billard Email : ted.billard@csueastbay.edu Phone : 885-3437 Home Page : http://www.mcs.csueastbay.edu/~billard Class Time: Tu/Th 10-11:50am Office Hrs: Tu/Th 12-1pm (Sc N216) Summary: The emphasis is on software engineering principles as illustrated by Object- Oriented Design (OOD) and advanced Object-Oriented Programming (OOP). The Unified Modeling Language (UML) is used as an analysis/design tool that leads to implementation. The project covers virtual proxies, database brokers, transactions, and broker servers. A variety of patterns are discussed including abstract factories and remote, observable, persistent objects. The function-oriented methodology is illustrated by Tcl script programming and students implement a script that does reverse-engineering on Java source code. Prerequisites: Good knowledge of an object-oriented programming language. The project can be done in C++ but it is highly recommended that each team (2 members) use Java. The "Advanced" in the course title implies that students should be able to start at a high level. If not, then CS 4310/4311 Software Engineering I,II are recommended. Text: Tcl and the Tk Toolkit, Ousterhout Optional: Applying UML and Patterns: An Introduction to OO Analysis and Design, Larman Notes: ONLINE Other References: Patterns in Java, Vol. 1, Grand Unified Modeling Language Reference Manual, Rumbaugh, Jacobson, Booch Unified Modeling Language User Guide, Booch, Rumbaugh, Jacobson Design Patterns, Elements of Reusable Object-Oriented Software, Gamma, et al. Grades: Test I (Tu 10/28): 11%, Test II (Th 11/20): 14%, Java: 27%, Tcl: 13%, Final (Th 12/11): 35% Topics: PART A: Object-Oriented Design and Programming Module 1: Project on Persistent Objects Given: UML design of a Point-Of-Sale Terminal (POST, Chapter 38). Goals: a. construct a programming solution i. real subjects ii. virtual proxies iii. database brokers iv. caches v. materialization from a database (SQL,JDBC) b. complete the UML design i. broker server ii. transactions (rollback/commit) iii. materialization of collections iv. dematerialization v. instantiation of new objects vi. delete existing objects c. construct a test program Module 2: UML Topics: objects, inheritance, association, aggregation, collaboration. Module 3: OO Software Engineering Life Cycle Topics: development cycles, requirements, use cases, analysis, modeling, associations, responsibilities, contracts, design, collaboration, construction. Module 4: Patterns Topics: proxy, factory method, abstract factory, singleton, builder, object pool, composite, chain, command, state, observer. Module 5: Advanced Java Programming Topics: remote (RMI), observable, persistent (JDBC) objects. PART B: Function-Oriented Design and Programming Module 1: Project on Tcl Script Programming Given: Java program as input. Goals: design and code a function-oriented Tcl script to perform reverse engineering on the object-oriented input. That is, extract the design of the inheritance and aggregation hierarchies from the Java source code. Output in html format similar to Javadoc. Key issues are parsing, lists, and trees. Module 2: Tcl Script Programming Topics: variables, data structures, expressions, control, iteration, procedures. Lecture Plan: Date Topic Due 1 9/25 Virtual Proxies 2 9/30 Virtual Proxies 3 10/02 Database Brokers 4 10/07 JDBC Proxy hierarchy [INDIVIDUAL PROJECT] 5 10/09 Patterns 6 10/14 Patterns 7 10/16 Broker Servers 8 10/21 Commit/Rollbacks Project I notebooks (materialization) 9 10/23 New/Del Objects 10 10/28 TEST I 11 10/30 Tcl 12 11/04 Tcl 13 11/06 Tcl 14 11/13 Tcl 15 11/18 Tcl 16 11/20 TEST II Project I notebooks (dematerialization) 17 11/25 Patterns 18 12/02 Tcl Lab 19 12/04 Tcl Lab 12/11 FINAL EXAM Project II notebooks Teams: All project work can be done by teams of 2 members EXCEPT the Proxy Hierarchy which must be done INDIVIDUALLY (no collaboration) by the fourth class (10/07).