CpSc 875

Software Architecture

 

Course Description: This course explores the creation, analysis and maintenance of architectures for software systems. The course considers basic principles, patterns and techniques. Quality attributes of the architecture will be used to make a quantitative analysis. Students will create and analyze two architectures from different domains.

Objectives: Software Architecture aims to teach you how to design and evaluate systems at an architectural level of abstraction. By the end of the course you should be able to:

 

Instructor: Dr. John D. McGregor

Office: McAdams 312

Office Phone: 656-5859

Office Hours: 9:30 – 10:30 TTh

Other hours by appointment

Required Texts:

None; we will use primary sources

Important Dates:

January 19, 2011

Last Day to Add

January 26, 2011

Last Day to Drop with no record

March 18, 2011

Last Day to Drop with no final grade

March 21 - 25, 2011

Spring Break

May 6, 2011

Final Exam – 7:00 PM

 

 

Course Requirements:

2 exams

30 points each

Architecture projects

30 points

Research summaries

5 points

Class participation

5 points

 

Grading:

100 - 90 A

89 - 80 B

79 - 70 C

69 - Below F

Policies:

1. No late assignments accepted.

2. No makeup exams

3. All work should be completed independently unless explicitly stated otherwise in the assignment.

4. The university's academic dishonesty policy is located at this URL:  www.clemson.edu/academic/integrity.htm

 

Topical Outline

  1. What is Software Architecture

The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them.

  1. Architecture Business Cycle

Software architecture involves technical knowledge, domain knowledge, and business knowledge. The architecture is developed in the context of constraints imposed by each of these areas.

  1. Introductory Case Study

The introductory case study investigates a system that has been successful for a long time.

  1. Quality Attributes

Attributes such as performance and modifiability are enhanced or degraded through the choices made by the architect.

  1. Architectural Styles

Long experience with many systems results in the identification of patterns of reoccurring architectural structures. These styles are used to speed the development of other systems with similar requirements.

  1. Unit Operations

These are a set of fundamental actions that are used to form new architectural structures. The architect can reason about the effects of an action before it is taken.

  1. Case Studies

Case studies are selected to complement the projects chosen in a semester

  1. Evaluating an Architecture

The Architecture Trade-Off Analysis Method (ATAM) and Guided Inspection are techniques that evaluate the architecture in the context of the system requirements.

  1. Architecture-based Development

The development process changes when an architecture is available to guide development.

  1. Reuse of Architecture Knowledge

Reuse of architecture knowledge takes many forms such as product line development and the recognition of new architectural styles.

  1. Architecture Representation

UML has been used with additions and modifications. Other specialized modeling languages have also been developed.

 

Projects

One or two projects will be assigned. Each will take half of the semester (or perhaps one for the entire semester). In the project the students will develop an architecture from a set of requirements, justify the architecture using the quality attributes of the architecture to show that the architecture is "fit for purpose", and will participate in a systematic evaluation of their architecture and revise it based on the results of the evaluation. One or more architectural description languages will be used to document the architecture.

Research Summaries

Students will read, summarize, and critique research papers over the course of the semester.