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:
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.