IS 738/SM 523 Software Design Patterns


Announcements

Please check the announcements at least once a week.

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 :


Syllabus

  1. Overview of Object-oriented design
  2. Overview of UML
    1. Use cases, class diagrams, and other UML diagrams
    2. Object constraint language (OCL)
    3. Review of "Getting started using the use cases to capture requirements" by J. Rumbaugh
  3. Introduction to design patterns
    1. Coupling and cohesion
    2. Why design patterns?
    3. Reading assignment: The paper "Design Patterns: Abstraction and Reusable of Object Oriented Design" by E. Gamma, R. Helm, R. Johnson, and J. Vlissides
  4. Creational patterns
    1. Singleton, Abstract Factory, Builder, Prototype
  5. Structural patterns
    1. Facade, Composite, Bridge, Proxy, Adapter, Decorator
  6. Behavioral patterns
    1. Chain of responsibility, Visitor, Observer, Iterator, Command, Mediator, Strategy, Interpreter, Memento
    2. Putting all together
  7. Patterns for concurrent and distributed systems
    1. Event handling patterns (ref. 3)
    2. Synchronization and Concurrency patterns (ref. 3 &4)
    3. Concurrency Controller pattern
  8. Midterm and midterm review
  9. Antipatterns
    1. Common pitfalls and antipattern examples
    2. Recovering from bad designs
    3. Refactoring to patterns
  10. Paper reviews on related topics
  11. Project Presentations
  12. Introduction to Aspect-Oriented design
    1. Aspects, themes, concerns
    2. Keeping concerns separate with use-case modules
  13. 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

  1. Refactoring to Patterns, J. Kerievsky, Addison-Wesley ,2004
  2. A System of Patterns: Pattern-Oriented Software Architecture, Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P. & Stal, M, Wiley & Sons, 1996.
  3. Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML, 2nd Edition, Volume 1, Mark Grand,Wiley, 2002
  4. Object-Oriented Software Engineering: Using UML, Patterns, and Java, 2nd Edition, B. Bruegge and A. H. Dutoit, Prentice Hall, 2003.
  5. Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects, D.C Schmidt, M. Stal, H. Rohnert and F. Bushmann, Wiley & Sons, 2000
  6. Concurrent Programming in Java: Design Principles and Pattern, 2nd Edition, Douglas Lea, Addison -Wesley Professional, 1999
  7. Aspect-Oriented Analysis and Design: The Theme Approach, S. Clarke and E. Baniassad, Addison-Wesley Professional, 2005
  8. Aspect Oriented Software Development with Use Cases, I. Jacobson and P Nq, Addison-Wesley Professional, 2004