The University of Chicago
Department of Computer Science
MCPS 51210 Course Syllabus
Advanced Topics in Software Architecture & Design
Fall 2014
Instructor: Mark
Shacklette
Office:
Ryerson 175
Office Hours: By Appt.
email: mark@cs.uchicago.edu
(read hourly or so)
mshack@post.harvard.edu (read
hourly or
so)
Teaching staff:
TA John Hadidian-Baugher
(jhadidianbaugher-at-gmail-dot-com)
TA Office Hours: See Piazza
Grader:
Course Home Page: http://www.cs.uchicago.edu/~mark/51050/
SUBJECT | COURSE | TITLE | TIME | BUILDING |
324 | 51210 | Advanced Topics in Software Architecture & Design | Monday, 5:30pm | Ryerson 277 |
I. TEXT AND MATERIALS
Texts: Required (Basic Knowledge of Java OR C++ is assumed)
Applying UML and Patters: An Introduction to Object-Oriented Analysis and Design and Iterative Development, 3rd ed., Craig Larman, Prentice Hall, 2005, ISBN: 0131489062Design Patterns, Gamma, et. al., Addison Wesley, 1995, ISBN: 0201633612
Texts: Optional Text (Reading will be assigned and is highly recommended but optional)
Software Architecture in Practice, 3rd ed., Bass, Clements, Kazman,
Addison
Wesley, 2013, ISBN: 0321815734
Texts: Highly Recommended
UML Distilled, 3rd ed., Martin Fowler, Addison Wesley, 2003, ISBN: 0321193687
Code Complete, 2nd ed., Steve McConnell, Microsoft Press, 2004, ISBN: 9780735619678
Object Oriented Analysis and Design, 3rd ed., Grady Booch, Addison Wesley, 2007, ISBN: 020189551X
Software Architecture: Perspectives on an Emerging Discipline, Shaw & Garlan, Prentice Hall, 1996, ISBN: 0131829572
Refactoring to Patterns, Kerievsky, Addison Wesley, 2004, ISBN: 0321213351
Texts: Recommended
Pattern-Oriented Software Architecture: A System of Patterns, Buschmann, Meunier, et. al., Wiley, 1996, ISBN: 0471958697
Developing Software with UML, Bernd Oesterich, Addison-Wesley, 1999, ISBN: 0201398265
Building Enterprise Information
Architectures,
Melissa Cook, Prentice Hall, 1994, ISBN: 0134402561
Enterprise Service Oriented Architectures, McGovern, Sims, et. al., Springer 2006 ISBN: 140203704X
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
The Unified Modeling Language User Guide, 2nd ed , Grady Booch, et. al., Addison Wesley, 1999, ISBN: 0321267974
The Patterns Handbook, Linda Rising, ed., Cambridge, Cambridge University Press, 1998
Refactoring: Improving the Design of Existing Code, Martin Fowler, et. al., Addison Wesley, 1999, ISBN: 0201485672
Pattern Languages of Program Design, Vol. 1, James Coplien, DougSchmidt, Reading, Mass: Addison-Wesley, 1995
AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis, Brown, et. al., Wiley, 1998, ISBN: 0471197130
Object-Oriented Software Construction, Second Edition , Bertrand Meyer, Prentice Hall, 1997, ISBN: 0136291554
The Timeless Way of Building, Christopher Alexander, New York: Oxford, 1979
A Pattern Language, Christopher Alexander, et. al., New York: Oxford, 1977
Software Architecture: Perspectives on an Emerging Discipline, Shaw & Garlan, Prentice Hall, 1996, ISBN: 0131829572
Use Case Driven Object Modeling with UML ,
Doug Rosenberg, et. al., BAddison Wesley, 1999, ISBN: 0201432897
Language Related Texts:
JAVA:
Beginning Java 2 , Horton, Wrox Press, 1999, ISBN: 1861002238
Thinking in Java , Bruce Eckel, Prentice Hall, 1998, ISBN: 0136597238
Java I/O , Harold, O'Reilly, 1999, ISBN:
1565924851
The Well-Grounded Java Developer, Evans et. al., Manning, 2012, ISBN: 1617290068
II. PREREQUISITE:
Solid familiarity with either Java or C++ will be assumed.
III. COURSE DESCRIPTION
This course provides hands-on experience in the architecture and design of object-oriented software systems and a review of best practices for the communication of that design. Issues in the landscape of software design, including complexity, constraints, progressive discovery, and limitations in communication will be explored. Specific topics and projects will modulate yearIn this course, students will be organized into teams and each team
will be provided with a set of (partial) requirements and will be
responsible for the analysis, design, design documentation, and
implementation in source code of a project that constitutes a complex
software system. Each team
of students will work through requirements analysis, documentation of
design using UML, and implementation, and techniques and tools will be
provided in order to facilitate the delivery. The description of
the current project may be found here.
The progression of design will be peer-reviewed by the student
teams. While this course focuses on design and implementation of
software, it does not focus on the software development process or SDLC
per se. That being said, we will work within an "Agile" design
and implementation framework and adopt agile approaches to lean
design. One of our efforts will be to dispel the myth that design is not performed within an agile environment.
During the course and lectures, we will cover the following topics:
Why is design important, even in an agile environment?
Attributes of good design: coupling, cohesion, law of Demeter, generic solutions vs. specific solutions
What is the role of modeling in software development?
Documenting and communicating software design using the Unified Modeling Language notation (UML)
Lean thinking and lean modeling
Design guidelines for quality, interoperability, modifiability, performance, security, testability, and maintainability
The role of patterns in designing software and design refactoring
Abstract data types, classes, objects, inheritance & composition
Decomposing systems into recognizable patterns
IV. LEARNING OBJECTIVES
This course will enable students to understand:
A. Develop a full command of the UML and object-oriented design
B. Object abstraction: objects, classes, inheritance and composition
C. Unit testing and Test Driven Design
D. Design and develop a non-trivial system using best practices in software design and development
E. Understand the benefits of object-oriented analysis and design, concepts and processes
F. Become familiar with formal design tools for object orientated analysis and design
G. Become conversant 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 project-related assignments. Your team
work should be stored using a version-control system that allows us to
easily view files and folders that you create. One possibility is
to use Subversion.
VII. OTHER COURSE INFORMATION
Attendance:
No formal attendance taken. There may be information presented in class that is not in the texts. You will find the lectures helpful in doing the laboratory exercises.
Make-up Work:
Students are expected to read the assigned texts before class in
order
to be able to full participate in the discussions and course activities.
VIII. METHOD OF EVALUATING STUDENT PROGRESS
Assigned work evaluated as follows:
4 Iteration Deliverables (5 points each) |
20% |
Project Faculty Evaluation |
35% |
Project Peer Evaluation |
25% |
1 Final Exam |
15% |
1 Student Pattern Presentation |
5% |
Total: |
100% |
Grading scale:
96-100: A
92-95: A-
88-91: B+
84-87: B
80-83: B-
76-79: C+
Iteeration Deliverables will be graded on a 5-point basis. Deliverable due dates are noted on the syllabus schedule in RED. All labs and homework are due by 5:00 pm on the due date.
All assignments are due as
specified on this syllabus. Each team will be evaluated on the
basis of the presentation of iteration deliverables and the final
deliverable. Lateness will suffer penalties.
The course project will be due for
graduating students on December 1, 2014, on December 8th, 2014
for non-graduating students.
NB: The end of the quarter is the time at which the final grade you have earned through your work in the quarter is recorded with the registrar. There is no extra credit offered in this course, either at the beginning or at the end. If you are disatisfied with the grade you have earned at the end of the quarter, your only options will be to retake the course the next time it is offered, or accept the grade you earned.
NB: 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
The following abbreviations reference the following works:
Abbreviation | Text |
Fowler | UML Distilled |
Gamma | Design Patterns |
Larman |
Applying UML and Patterns |
Bass |
Bass et. al. Software Architecture in Practice (This text is optional and in italics to so indicate) |
Ambler |
Disciplined Agile Delivery |
*Articles starred may be found on the cluster under my pub directory (~mark/pub/51210/reqiured.reading)
Class/Date | Lecture Topics | Required Reading Schedule | Activities and Deliverables |
Student Pattern Presentation Schedule |
Class 1 September 28 |
Course Introduction Team Selection Whatever happened to Design? Different styles of software development: coding trading stragtegies to developing large systems |
Brooks, No Silver Bullet* Ambler: 1 |
Team Formation & Role Assignments |
|
Class 2 October 6 |
Zachman Architecture Framework: Perspectives & Convergence and Divergence Introduction to UML Requirements Analysis in the 21st Century Use Cases and User Stories |
Beyond Scrum* Bass: 1, 2, 3, 16 Larman: 1-7 Ambler: 2-3, 6 |
Factory Method |
|
Class 3 October 13 |
Review of OO Fundamentals: Abstraction, Ineritance, Composition Classes and Objects CRC Cards |
Bass: 13, 15, 17 Larman: 8-14, 16 Ambler: 5-6, 8-10, 12 Standish Group Chaos Report* |
Iteration I: Initial Requirements Landscape |
Class Adapter |
Class 4 October 20 |
Classification UML Static Modeling Test Driven Development |
Bass: 4-6 Larman: 17-22 Ambler: 13-15, 17 Standish Group Chaos Update 2009* |
Iteration II High Level Architecture and Initial Domain Model |
Object Adapter |
Class 5 October 27 |
Advanced Topics 1: Distribution Sockets and RMI |
Bass 7-9 Ambler: 16, 18-19 |
Iteration III: Team Planning | Strategy |
Class 6 November 3 |
Advanced Topics 2: Concurrency Messaging |
Bass 10-12 Larman: 15, 23-26 |
Iteration III: Team Delivered | Observer |
Class 7 November 10 |
Architectural Issues & UML Dynamic Modeling |
Larman 33-35 Ambler: 20 |
Iteration IV: Team Planning | Composite |
Class 8 November 17 |
Multithreaded Development |
Larman 36-39 Ambler 21 |
Iteration IV: Team Delivered | Iterator, Builder |
Class 9 November 24 |
Best Practices in Database Design Refactoring Design |
Iteration V: Team Planning | Visitor, Template Method |
|
Class 10 December 1 |
Final Exam Graduating Student Project Presentations |
Iteration V: Final Deliverable Team Delivered (Graduating Teams) |
||
Class 11 December 8 |
Non-Graduating Student Project Presentation What is User Experience? What makes a good one? |
Iteration V: Final Deliverable Team Delivered (Non-Graduating Teams) |
EVERYONE: Sign up on Piazza here!