Course Outline

The inherent complexity of large scale software systems requires using and following disciplined processes and techniques in designing and/or analyzing their architectures. This course focuses on the decision-making process underlying software architecture design, and the selection and application of suitable architecture design strategies, mechanisms and technologies. Software architecture is viewed as a collection of software components interacting or communicating via a collection of software connectors. The focus of the course will be on identifying and designing software components and connectors by adopting appropriate design strategies, architectural styles, and technologies.

Syllabus


The following syllabus is subject to the time available and may change during the term. Some of the topics may not be covered.

Lectures:

Unit 1. Introduction to Software Architecture (1.5h)

Define the discipline of software architecture and introduce fundamental concepts underlying this discipline. A particular emphasis will be placed on the following:

 

Unit 2. Architecture and Requirements (1.5h)

Introduce the concept of Architecturally Significant Requirements (ASR) and present systematic way to capture and express quality attributes requirements under the form of quality attributes scenarios.

Unit 3. Architecture Design (1.5h)

Provide a general overview of software design techniques, and then focus in detail on the Attribute-Driven Design (ADD) technique. Emphasis will be placed on the identification of software architectural drivers or tactics and the use of these drivers to guide the design of software architecture.

 

Unit 4. Documenting Software Architectures (3h)

Present notions and concepts of software components and connectors and their place in software architecture. Emphasis will be placed on components/connectors identification, design, and modeling using a standard architectural description language (ADL). Emphasis will also be placed on selection and application of components communication and control patterns.

Unit 5. Architectural Styles (4.5h)

Define the notions and needs for architectural styles as major building for software architecture, and introduce major architectural styles such as data flow styles, independent component styles, c and service-oriented architectural (SOA) style.

Unit 6. Performance Quality Attribute (4.5h)

Introduce methods and techniques to evaluate and improve software architecture from performance standpoint. Present techniques and models for software performance analysis, prediction, and design.

Unit 7. Availability Quality Attribute (3h)

Introduce techniques and models for software availability analysis and design. Present basic notions of software fault tolerance and give an overview of software fault tolerance techniques and architectures.

Unit 8. Security Quality Attribute (3h)

Introduce techniques and models for software security analysis and design.

Unit 9. Modifiability Quality Attribute (4.5h)

Introduce techniques and models for software modifiability analysis and design. Present modifiability metrics and structural analysis techniques.

Unit 10. Economic Analysis of Architectures (4.5h)

Introduce techniques and models for cost-benefit analysis based on architectural requirements and design decisions.