CS 578
Software Architectures

Spring Semester, 2005
Location: OHE 122
Time: TTh
12:30pm - 1:50pm
Class number: 048-33592D and 034-33594R (DEN)


Instructor | Overview | Academic IntegrityTextbook and ReadingsAssignments and ExamsSchedule


Instructors

Teaching Assistants


Overview

Software architecture has become an area of intense research in the software engineering community. A number of architecture modeling notations and support tools, as well as new architectural styles, have emerged. The focus of architecture-based software development is shifted from lines-of-code to coarser-grained building blocks and their overall interconnection structure. Explicit focus on architecture has shown tremendous potential to improve the current state-of-the-art in software development and alleviate many of its problems. 

This course will expose you to the concepts, principles, and state-of- the-art methods in software architectures, including domain-specific software architectures (DSSA), architectural styles, architecture description languages (ADL), software connectors, dynamism in architectures, and architecture-based testing and analysis. In the process of studying these concepts, we will make explicit the boundaries of the field and discuss its relationship to other areas of software engineering, specifically requirements, design (including object-oriented design and related notations, such as UML), and implementation. The course will also examine the practical applicability of architecture research, specifically its relationship to the work in software reuse and component interoperability platforms (such as CORBA, Enterprise JavaBeans, COM/DCOM, and .NET). A series of related homework assignments and two exams will be given to assess your understanding of important concepts, methods, languages, and tools. 


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. 

25%

Examination 2

Tests your understanding of issues in transferring architectural decisions to designs and implementations. The focus is on research and commercial off-the-shelf (OTS) tools, techniques, and interoperability platforms covered in the latter part of the course.

25%

Homework 1: System architectural recovery

Requires you to provide an initial architectural breakdown of an off-the-shelf system using a third-party technique and/or tool.

10%

Homework 2: Further architectural recovery

Requires you to extend the structural breakdown from Homework 1 with more dynamic relationships

10%

Homework 3: Relating software requirements to architecture

Requires you to devise a partial set of functional and non-functional requirements for the architecture recovered in Homework 1 and clearly relate those requirements to the architecture.

10%

Homework 4: Refining recovered architecture

Requires you to further refine the architecture recovered in Homework 1, with the help of the requirements given in Homework 2 and 3, by introducing notions of high-level components, connectors, and architectural styles and patterns.

10%

Homework 5: Relating architecture to design and implementation

Requires you to reconcile the architecture you arrived at in Homework 4 with the structure and properties of the system’s implementation.

10%

Assignment Submission Guidelines

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


Schedule (subject to change)

Week

Lecture Topic

Readings

Assignments and Exams

1

Jan 11

   

Jan 13

 

2

Jan 18

 

Jan 20

  • Chapter 3
 

3

Jan 25

Jan 27

 

4

Feb 1

 

Feb 3

 

5

Feb 8

 

Feb 10

 

6

Feb 15

Feb 17

 

7

Feb 22

 

Feb 24

 

8

March 1

March 3

  • Homework 2 due (5pm)

9

March 8

  •  Exam 1  review
   

March 10

   
  • EXAM 1(Rooms: ZHS 159, ZHS 352, MHP 106)

10

SPRING RECESS

11

March 22

  • Exam 1 recap
 

March 24

  • Homework 3 due (Friday, March 25, 5pm)
  • Homework 4

12

March 29

 

March 31

 

13

April 5

 

April 7

  • Homework 4 due

14

April 12

 

April 14

15

April 19

 

April 21

  • Impact of a change (incremental transformation and analysis)
 

16

April 26

  • Exam 2 review
   

April 28

   
  • EXAM 2