Designing Object Oriented Software  TKO_2016


News


Timetable

Lectures

Date Book Topics Note
1. Tue, Mar. 7 (none) Lecture cancelled.
2. Tue, Mar. 14 Section 1: Chapters 1–6 Introduction. Planning, testing, and refactoring. [slides]

Additional material:

3. Tue, Mar. 21 Section 2: Chapters 7–12 Symptoms of poor design. Principles: SRP, OCP, LSP, DIP, and ISP. [slides]

Additional material:

4. Tue, Mar. 28 Section 3: Chapters 13–19 Introduction to design patterns. Design patterns: COMMAND and ACTIVE OBJECT; TEMPLATE and STRATEGY; FACADE and MEDIATOR; SINGLETON and MONOSTATE; NULL. [slides]

Additional material:

5. Tue, Apr. 4 Section 4: Chapters 20–22 Package design principles: REP, CRP, CCP, ADP, SDP, and SAP. Design patterns: FACTORY. [slides]

Additional material:

  • Granularity: The Reuse–Release Equivalency Principle, the Common-Closure Principle, the Common-Reuse Principle, and the Acyclic-Dependencies Principle (R. Martin)
  • Stability: The Stable-Dependencies Principle and the Stable-Abstractions Principle (R. Martin)

6. Tue, Apr. 11 Section 5: Chapters 23–27 Design patterns: COMPOSITE; OBSERVER; ABSTRACT SERVER, ADAPTER, and BRIDGE; PROXY and STAIRWAY TO HEAVEN. [slides]

Additional material:

Last lecture after Easter.
7. Tue, Apr. 25 Section 6: Chapters 28–30 Design patterns: VISITOR; STATE. Conclusions. [slides]

Additional material:


Examinations

The examination dates are:
  1. May 15, 2006.
  2. June 20, 2006.
  3. September 4, 2006.
Check the exact times and places here, and remember to enrol in time. If you are not a student of University of Turku, you must follow these instructions to receive credits.

Note: You can use the course textbook (Martin: Agile Software Development: Principles, Patterns, and Practices, Prentice-Hall, 2003) in the examination.


Syllabus

Aims: The goal of the course is to establish a broad view of the stakeholders of software design. Stakeholder forces, like reuse strategy, extendibility, understandability, maintainability, supports for construction etc. should drive the design. The course aims at understanding these forces and provides design skills needed to take the forces into account. This approach often leads to application framework type solutions.

Content: The course begins with exploring fundamentals of object orientation and their concretization as design principles. These principles lead us to design patterns, enabling us to implement commonalities and variabilities of requirements directly in the design. Most commonly used patterns are studied in detail. Two complementing design strategies for using patterns are presented: (1) upfront architecture design which tries to exploit anticipated future evolution paths of software, and (2) refactoring based approach where we rely on constant high-quality flexibility design to cope with forthcoming requirement changes.

Credits: 5 cp (3 cu)

Prerequisites: Sopimuspohjainen ohjelmointi, Olio-ohjelmointi (ent. Ohjelmointi II); Object-oriented programming

Teaching methods: Lectures (14 h), Tuesdays 10–12, Etäluokka.

Assessment: Examination.

Literature: Martin, Robert C.: Agile Software Development: Principles, Patterns, and Practices, Prentice-Hall, 2003.

Lecturer: Jouni Smed

Schedule: March 7 – April 25