[Please remove <h1>]
This is a project course that covers software architecture as described in
the computing literature. Students present papers from the literature. They carry
out a large project, usually in teams, that explore key topics in software architecture.
Three hours of lecture per week.
Introduction (3 hrs)
Basic concepts in software architecture. Nature of student presentations. Project overview.
Architectures and Open Source (3 hrs)
Systems such a Linux, VIM and Apache. Processes for their design. Their architectures.
Foundations of Software Architecture (3 hrs)
Approaches, definitions and examples providing a basis for the field.
Extraction of Software Architecture (3 hrs)
Methods of extraction of software architecture from existing artifacts (mainly, from source code). Case studies of extractions.
Theory Underlying Software Architecture (3 hrs)
Algebraic modelling and manipulation of large graphs. Elision. Linking. Views. Specifying constraints on connectivity.
Architecture of Web-Based Systems (3 hrs)
Three and N tiered architecture. Heterogeneous implementation technologies.
Historical Perspective (1.5 hrs)
Early papers on software architecture.
Layouts of Graphs for Visualizing Architecture (3 hrs)
Standard layout algorithms: Sugiyama and spring.
Clustering (1.5 hrs)
Automatic clustering techniques to discover objects and subsystems.
Architecture of Enterprise Systems (3 hrs)
Structure of inter and intra enterprise computer systems. Underlying communications and glue systems such as Corba.
Project Presentations (6 hrs)
Each student project is presented to the class.