Software Design and Architecture
Software Design and Architecture
Software Design and Architecture
Course Description:
An in-depth look at software design. Continuation of the study of design patterns, frameworks,
and architectures. Survey of current middleware architectures. Design of distributed systems
using middleware. Component based design. Measurement theory and appropriate use of
metrics in design. Designing for qualities such as performance, safety, security, reusability,
reliability, etc. Measuring internal qualities and complexity of software. Evaluation and evolution
of designs. Basics of software evolution, reengineering, and reverse engineering.
Prerequisites: SE211
Learning outcomes:
Upon completion of this course, students will have the ability to:
• Apply a wide variety of design patterns, frameworks, and architectures in designing a wide
variety of software.
• Design and implement software using several different middleware technologies.
• Use sound quality metrics as objectives for designs, and then measure and assess designs to
ensure the objectives have been met.
• Modify designs using sound change control approaches.
• Use reverse engineering techniques to recapture the design of software.
Teaching methods
Lectures.
Tutorials.
Self-Learning
Assessment
Midterm Exams (25%)
Homework. (10%)
Report (15 %)
Final examinations (50%).
Topics
The Report
Each Group of at max three students should submit Report from 15-20 pages in one of the
flowing topics:
Software Component Engineering
Architectural Style
Software Product line
Service Oriented Architecture
OO design
Other Topics
The Report at the end should be presented as seminar within the class times (10 -20 mints
presentation).
Report 10% .
Presentation 5%.
Text Books:
“Software Design: From Programming to Architecture” by Eric J. Braude, John Wiley & Sons,
2004, ISBN: 0 - 471- 42920 -1.
Other References :