Syllabus

This is the high-level outline provided by myself; while this is general guideline the course will be adjusted according to your feedback, interests, and experience.

Introduction

Why design? Input, output, and constraints of the design process. Types of design. Relationship to software quality and course.

Software Design Models

Design as search. Design spaces. Design state, goal structure, generative design operations, early quantitative evaluations, control of design process. Basic models of design (transformational, plan/architecture driven). Relationship to other life-cycle activities.

Design Representations

What should be represented (structure, behaviour)? Informal representations of design, examples of design notations.
 
Formal representation of design.
 
Domain specific architecture descriptions. Role of standards, reference architectures. Design documentation.

Design Plans

Review of small/medium scale plans (programming language structures, concurrency).
 
Plans/architectures for common types of software systems.

Design Strategies and Methods

Design strategies. Selected methods: object modelling technique, structured design, real-time, user interfaces. Methods for design with off-the-shelf components.

Design Assessment

Assessment dimensions and factors affecting their relative importance. Design tradeoffs. Evolvability and understandability criteria of design spaces.
Design complexity metrics. Assessment strategies (analytical, simulation, rapid prototyping), example: response time/throughput estimation.

Design Verification

Design reviews, scenarios and test cases, testing of executable design representations. Verification of properties.