COMP 6471 Software Design Methodologies

Winter 2004 Semester: January 5 to April 5, 2004

Lectures: Mondays 17:45 to 20:15 in FG-307


This course studies object-oriented design through lectures and projects.


Course Objectives

The principal objectives of the course are to clarify the basic concepts of design; to explain how those concepts are applied to software; and to describe design techniques that have been successfully applied.

We focus on object-oriented design using UML models, architectural styles and patterns, and design patterns.

We touch on software reuse, software frameworks, generic programming, design rationale, issue-driven design, and other topics.


Information Sources

There is no textbook. Recommended reading includes:

Craig Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process, 2nd edition, Prentice-Hall, 2001.

G. Booch, J. Rumbaugh and I. Jacobson, The Unified Modeling Language User Guide:, Addison-Wesley, 1999.

Erich Gamma, Richard Helm, Ralph Johnson, and John and Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1994.

Christine Hofmeister, Robert Nord, and Dilip Soni, Applied Software Architecture, Addison-Wesley, 2000.

F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal, Pattern-Oriented Software Architecture, Wiley, 1996.

Len Bass, Paul Clements and Rick Kazman, Software Architecture in Practice, Addison-Wesley, 1998.

R. Kazman, M. Klien, P. Clements, ATAM: Method for Architecture Evaluation, Technical Report CMU/SEI-2000-TR-004, 2000.

Krzysztof Czarnecki and Ulrich W. Eisenecker, Generative Programming: Methods, Tools, and Applications, Addison-Wesley, 2000.


Some Lecture Material

Basics of Software Design from week 3.


Evaluation

Students are required to complete three design assignments (60%) and a term paper (40%). They must give presentations of their design work to the class. The assignments are to be done in teams of three to five, but the term paper must be done individually.

Marks for assignments including Assignments 1, 2, 3, 2 revised, term paper, and final mark.


Project

The project is to design an In-Memory Object Database Management System with Object Comprehension Queries.

See the paper for the example schema of an object database, example queries in the object comprehension language, and the abstract syntax of the language. (Do not be scared of the mathematics describing the semantics of the language, the collection algebra, and the optimization rules. These are just the equivalent of the relational algebra and calculus for these object databases. And you do not have to know or understand this theory.)

Daniel K.C. Chan and Philip W. Trinder, A Processing Framework For Object Comprehensions, Information and Software Technology, 39(9):641--651, 1997.

The system requirements are to allow a schema to define a database, to be able to load the database objects from files into memory, and to accept a query and return the results of the query for the database of objects.

Assignment 1 (Domain and Scope): due week 5
email .pdf file to gregb@cs by 18:00 on February 4, 2004
Create a domain model that shows the main concepts and relationships between the concepts in the domain of object in-memory databases with object comprehension queries. Present a class diagram for the domain model, with textual descriptions, and a glossary (data dictionary). Determine the scope of the system by creating a use case model that shows the main use cases (only). Indicate which features fall outside the scope of the project. Create object diagrams for five of the object comprehension queries and a small sample database (for the University example). The object diagrams should indicate how the queries are to be executed in terms of iterators, boolean predicates as filters, execution of arithmetic expressions, access to object atributes, and the use of indexes to access collections. (A 15-20 page document.)

Assignment 2 (Design of A Subsystem): due week 9
email .pdf file to gregb@cs by 18:00 on March 10, 2004
Do a detailed design of just the query execution part of the system. The execution plan of the query is to be represented as a tree of iterators (where a list of iterators is a simple case of a tree of iterators). Illustrate the relationships between iterators, collections, indexes, and indexed collections (as well as shared objects). Demonstrate the working of the various kinds of iterators using interaction diagrams. (A 10-15 page document.)

Assignment 3 (Design): due week 12
email .pdf file to gregb@cs by 18:00 on March 31, 2004
Do an architectural and detailed design of the system. Submit a design document, including descriptions of use of the design patterns. (A 15-20 page document.)

(Revised March 17) Only do an architectural design, not a detailed design. I do want to see the definition of interfaces, and an interaction diagram showing how the system as a whole works. I do not want to see internal workings of parsers, translators, or optimizers (or any other subsystem).

Term Paper (Design Review)
email .pdf file to gregb@cs by 18:00 on April 23, 2004
This must be individual work.

Tell me about the good things and the bad things (in your opinion) about the design presented by your team in Assignment 3. Explain why things are good or bad. Explain alternative designs for the bad features of the design, and explain why the alternatives are better.

I do not want a full presentation of the design in Assignment 3 repeated, but you should present the parts that you refer to in your discussion (as I will not remember each design).

You will be graded on the clarity of your presentation, your understanding of design principles, and your logical reasoning as shown in the rationale that you present. (A 10-15 page document. You will lose marks for overly long term papers.)


Last modified on May 10, 2004 by gregb@cs.concordia.ca