This course can be taken for credit towards

·         the BS CS major as a Senior CS-related course

·         the BS CS minor in Software Engineering

·         the proposed BS in Applied CS in Software Engineering (starting Fall 2009)

Description

One of the greatest difficulties for young graduates that work in software is getting the big picture. Why are things organized the way they are? Why do they behave the way they do? What can you do to change it? Architecting software is normally reserved for senior people, but this course shows you the ropes of the trade so that you too can work towards becoming a software architect.

This course teaches how to design, understand, and evaluate software systems at an architectural level of abstraction. By the end of the course, students will be able to:

·         Identify and characterize the major architectural styles in existing software systems.

·         Recover the architecture of a software system by analyzing its code.

·         Describe a system’s architecture accurately using views of the code and run-time structures.

·         Use existing tools and architectural frameworks to expedite software design.

·         Analyze and use commercial architectural frameworks.

·         Discuss the pros and cons of architectural alternatives.