The University of Chicago
Department of Computer Science
CSPP 51023 Course Syllabus
Winter 2004
Instructor: Mark Shacklette
Office:
Ryerson 150
Office Hours: Monday 3:30 - 5:30 pm
email: mark@cs.uchicago.edu
(read hourly or so)
mshack@post.harvard.edu (read daily
or so)
Teaching staff:
Teaching staff:
J. Mark Shacklette, mark@cs.uchicago.edu
TAs: Lead TA: Eric Crane, ecrane@cs.uchicago.edu
Assistant TAs: David Press (dmp@cs.uchicago.edu), Mindy Shi (shi@cs.uchicago.edu)
Office Hours TBD.
Course Home Page: http://www.cs.uchicago.edu/~mark/51023/
SUBJECT | COURSE | TITLE | TIME | BUILDING |
324 | 51023 | OO Architecture, Design, Methodology | 5:30 - 8:20 Mondays | Ryerson 277 |
I. TEXT AND MATERIALS
Texts: Required
Design Patterns, Gamma, et. al., Addison Wesley, 1995, ISBN: 0201633612
Object Solutions, Grady Booch, Addison Wesley, 1996, ISBN: 0805305947
Software Architecture: Perspectives on an Emerging Discipline, Shaw & Garlan, Prentice Hall, 1996, ISBN: 0131829572
The Unified Modeling Language User Guide , Grady Booch, et. al., Addison Wesley, 1999, ISBN: 0201571684
Texts: Recommended
Developing Software with UML, Bernd Oesterich, Addison-Wesley, 1999, ISBN: 0201398265
Developing Object Oriented Software, OOTC, Prentice Hall, 1996, ISBN: 0137372485
Object-Oriented Software Engineering, Ivar Jacobson, Addison Wesley, 1992, ISBN: 0201544350
The Unified Modeling Language Reference Manual , James Rumbaugh et. al., Addison Wesley, 1991, ISBN: 020130998X
The Unified Software Development Process , Ivar Jacobson et. al., Addison Wesley, 1999, ISBN: 0201571692
Surviving Object-Oriented Projects, Alistair Cockburn, Addison Wesley, 1998, ISBN: 0201498340
UML Distilled, Martin Fowler et. al., Addison Wesley, 1999, ISBN: 0201325632
Object-Oriented Analysis and Design, Grady Booch, Benjamin Cummings, 1994, ISBN: 0805353402
Software Project Management, A Unified Framework , Walker Royce, Addison Wesley, 1998, ISBN: 0201309580
Use Case Driven Object Modeling with UML , Doug Rosenberg, et. al., Addison Wesley, 1999, ISBN: 0201432897
Object Oriented Design & Patterns, Cay
Horstmann, Wiley, 2004 ISBN: 047131966X
Object Design: Roles, Responsibilities, and
Collaborations, Wirfs-Brock, McKean, Addison Wesley, 2003 ISBN: 0201379430
Managing the Software Proscess, Watts Humphrey,
Addison Wesley, 1989 ISBN: 0201180952
Agile Modeling: Effective Practices for Extreme
Programming and the Unified Process, Scott Ambler, Wiley, 2002
ISBN: 0471202827
Software Design: From Programming to Architecture
, Eric Braude, Wiley, 2004 ISBN: 0471429201
Agile Software Development: Principles, Patterns,
and Practices, Robert Martin, Prentice Hall, 2003 ISBN: 0135974445
The CRC Card Book, Bellin & Simone,
Addison Wesley, 1997 ISBN: 0201895358
Managing the Software Proscess, Watts Humphrey,
Addison Wesley, 1989 ISBN: 0201180952
Agile Software Development, Alistair
Cockburn, Addison Wesley, 2002 ISBN: 0201699699
Texts: Ready Reserve Reading List (articles avaliable
online--here are instructions for accessing
online)
The Timeless Way of Building, Christopher Alexander, New York: Oxford, 1979
A Pattern Language, Christopher Alexander, et. al., New York: Oxford, 1977
The Categories and On Interpretation, Aristotle, Cambridge: Harvard 1938
The Parts of Animals, Aristotle, Cambridge: Harvard 1937
Critique of Pure Reason, Immanuel Kant, Cambridge: Cambridge, 1998
The Mythical Man Month, Fred Brooks, Reading, Mass: Addison-Wesley 1975
Pattern Languages of Program Design, Vol. 1, James Coplien, DougSchmidt, Reading, Mass: Addison-Wesley, 1995
Object-Oriented Design Heuristics, Arthur Riel, Reading, Mass: Addison-Wesley, 1996
Object Oriented Analysis and Design with Applications, 2nd ed., Grady Booch, Redwood City, Calif: Benjamin Cummings, 1994
The Patterns Handbook, Linda Rising, ed., Cambridge, Cambridge University Press, 1998
Gregory Abowd, Robert Allen, and David Garlan. Using Style to Understand Descriptions of Software Architecture. In Proc First ACM SIGSOFT Symposium on the Foundations of Software Engineering , December 1993.
Frank DeRemer and Hans H. Kron. Programming-in-the-Large
versus Programming-in-the-Small. IEEE Trans. on Software Engineering
,
SE-2(2):80-86, June 1976.
David Garlan, Robert Allen, and John Ockerbloom. Architectural Mismatch, or Why its hard to build systems out existing parts. Proc Seventeenth International Conf on Software Engineering (ICSE-17), April 1995.
H. Penny Nii. Blackboard Systems. AI Magazine 7(3):38-53 and 7(4):82-107.
Charles R. Morris and Charles H. Ferguson. How Architecture Wins Technology Wars. Harvard Business Review , 71, 2, March-April 1993, pp. 86-96.
G.C. Murphy and D. Notkin. Reengineering with Reflexion Models: A Case Study. IEEE Computer 30(8), pp. 29-36.
David L. Parnas, Paul C. Clements, and David M. Weiss. The Modular Structure of Complex Systems. IEEE Trans. on Software Engineering , SE-11(3):259-266, 1985.
David L. Parnas. On the Criteria To Be Used in Decomposing Systems Into Modules. Communications of the ACM , 15(12):1053-1058, December 1972.
Eberhardt Rechtin. The art of systems architecting. IEEE Spectrum October 1992, pp. 66-69.
Grady Booch. Object-Oriented Development. IEEE Trans. on Software Engineering, SE-12(2):211-221, February 1986.
James M. Purtilo and Joanne M. Atlee. Module Reuse by Interface
Adaptation. Software -Practice and Experience , 21(6):539-556,
June 1991.
II. PREREQUISITE:
There are no formal prerequisites for this course. Obviously, exposure
to an Object-Oriented Programming Language such as Smalltalk, Java, C++,
Squeak, Ada, Common Lisp Object System (CLOS), or Eiffel would be helpful,
but it is not required.
III. COURSE DESCRIPTION
This course concentrates on three major themes: Software Architecture, Object Oriented Analysis and Design, and Methodology. The bulk of the course will involve key concepts in Object-Oriented Analysis and Design (OOA/OOD). The methods we will study include the Rational Unified Process (RUP), Extreme Programming (XP), and the Object-oriented Process, Environment and Notation (OPEN) method, and the Design notation will be the Unified Modeling Language (UML). The focus of the course is best practices, the theme of the course is complexity in software systems.
This course is not a course in Object-Oriented Programming. Rather,
this course is abstracted a level up, and focuses on principles, concepts,
processes, methods, and best practice models that transcend and yet can be
implemented with (most) any object-oriented programming language. That said,
code examples that illuminate key concepts in OO design will be provided
in various OO languages (Smalltalk, Eiffel, Java, C++, CLOS) in order to further
illuminate the concepts being discussed. For example, we will see how Smalltalk,
Java, C++, CLOS, implement, say, polymorphism, with distinctive hermeneutical
and pragmatic significance. However, it is the concepts that
are central, not their particular implementations. A primary focus of the
course will be to come to terms with many common patterns in software design,
which provide proven and repeatable templates on which to base implementations.
IV. LEARNING OBJECTIVES
Upon completion of this course the student will:
A. Understand central OO concepts and terminology.
B. Develop a full command of the UML and its syntax.
C. Become fluent in the implementation of UML using
Together Control Center .
D. Produce different UML models using Together Control Center Model.
E. Become familiar with a number of common design patterns.
V. ACADEMIC INTEGRITY
Students are expected to have read and understood the University's policy
on Academic Integrity. This policy is detailed in the Student Manual of University
Policies and Regulations, available online at http://www.uchicago.edu/student/manual/academic_honesty.html
.
VI. METHOD OF INSTRUCTION
Methods include lecture and class presentations.
VII. OTHER COURSE INFORMATION
Attendance:
No formal attendance taken. There may be information presented in class that is not in the texts. You will be responsible for all information discussed in class and assigned in the required Ready Reserve readings .
Make-up Work:
If you miss an exam, you will need to speak with the instructor ASAP . The instructor is known to woefully frown on students who miss exams.
Students are expected to read the assigned texts before class in order
to be able to full participate intelligently in the discussions.
VIII. METHOD OF EVALUATING STUDENT PROGRESS
Assigned work evaluated as follows:
1 Exam:
45 pts **
3 Modeling Practicums 45 pts
(15 pts each)
1 Pattern Presentation 10 pts
Total:
100 pts
Grading scale: A=90-100, B=80-89, C=70-79, D=60-69, F=0-59
**Extra credit questions will be offered on the Exam. Questions may be drawn from the lectures, required texts as well as the required Ready Reserve Reading assignments. As this course has no programming homework, no quizzes, and only one exam, students are expected to do the reading, and will be held accountable for all of it, without exception.
Each student will need to sign up for 1 pattern presentation during which each student will deliver a simple presentation on a pattern of choice. The presentation should last no longer than 10 minutes, and present the pattern in simple expository terms, and if possible, provide an example in code or design. An overhead projector will be available should students desire it. Most students choose to deliver their presentations using Power Point. Instructions for how to present a pattern may be found here .
The instructor reserves the right to alter the course contents, dates,
times or percentage of credit based on time allowed and class progress through
the course material. The instructor also reserves the right to curve grades
if he deems it in the best interest of the majority of students.
IX. COURSE SCHEDULE
NB: The Instructor reserves the right to alter the schedule as class progress dictates.
Abbreviations Key for Required texts and Required Ready Reserve reading
(Texts marked with * are on Ready Reserve):
SA | Shaw, Garlan, Software Architecture |
OS | Booch, Object Solutions |
UML | Booch, UML User Guide |
OOAD | Booch, Object Oriented Analysis and Design * |
TMMM | Brooks, The Mythical Man Month* |
Categories | Aristotle, Categories* (available online at MIT) |
Animals | Aristotle, Parts of Animals (available online at MIT) |
Topics | Aritstotle, Topics (available online at MIT) |
ATWB* | Alexander, The Timeless Way of Building * |
AAPL* | Alexander, A Pattern Language* |
PLOP1 | Coplien, Schildt, Pattern Languages of Program Design 1* |
OOSC* |
Meyer, Bertrand, Object-Oriented Software
Construction, 2nd Ed.* |
TPH* | The Patterns Handbook* |
Riel* | Riel, Object-Oriented Design Heuristics * |
Par72* | David L. Parnas. On the Criteria To
Be Used in Decomposing Systems Into Modules. Communications of the ACM, 15(12):1053-1058, December 1972. * |
PCW85* | David L. Parnas, Paul C. Clements,
and David M. Weiss. The Modular Structure of Complex Systems.
IEEE Transactions on Software Engineering , SE-11(3):259-266, 1985.* |
Boo86* | Grady Booch. Object-Oriented Development.
IEEE Transactions on Software Engineering , SE-12(2):211-221, February 1986.* |
PA91* | James M. Purtilo and Joanne M. Atlee.
Module Reuse by Interface Adaptation. Software -Practice and Experience, 21(6):539-556, June 1991.* |
Rec92* | Eberhardt Rechtin. The Art of Systems
Architecting. IEEE Spectrum October 1992, pp. 66-69. * |
MF93* | Charles R. Morris and Charles H. Ferguson.
How Architecture Wins Technology Wars. Harvard Business Review, 71, 2, March-April 1993, pp. 86-96.* |
GAO95* | David Garlan, Robert Allen, and John
Ockerbloom. Architectural Mismatch, or Why its hard to build systems out of existing parts. Proceedings Seventeenth International Conference on Software Engineering (ICSE-17), April 1995. * |
Gut77* | John Guttag, Abstract Data Types and the Development
of Data Structures Communications of the ACM, June 1977, 20.6,
pp. 396-404* |
Class/Date | Lecture Topics | Required Reading & Pattern Presentation Schedule (Students should read relevant patterns in Gamma, et. al. for each class) |
Required Reserve Reading | Homework Assignments |
Class 1
January 5 |
Introduction and Problem Statement
Issues in Complexity |
OS, ch. 1 SA, ch. 1
|
Aristotle, Categories, i - vii,xii,xiii,xv (online) OOAD, ch. 1 PCW85 Aristotle, Parts of Animals, Book I, Part I (online) Alexander, TWB 1,2,4,5,7 |
|
Class 2
January 12 |
Object Oriented Analysis
Introduction to Patterns Singleton (demonstration pattern) Patterns: Facade Pattern (demostration presentation) |
UML ch. 16-17 OS, ch. 3 |
TMMM ch. 1,2,4 PLOP1, ch. 16 TPH, pp. 1-13; 243-300; 353-59 Alexander, TWB 10,11,16 |
|
Class 3
January 19 |
Process Management Methodologies
The Rational Unified Process |
UML ch. 4-14 OS, ch. 4 Student Pattern Presentations: Class AdapterTemplate Method |
TMMM, 7 Riel, ch. 1 TPH, pp. 333-344 TPH, pp. 345-352 TMMM ch. 16,17 |
|
Class 4
January 26 |
Classification and Abstraction
Programming Paradigms
|
UML ch. 1-6
Student Pattern Presentations: Object Adapter, |
Alexander, TWB 13,14,16,21,22 OOAD, 2,3 Riel, 2,3 Aristotle, Topics, Book 1: Parts 4-7 (online) |
Modeling Practicum I: Analysis Modeling using Use Cases and CRC (Saturday, 1/31/2004) |
Class 5
February 2 |
Models and Modeling Languages: Structural
Aspects
Static/Structural Modeling |
UML ch. 7-14
Student Pattern Presentations: Abstract Factory, Factory Method |
Riel, 4,5,6,7 OOAD, ch. 4 TMM 13 Par72 |
|
Class 6
February 9 |
Models and Modeling Languages: Structural
Aspects (continued)
Abstraction Revisited Advanced Static Modeling in UML |
UML ch. 7-14 (cont)
Student Pattern Presentations: Composite, Chain of Responsibility
|
Alexander, APL 112,115,159 PA91 Rec92 TPH, pp. 301-310 |
Modelling Practicum
I due Modeling Practicum II: Structural Modeling (Practicum Session Saturday, 2/14/2004) |
Class 7
February 16 |
Models and Modeling Languages: Behavioral
Aspects
Polymorphism & Language Implementations
|
UML ch. 15, 18, 19, 20, 21
Student Pattern Presentations: Iterator, Visitor |
TPH, pp. 237-241 Alexander, APL 168, 169, 173 Boo86 |
|
Class 8
February 23 |
Models and Modeling Languages: Behavioral
Aspects (continued)
Dynamic Modeling in UML: (Sequence/Collaboration
Diagrams, etc) |
UML ch. 25-31
Student Pattern Presentations:
|
MF93 TPH, pp. 311-319 TPH, pp. 321-332 |
|
Class 9
March 1 |
Object Oriented Design Implementation Details Exam Review |
OS, ch. 2, 5-6 Student Pattern Presentations: Strategy, Mediator |
GAO95 Alexander, APL 180, 203, 247 |
|
Class 10 March 8 |
EXAM | |||
Class 11
March 15 |
Architectural Considerations: Frameworks and Component Architectures Tiered Architecture Distributed Objects Patterns : Layers, Reflection |
SA, ch. 5-8 OS, ch. 7 Student Pattern Presentations: Bridge, Observer
|
Final Model Due (including Modeling Practicum III) |
X. Online Reference and Resources:
General:
Cetus Links on OO: http://www.objenv.com/cetus/software.html
OOSE Links: http://www.inf.ufsc.br/poo/ine5383/oose.html
OOA/OOD:
Martin Fowler's home pages:
http://www2.awl.com/cseng/titles/0-201-89542-0/techniques/index.htm
http://www.martinfowler.com/
Patterns:
Salingaros's notes on Christopher Alexander: http://www.math.utsa.edu/sphere/salingar/Chris.text.html
Patterns-Discussion FAQ: http://g.oswego.edu/dl/pd-FAQ/pd-FAQ.html
Writing Patterns: http://hillside.net/patterns/
Pattern Examples: http://st-www.cs.uiuc.edu/cgi-bin/wikic/wikic?DesignPatterns
Alistair Cockburn's home page: http://alistair.cockburn.us/