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