IS 738/SM 523 Software Design Patterns
Announcements
Please check the announcements at least once a week.
-
The course web site is now on metu-onlir and net-class.
This page will not be updated anymore.
-
SM 523 Project deadlines and deliverables are announced
-
IS 738 Project deadlines and deliverables are announced
- First reading assignment is announced
-
First homework is announced (see here ).
-
Secon homework is announced (see the metu-onlin or netclass)
Catalog Description
The course focuses on design patterns, patterns for concurrent software systems, antipatterns and recognizing design problems, refactoring bad design to patterns. Hands-on experience on reuse of design patterns will be established by a class project. The course includes reviews of UML, object-oriented design and aspect oriented design. Students will be able to efficiently communicate program structures using patterns and to develop software of high quality.
Course Purpose
The aim of this course is to make the students competent in designing effective and maintainable complex software systems of high quality. To this end, students will learn and gain hands-on experience in designing software systems by reusing/applying design patterns. Design patterns are successful solutions to recurring problems that arise when building software systems. Reusing design patterns helps to prevent subtle issues that can cause major problems and improves code readability for the developers familiar with the patterns. In addition to mastering these good design abstractions, the students will also learn how to evaluate a design, identify common problems, and how to fix these problems through refactoring.
Instructor : Aysu Betin-Can aysu@ii.metu.edu.tr
Lectures :
-
IS 738 Tuesday 14:40-16:30 MM452, Thursday 11:40-13:30 (every other week) MM451
-
SM 523 Friday 16:40-19:30 MM451
Syllabus
-
Overview of Object-oriented design
-
Overview of UML
-
Use cases, class diagrams, and other UML diagrams
-
Object constraint language (OCL)
-
Review of "Getting started using the use cases to capture requirements" by J. Rumbaugh
-
Introduction to design patterns
-
Coupling and cohesion
-
Why design patterns?
-
Reading assignment: The paper "Design Patterns: Abstraction and Reusable of Object Oriented Design" by E. Gamma, R. Helm, R. Johnson, and J. Vlissides
-
Creational patterns
-
Singleton, Abstract Factory, Builder, Prototype
-
Structural patterns
-
Facade, Composite, Bridge, Proxy, Adapter, Decorator
-
Behavioral patterns
-
Chain of responsibility, Visitor, Observer, Iterator, Command, Mediator, Strategy, Interpreter, Memento
-
Putting all together
-
Patterns for concurrent and distributed systems
-
Event handling patterns (ref. 3)
-
Synchronization and Concurrency patterns (ref. 3 &4)
-
Concurrency Controller pattern
-
Midterm and midterm review
-
Antipatterns
-
Common pitfalls and antipattern examples
-
Recovering from bad designs
-
Refactoring to patterns
-
Paper reviews on related topics
-
Project Presentations
-
Introduction to Aspect-Oriented design
-
Aspects, themes, concerns
-
Keeping concerns separate with use-case modules
-
Review of the course for final examination
Evaluation
Midterm 20%
Final Exam 30%
Assignments 20%
Project 30%
Text Books
Design Patterns: Elements of Reusable Object Oriented Software, E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Addison -Wesley Professional, 1995
Additional Readings
- Refactoring to Patterns, J. Kerievsky, Addison-Wesley ,2004
-
A System of Patterns: Pattern-Oriented Software Architecture, Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P. & Stal, M, Wiley & Sons, 1996.
-
Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML, 2nd Edition, Volume 1, Mark Grand,Wiley, 2002
-
Object-Oriented Software Engineering: Using UML, Patterns, and Java, 2nd Edition, B. Bruegge and A. H. Dutoit, Prentice Hall, 2003.
-
Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects, D.C Schmidt, M. Stal, H. Rohnert and F. Bushmann, Wiley & Sons, 2000
-
Concurrent Programming in Java: Design Principles and Pattern, 2nd Edition, Douglas Lea, Addison -Wesley Professional, 1999
-
Aspect-Oriented Analysis and Design: The Theme Approach, S. Clarke and E. Baniassad, Addison-Wesley Professional, 2005
-
Aspect Oriented Software Development with Use Cases, I. Jacobson and P Nq, Addison-Wesley Professional, 2004