Note (16 January 2006): Our room is still H-603-1, there is no larger room available. It has a capacity of 40 students. All students who are officially registered are listed on the teams list. If your name is not there, then you are not registered, and you cannot come to class.
Note (18 January 2006): Class list and team list have been updated.
Note (20 January 2006): Class list and team list have been updated.
Instructor: Dr Greg Butler, gregb@cs.concordia.ca
Teaching Assistant: Bahman Zamani, b_zamani@cs.concordia.ca
Teaching Assistant: Farzad Kohantorabi, f_kohant@cs.concordia.ca
Teaching Fellow: Steve Barrett, ste_barr@cs.concordia.ca
Office Hours - Dr Butler: Wednesdays 16:00-17:00 in EV.003.219
Lab Hours - Wednesdays 15:30-17:30 in H-817 (and maybe H-815) (note change)
This course studies object-oriented design through lectures and projects.
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.
Craig Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process, 3nd edition, Prentice-Hall, 2005.
We rely heavily on the textbook, so get a copy and read it thoroughly.
Background information resources for other topics will be provided. You should already know: Java, UML. You should learn yourself: XDE, Eclipse, JUnit.
Students are required to complete six assignments (60%) and two quizzes (40%). The assignments are to be done in teams of up to six members, but will have individual work assigned to them within the team. This work must be done individually in consultation with the team and the assignment mark will be an individual mark. Each quiz will be a closed book examination of at least one hour in duration. You must pass the quizzes in order to pass the course as a whole.
The design case study is the Concordia University Work Management Environment (CU WME). The CU WME provides support for an organisation of people who produce and publish documents.
More ... including teams, assignments, marking schemes, lab information.
2006-01-09 Week 1: Course Introduction.
Lecture (slides): The components which make up the course. What the course is. What the course is not (not a course in Java or UML). The CU Work Management Environment case study for design. What is design. The Command design pattern (which is central to CU WME).
Background reading: Chapters 1-3 of Larman.
2006-01-16 Week 2: Design Introduction.
Lecture: Models (slides from Rational). GRASP Principles (slides from Larman). Design Patterns (slides from Clemson U). Architectural Styles.
Background reading: Chapters 4-7 of Larman.
Reading: Chapters 17 of Larman.
Further material: Introduction to OO. Advanced UML Modeling. UML homepage.
2006-01-23 Week 3: Domain Model; Layered Architecture.
Lecture: Domain Model (read chapter 9 thoroughly). Layered Architecture. MVC Architecture.
Lecture will be straight from chapter 9.
ch9 figures
Larman's domain modeling slides
Assignment 1 due at 18:00 on 2006-01-25.
Assignment 1 delivers a two-page problem statement for the requirements
of each component.
Individually use the electronic submission to submit a 2-page pdf document. Select "programming assignment 1". Indicate your name, SID, team, assignment number, and your component.
2006-01-30 Week 4: Example Software Systems.
Lecture (slides): Open source projects and commercial software systems related to the CU WME case study for design.
2006-02-06 Week 5: Use Cases.
Lecture: Use case modeling (read chapter 6 thoroughly) (slides from Larman).
Assignment 2 due at 18:00 on 2006-02-08.
Assignment 2 documents the domain model (of each component and the system as a whole).
2006-02-13 Week 6: Quiz 1 commences at 18:00.
Quiz 1 covers week 1-4 with empahsis on Design, Models, Principles, and Patterns.
You need to know Larman Chapters 1-7, 9, and 17.
Marks
2006-02-20 Mid-semester Break
2006-02-27 Week 7: Design.
Lecture: Quiz 1 review
Lecture: Domain modeling review (Assignment 2). [Do the sample domain models answer all the questions in Week 4 slides?]
Lecture: Basics of Software Design
Lecture: Design principles (GRASP). Responsibility-driven design (RDD). [Review chapter 17.]
(See use case realization section 18.1, and last slide in GRASP Principles (slides from Larman)).
For a starting point for the source code of assignment 4, see Lab 1 on Steve Barrett's COMP 6471 page.
Assignment 3 due at 18:00 on 2006-03-01 (Wednesday).
Assignment 3 documents the use cases of each component and the system.
2006-03-06 Week 8: Design.
Lecture: Test-driven design (TDD). (See slides 10-20 of slides from Dr Chalin; read chapter 21; see Tutorials 1-3 on JUnit and refactoring in Eclipse).
Lecture: Layers. Model-View-Control. Transition from requirements to design (kinds of objects in a design). (slides)
Reading:
Read Larman chapters 12 to 18 inclusive. Especially read chapter 13 and chapter 18.
Figure 13.1 shows you the information that the design model contains: a logical architecture showing the layers
of the system; interaction diagrams which are the use case realizations; and the class diagram of the design.
Chapter 18 is a case study of use case realization.
Background Reading: Complete your knowledge of use case modeling by reading Larman's chapter 10 on System Sequence Diagrams, and chapter 11 on Operation Contracts.
Reading for your general education (not in quiz 2): Stefano Ceri, Piero Fraternali, Aldo Bongio, Stefano Butti, Roberto Acerbis, Marco Tagliasacchi, Giovanni Toffetti, Carlo Conserva, Roberto Elli, Fulvio Ciapessoni, and Claudio Greppi, Architectural Issues and Solutions in the Development of Data-Intensive Web Applications, CIDR 2003.
2006-03-13 Week 9: Design.
Lecture: CUWME system revisited (slides).
Lecture: Issues, design patterns, and rationale.
Assignment 4 due at 18:00 on 2006-03-15.
Assignment 4 produces a design of the basic system and Java code for a proof-of-concept.
2006-03-20 Week 10: Application of GRASP Principles.
Lecture: Application of GRASP Principles (slides).
Read Larman Chapter 17, 23, 25, 26.
2006-03-27 Week 11: Design-by-Contracts.
Lecture: Contracts. Precision in design. (slides).
Read Larman Chapter 11.
Assignment 5 due at 18:00 on 2006-03-29.
Assignment 5 is a refinement of Assignment 4 which includes special features
in the design and code.
2006-04-03 Week 12: Quiz 2 commences at 18:00.
Quiz 2 covers weeks 1-11 with emphasis on Design (RDD,GRASP,TDD) and knowledge of
specific design patterns (Command plus those in Chapter 26: Adapter, Factory, Singleton,
Strategy, Composite, Facade, Observer) and specific GRASP principles (all of them).
You need to know Larman Chapters 1-26, emphasis will be on Chapters 10-26.
Marks
2006-04-10 Week 13: No Lecture. Assignment 6 due at 18:00 on 2006-04-10.
Assignment 6 due at 18:00 on 2006-04-10 (note Monday deadline rather than Wednesday).
Assignment 6 is a refinement of Assignment 4 which includes exceptions and failures
in the design and code.