CISC 322/3.0 Software ArchitectureOriginal Author: Nick Graham
Last Revised: October 31, 2006
Abstractions and patterns of interactions and relationships among modules. Design recovery; relationship of architecture to requirements and testing.
Prerequisites: CISC 203/3.0, CISC-204/3.0, CISC-223/3.0 and CISC-235/3.0
Learning Hours 120 (36L;84P)Objectives
This course helps students with the transition from programming in the small (as presented in CISC 121 and 124) to programming in the large. The fundamental difference between small and large programs is their complexity. With large programs, considerably planning and design work is necessary prior to implementation to ensure that the system meets its required budget, functionality and quality attributes. Software architecture provides a conceptual and notational framework for expressing the high-level implementation design of software systems. As such, software architecture complements studies of software requirements (CISC 423), human factors (CISC 325) and validation and verification (CISC 327.) The goal of this course is to expose students to the problems of developing large software systems and to introduce them to architectural techniques to help solve these problems. The theory of software architecture includes criteria for decomposing systems into a set of components and connectors, notations for describing both the static and dynamic aspects of software architectures, and analytical frameworks for reasoning about architectural tradeoffs. Since third year students typically have not been exposed to the development of large software systems, the course involves working with a modestly-sized system, both in architectural design and in realization of that design in code.
The courses to which this course is a prerequisite are
This course is required in the following programs: CSCI, SODE, and MAJ.Topics
Problems in software engineering: the role of software architecture
Programming in the large, problems with developing large software, consequences of poor development practices, software development processesSoftware architectural views
Component decomposition, interface specification, protocol specificationArchitectural trade-off analysis
Demonstration of extensive systems or frameworks demonstrating architectural principles explored in course; e.g., web application architecture, .Net, CORBAPossible Texts
While there is no single text that adequately covers the material of this course in one volume, there are many books covering various aspects of the course:Texts on Software Architecture