Course Outline
Tentative Outline
1. Introduction to Software
Architecture
a. What is Software Architecture?
b. Why is Software Architecture
Important?
c. Components of a System
d. Relationship between Components
2. System Quality Attributes
Influencing the Architecture
a. Runtime Attributes (e.g.,
performance, usability, etc.)
b. Software Engineering Attributes
(e.g., modifiability, reusability, etc.)
c. Business Attributes (e.g., cost,
time to market, etc.)
3. Security Implications for Software
Architectures
4. Architectural Design Principles
a. Decomposition
i.
Identifying
Functional Components
ii.
Composition/Aggregation
iii.
Component
Communication
b. Replication
c. Abstraction
d. Resource Sharing
5. The Process of Software
Architectural Design
a. Architectural Requirements
b. System Structuring
c. Architectural Validation
d. Organizational Considerations
6. Architectural Styles and Patterns
a. Data Centered Architecture
b. Data-Flow Architecture
c. Virtual Machine Architecture
d. Call-and-Return Architecture
e. Independent Component Architecture
f.
Heterogeneous
Architectures
7. Architectural Representation and
Documentation
a. Review of UML Notation
b.
Architectural
Design Languages
8.
Analyzing and Assessing Software Architectures
a.
Properties of a Good Software Architectur
b. Review
Techniques