CS 578
Software Architectures

Spring Semester, 2007
Location: OHE 122
Time: TTh 11:00am - 12:20pm
Class number: 048-30137D and 034-30136D (DEN)


Instructor | Overview | Academic IntegrityTextbook and ReadingsAssignments and ExamsSchedule


Instructor

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. The focus is on the topics covered in the first half of the course.

20%

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.

20%

Homework 1
     Academic honesty contract

Establishes your acknowledgment and understanding of the academic conduct guidelines for USC students.
NOTE: You cannot pass the course without completing this assignment!

1%

Homework 2
     Definitions of basic concepts

Gauges your understanding of the basic software engineering concepts and your perception of several software architecture terms and concepts.

3%

Homework 3
     Case study system architecture

Requires you to provide and analyze an architectural breakdown for the system described in the case study discussed in Week 4.

10%

Homework 4
     System composition with COTS components

Requires you to analyze a COTS-intensive system architecture for component mismatches.

8%

Homework 5
     System composition with COTS connectors

Requires you to analyze a set of widely used COTS connectors for satisfaction of system requirements in high-volume data distribution scenarios.

8%

Homework 6
     Architecture-driven system implementation

Requires you to implement and adapt a simple application using an architectural middleware platform.

10%

Homework 7
     Architecture-driven dynamic adaptation

Requires you to assess the deployment architecture of a given system for properties of interest, and to change that deployment during the system's runtime.

10%

Homework 8
     Architectural recovery

Gives you the opportunity to gain hands-on experience with a suite of architectural recovery techniques and tools, by applying them on an actual software system.

10%

Assignment Submission Guidelines

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


Schedule (subject to change; check regularly)

Week

Lecture Topic

Readings

Assignments and Exams

1

  • Course introduction

 

2

  • F. P. Brooks, Jr. No Silver Bullet: Essence and Accidents of Software Engineering. IEEE Computer, April 1987.
  • R. N. Taylor, N. Medvidovic, and E. M. Dashofy. The Big Idea. Software Architecture: Foundations, Theory, and Practice, John Wiley & Sons, to appear.

 

  • R. N. Taylor, N. Medvidovic, and E. M. Dashofy. Architectures in Context:  The Reorientation of Software Engineering. Software Architecture: Foundations, Theory, and Practice, John Wiley & Sons, to appear.
  • D. E. Perry and A. L. Wolf. Foundations for the Study of Software Architectures. ACM SIGSOFT Software Engineering Notes, October 1992.

3

  • Chapter 1
  • R. N. Taylor, N. Medvidovic, and E. M. Dashofy. Basic Concepts. Software Architecture: Foundations, Theory, and Practice, John Wiley & Sons, to appear.

 

  • Chapter 7: Section 7.2
  • R. N. Taylor, N. Medvidovic, and E. M. Dashofy. Connectors. Software Architecture: Foundations, Theory, and Practice, John Wiley & Sons, to appear.

4

  • Chapter 3
  • Case Study: Call Center Customer Care (C4) System.
  • R. Kazman. Distributed Flight Simulation: A Challenge for Software Architecture. Technical Report, University of Waterloo.
  • Chapter 5
  • R. N. Taylor, N. Medvidovic, and E. M. Dashofy. Designing Architectures. Software Architecture: Foundations, Theory, and Practice, John Wiley & Sons, to appear.
 

5

  • Chapter 2
  • Chapter 8: Section 8.2
  • M. Hauswirth and M. Jazayeri. A Component and Communication Model for Push Systems. 7th European Software Engineering Conference with 7th ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE’99), Toulouse, France, September 1999.
 
  • W. Tracz. DSSA (Domain-Specific Software Architecture) Pedagogical Example. ACM SIGSOFT Software Engineering Notes, July 1995.
  • R. N. Taylor, N. Medvidovic, and E. M. Dashofy. Domain-Specific Software Engineering. Software Architecture: Foundations, Theory, and Practice, John Wiley & Sons, to appear.

 

6

  • D. Batory and S. O'Malley. The Design and Implementation of Hierarchical Software Systems with Reusable Components. ACM Transactions on Software Engineering and Methodology, October 1992.
  • R. N. Taylor et al. A Component- and Message-Based Architectural Style for GUI Software. IEEE Transactions on Software Engineering, June 1996.
  • R. T. Fielding and R. N. Taylor. Principled Design of the Modern Web Architecture. 22nd International Conference on Software Engineering (ICSE 2000), Limerick, Ireland, June 2000.
  • Chapter 7: Sections 7.1, 7.3
  • R. N. Taylor, N. Medvidovic, and E. M. Dashofy. Modeling. Software Architecture: Foundations, Theory, and Practice, John Wiley & Sons, to appear.

 

7

  • Chapter 8: Sections 8.1 and 8.3
  • N. Medvidovic and R. N. Taylor. A Classification and Comparison Framework for Software Architecture Description Languages. IEEE Transactions on Software Engineering, January 2000.
  • N. Medvidovic, E. M. Dashofy, and R. N. Taylor. Moving Architectural Description from Under the Technology Lamppost. Journal of Information and Software Technology, 2007.
 
  • UML OMG Specification
  • D. Garlan and A. J. Kompanek. Reconciling the needs of Architectural Description with Object-Modeling Notations. 3rd International Conference on The Unified Modeling Language (UML 2000), 2000.
  • M. Abi-Antoun and N. Medvidovic. Enabling the Refinement of a Software Architecture into a Design. 2nd International Conference on The Unified Modeling Language (UML’99), Fort Collins, CO, October 1999.
  • N. Medvidovic, et al. Modeling Software Architectures in the Unified Modeling Language. ACM Transactions on Software Engineering and Methodology, January 2002.

8

  •  Exam 1  review

 

 

 

 

  • EXAM 1 (THH 201)
    March 1, 2007

9

  • R. N. Taylor, N. Medvidovic, and E. M. Dashofy. Implementation. Software Architecture: Foundations, Theory, and Practice, John Wiley & Sons, to appear.
  • S. Malek, M. Mikic-Rakic, and N. Medvidovic. A Style-Aware Architectural Middleware for Resource-Constrained, Distributed Systems. IEEE Transactions on Software Engineering, March 2005.
 
  • D. Krieger and R.M. Adler. The Emergence of Distributed Component Platforms. IEEE Computer, March 1998.
  • N. Medvidovic et al. The Role of Middleware in Architecture-Based Software Development. International Journal of Software Engineering and Knowledge Engineering, August 2003.
  • S. P. Reiss. Connecting Tools Using Message Passing in the Field Environment. IEEE Software, July 1990.

10

SPRING RECESS

11

  • Exam 1 recap

 

 
  • S. Vinoski. CORBA: Integrating Diverse Applications within Distributed Heterogeneous Environments. IEEE Communications Magazine, February 1997.
  • R. Natarajan and D. S. Rosenblum. Supporting Architectural Concerns in Component Interoperability Standards. IEE Proceedings - Software, December 2000.
  • C. A. Mattmann et al. A Software Architecture-Based Framework for Highly Distributed and Data Intensive Scientific Applications. 28th International Conference on Software Engineering, Shanghai, China, May 2006.
 

12

  • V. Basili and B. Boehm. COTS-Based Systems Top 10 List, IEEE Software.
  • A. Egyed, and B. Balzer. Integrating COTS Software into Systems through Instrumentation and Reasoning, Journal on Automated Software Engineering (JASE), to appear.
  • M. J. Maybee et al. Multilanguage Interoperability in Distributed Systems: Experience Report. 18th International Conference on Software Engineering, Berlin, Germany, March 1996.

 

 

13

  • R. S. Hall et al. A Cooperative Approach to Support Software Deployment Using the Software Dock. 21st  International Conference on Software Engineering, Los Angeles, CA, May 1999.
  • S. Malek et al. A Decentralized Redeployment Algorithm for Improving the Availability of Distributed Systems. 3rd International Working Conference on Component Deployment, Grenoble, France, November 2005.
  • M. Mikic-Rakic et al. Improving Availability in Large, Distributed Component-Based Systems via Redeployment. 3rd International Working Conference on Component Deployment, Grenoble, France, November 2005.
 
 

 

14

  • J. Magee and J. Kramer. Dynamic Structure in Software Architectures. 4th ACM SIGSOFT Symposium on the Foundations of Software Engineering, San Francisco, CA, October 1996. 
  • P. Oreizy et al. Architecture-Based Runtime Software Evolution. 20th International Conference on Software Engineering, Kyoto, Japan, April 1998.
  • M. Mikic-Rakic and N. Medvidovic. Support for Disconnected Operation via Architectural Self-Reconfiguration. First International Conference on Autonomic Computing, New York, NY, May 2004.
 
 

 

15

  • R. N. Taylor, N. Medvidovic, and E. M. Dashofy. Security. Software Architecture: Foundations, Theory, and Practice, John Wiley & Sons, to appear.
  • S. Malek et al. A Framework for Ensuring and Improving Dependability in Highly Distributed Systems. R. de Lemos, C. Gacek, and A. Romanowski, eds., Architecting Dependable Systems III, Springer Verlag, October 2005.
  • R. Roshandel et al. Estimating Software Component Reliability by Leveraging Architectural Models. 28th International Conference on Software Engineering, Shanghai, China, May 2006.

  • R. N. Taylor, N. Medvidovic, and E. M. Dashofy. People, Roles, and Teams. Software Architecture: Foundations, Theory, and Practice, John Wiley & Sons, to appear.

16

  • Exam 2 review

 

 

 

 

  • Homework 8 due
    April 26, 2007
     
  • EXAM 2 (THH 201)
    April 26, 2007