CS 578
Software Architectures

Spring Semester, 2009
Location: OHE 122
Time: TTh 5:00pm -6:20pm
Class number: 30137D and 30136D (DEN)


Instructor | Overview | Academic IntegrityTextbook and ReadingsAssignments and Exams Project Schedule


Instructor

Teaching Assistants


Overview

Software architecture has become increasingly important in the last 15 years in the software engineering community. At the heart of every well-engineered software system is its software architecture. Software architecture deals with the high level building blocks that represent an underlying software system. These building blocks are the components (units of computation in a system), the connectors (models of the interactions between software components), and the configurations (arrangements of software components and connectors, and the rules that guide their composition). Software architectures that are found particularly useful for families of systems are often codified into architectural styles.

This course will afford the student a complete treatment of software architecture, its foundation, principles, and elements, including those described above. The class is centered around reading assignments, and homework that will test comprehension and understanding of the course material. A class project will require the student to leverage the architectural techniques learned during the course (e.g., architectural recovery, architectural styles, domain specific software architectures) to, coupled with programming/implementation effort, design and implement a real-world software system.

In addition to foundations, and practical experience with software architectures, the class will also introduce the student to the state-of-the-art in software architecture research, future trends and state-of-the-practice. Students are expected to attend class regularly, and participate (as directed) in all class discussions, and most importantly, have fun!


Academic Integrity

Students must work independently on all individual assignments; collaborating on individual assignments is considered cheating and will be penalized accordingly. All USC students are responsible for reading and following the USC Student Conduct Code, which prohibits plagiarism. Some examples of behavior that is not allowed are: copying all or part of someone else's work (by hand or by looking at others' files, either secretly or if shown), and submitting it as your own; giving another student in the class a copy of your assignment solution; consulting with another student during an exam; and copying text from published literature without proper attribution. If you have questions about what is allowed, please discuss it with the instructor.

Students who violate University standards of academic integrity are subject to disciplinary sanctions, including failure in the course and suspension from the University. Since dishonesty in any form harms the individual, other students, and the University, policies on academic integrity have been and will be strictly enforced.


Textbook and Readings

Textbook:

Supplemental Readings:


Assignments and Examinations

Name

Description

Weight

Examination #1

Assesses your understanding of fundamental software architecture themes and concepts. The focus is on the topics covered in the first half of the course.

25%

Examination #2

Tests your understanding of issues in transferring architectural decisions to designs and implementations. The focus is on the topics covered in the second half of the course.

25%

Homework

Establishes your understanding of course material, and ability to use information gleaned from the course mateial to think critically about different facets of software architecture.

30%

Course Project A group assignment that provides experience with topical architectural recovery techniques, architectural styles, connectors, and the engineering of an important class of emerging domain-specific software systems: grid computing platforms.
20%

Assignment Submission Guidelines

Please refer to this document for guidelines on submitting your homework.


Project Information

Project Materials:

Decomposition Example:

NOTE: Each of the kernels in the example is its own executable with two parameters (input file and output file) as was specified in the project description. An input file ot the first kernel is supplied (kernel1.in). In order to mirror the original executable, run each kernel once in sequence, linking the output of the previous kernel as the input of the next kernel (e.g., the file you specify as the output of kernel 1 will be the input to kernel 2, etc.).

Project Schedule:


Schedule (subject to change; check regularly)

Week

Lecture Topic

Readings (in course book unless otherwise noted)

Assignments and Exams

1

   
  • Chapter 1
 

2

  • Chapter 2
 
  • Chapter 3
 

3

  • Chapter 4 through 4.3.2
 

4

   

5

  • Chapter 5
 
 
  • Homework #1 due

6

  • Chapter 6
 

7

  • Chapter 7
 
   

8

 
  • Homework #2 due
 
  • EXAM #1 (Location: THH 102)
    March 5, 2009
    , 5:00-6:20pm PST

9

  • Chapter 8
  • Chapter 9
 

10

SPRING RECESS

11

   
 
  • Homework #3 due

12

  • Chapter 10
  • Chapter 11
 

13

  • Chapter 12
 
  • Chapter 13
 

14

  • Chapter 14
 
  • Chapter 15
  • Dan Crichton Guest Lecture (Location: SSL 150) April 16, 2009, 11:00am PST

15

   
  • Chapter 16
  • Chapter 17
 

16

   
   
  • EXAM #2 (Location: THH 102)
    April 30, 2009, 5:00-6:20pm PST
  • PROJECT DUE
    May 3rd , 2009