CS 612
Software Architectures

Spring Semester, 2000
Location: OHE 100
Time: TTh 12:30 - 1:50 pm
Class number: 034-33591D (off-campus) and 048-33592D
Prerequisite:
CS 577a or instructor’s consent


 

Final Grades

 

 

Instructor | OverviewTextbook and ReadingsAssignments and ExamsSchedule | Additional Resources | Link to the Spring’99 page


Instructor


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, and COM/DCOM). Homework assignments, a midterm exam, and a quiz will be given to assess your understanding of important concepts, methods, languages, and tools. A project will give you an opportunity to study an aspect of architectures in more depth and "push the envelope" of architecture research and practice. 


Textbook and Readings

Textbook:

Supplemental Readings:


Assignments and Examinations

Name

Description

Weight

Midterm examination 

Assesses your understanding of fundamental software architecture themes and concepts. 

25%

Quiz 

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

10%

Class project

In-depth treatment of a "hot" topic in software architectures. Depending on the scope, the project will be conducted by individual students or teams of two. Depending on the nature of the project, it may involve implementation. Possible project ideas will be discussed in class in Week 5.

  • Project presentation sign-up sheet.  Send me email to sign up for a time slot.

30%

Homework 1: Definitions of basic concepts

Gauges your understanding of the basic software engineering concepts and your perception of several software architecture terms and concepts before they are introduced in class. 

3%

Homework 2: Case study system architecture

Requires you to provide an architectural breakdown for the system described in the case study discussed in Week 3 (solution).

7%

Homework 3: Example system architecture and implementation

Requires you to provide 

of a simple software system.

20%

Homework 4: Definitions of basic concepts revisited

Tests (the change in) your understanding of the basic software architecture terms and concepts after you have been exposed to them. 

5%


Schedule (Subject to Change)

Readings marked in red are optional.  You will not be tested on the contents of those papers.  However, to encourage you to read them, both the midterm and the quiz will have questions drawn from these papers for extra-credit.

 

Week

Date

Lecture Topic

Readings

Assignments and Exams

1

Jan 11

  • Course introduction
  • Overview of software engineering principles (PDF)

 

  • Homework 1 (PDF)

Jan 13

  • Origins of software architectures (PDF)
  • F. DeRemer and H. H. Kron. Programming-in-the-Large versus Programming-in-the-Small. IEEE Transactions on Software Engineering, June 1976.
  • F. P. Brooks, Jr. No Silver Bullet: Essence and Accidents of Software Engineering. IEEE Computer, April 1987.
  • B. W. Boehm and W. L. Scherlis. Megaprogramming. Software Technology Conference 1992, Los Angeles, April 1992.

 

2

Jan 18

  • Introduction to software architectures (PDF)
  • Chapter 1
  • D. E. Perry and A. L. Wolf. Foundations for the Study of Software Architectures. ACM SIGSOFT Software Engineering Notes, October 1992.

 

Jan 20 

  • Scope of software architectures (PDF)
  • C4 Case study analysis
  • Chapter 3: Section 3.1
  • C4 Case Study
  • Homework 1 due
  • Homework 2 (PDF)

3

Jan 25 

  • Scope of software architectures cont.: case studies (PDF)
  • Chapter 3: Sections 3.2-3.5

 

Jan 27 

  • Arriving at an architecture (PDF)
  • Chapter 5
  • D. L. Parnas. On the Criteria To Be Used in Decomposing Systems into Modules. Communications of the ACM, December 1972.
  • T. Korson and J.D. McGregor. Understanding Object-Oriented: A Unifying Paradigm. Communications of the ACM, September 1990.
  • P. Kruchten. Mommy, Where Do Software Architectures Come from? 1st International Workshop on Architectures for Software Systems, Seattle, WA, April 1995.

 

4

Feb 1 

  • Domain-specific software architectures (DSSA) (PDF)
  • W. Tracz. DSSA (Domain-Specific Software Architecture) Pedagogical Example. ACM SIGSOFT Software Engineering Notes, July 1995.
  • D. E. Perry. Generic Descriptions for Product Line Architectures. 2nd International Workshop on Development and Evolution of Software Architectures for Product Families (ARES II), Las Palmas de Gran Canaria, Spain, February 1998. 
  • R. Hayes-Roth and W. Tracz. DSSA Tool Requirements for Key Process Functions. ADAGE Technical Report, ADAGE-IBM-93-13B, October 1994.

 

Feb 3 

  • Architectural styles (PDF)
  • 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.
  • M. Shaw. Comparing Architectural Design Styles. IEEE Software, November 1995.
  • Homework 2 due
  • Homework 3 Part (i) (PDF)

5

Feb 8 

  • Examples of domain- and style-specific architectures (PDF)
  • 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.

 

Feb 10 

  • Project suggestions (PDF)

 

 

6

Feb 15 

  • Software connectors (PDF)
  • Chapter 7: Section 7.2
  • N. R. Mehta et al. Towards a Taxonomy of Software Connectors. 22nd International Conference on Software Engineering, Limerick, Ireland, June 2000. 
  • E. M. Dashofy et al. Using Off-the-Shelf Middleware to Implement Connectors in Distributed Software Architectures. 21st International Conference on Software Engineering, Los Angeles, CA, May 1999.
  • Homework 3 (i) due
  • Homework 3 Part (ii) (PDF)

Feb 17 

  • Project discussion

 

 

7

Feb 22 

  • Architecture description languages (ADLs) (PDF)
  • Chapter 6
  • Chapter 7: Section 7.1
  • N. Medvidovic and R. N. Taylor. A Classification and Comparison Framework for Software Architecture Description Languages.IEEE Transactions on Software Engineering, 2000. (to appear)
  • D. Garlan et al. ACME: An Architecture Description Interchange Language. CASCON'97, November 1997.

 

Feb 24

  • ADL Examples (PDF)
  • Chapter 8: Sections 8.1 and 8.3
  • D. C. Luckham and J. Vera. An Event-Based Architecture Definition Language. IEEE Transactions on Software Engineering, September 1995.
  • N. Medvidovic et al. A Language and Environment for Architecture-Based Software Development and Evolution. 21st International Conference on Software Engineering, Los Angeles, CA, May 1999.
  • Project proposals due (1-2 pages describing what, how, why, and how much  you plan to do)

8

Feb 29 

  • Dynamism in software architectures (PDF)
  • 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.
  • P. Inverardi and A. L. Wolf. Formal Specification and Analysis of Software Architectures Using the Chemical Abstract Machine Model. IEEE Transactions on Software Engineering, April 1995.

 

Mar 2 

  • Architecture-based testing and analysis  (PDF)
  • M. Moriconi et al. Correct Architecture Refinement. IEEE Transactions on Software Engineering, April 1995.
  • D. Garlan et al. Architectural Mismatch: Why Reuse Is so Hard. IEEE Software, November 1995.
  • C. Gacek and B. W. Boehm. Composing Components: How Does One Detect Potential Architectural Mismatches? Workshop on Compositional Software Architectures, Monterey, CA, January 1998.

 

9

Mar 7 

  • Midterm Exam Review

 

 

Mar 9

 

 

  • Homework 3 Part (iii) (PDF)
  • MIDTERM EXAM

10

SPRING RECESS

11

Mar 21 

  • From architecture to design: overview of UML (PDF)
  • 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.
  • UML  Documentation. (on-line reference)
  • Homework 3 (ii) due

Mar 23 

  • Midterm Exam Discussion

 

 

12

Mar 28 

  • Role of UML in software architectures (PDF)
  • J. E. Robbins et al. Integrating Architecture Description Languages with a Standard Design Method. 20th International Conference on Software Engineering, Kyoto, Japan, April 1998.
  • Rose/Architect: A Tool to Visualize Architecture. Hawaii International Conference on System Sciences, January 1999.
  • C. Hofmeister et al. Describing Software Architecture with UML. 1st Working IFIP Conference on Software Architectures, San Antonio, TX, February 1999.

 

Mar 30 

  • From architecture to implementation (PDF)
  • D. Krieger and R.M. Adler. The Emergence of Distributed Component Platforms. IEEE Computer, March 1998.
  • E. Di Nitto and D. S. Rosenblum. Exploiting ADLs to Specify Architectural Styles Induced by Middleware Infrastructures. 21st International Conference on Software Engineering, Los Angeles, CA, May 1999.

 

13

Apr 4 

  • Project discussion

 

 

Apr 6 

  • Software interconnection technologies (PDF)
  • S. P. Reiss. Connecting Tools Using Message Passing in the Field Environment. IEEE Software, July 1990.
  • M. J. Maybee et al. Multilanguage Interoperability in Distributed Systems: Experience Report. 18th International Conference on Software Engineering, Berlin, Germany, March 1996.
  • Homework 3 (iii) due 11:59pm

14

Apr 11 

  • Middleware – CORBA (PDF)
  • S. Vinoski. CORBA: Integrating Diverse Applications Within Distributed Heterogeneous Environments. IEEE Communications Magazine, February 1997.

 

Apr 13 

  • Middleware - COM/DCOM (PDF)
  • Microsoft Corporation.  The Component Object Model: Technical Overview. (on-line reference
  • Microsoft Corporation.  DCOM Technical Overview. (on-line reference)
  • K. J. Sullivan et al. Analysis of a Conflict Between Aggregation and Interface Negotiation in Microsoft’s Component Object Model.  IEEE Transactions on Software Engineering, July/August 1999.

 

15

Apr 18 

  • Middleware – JavaBeans and Enterprise JavaBeans (PDF)
  • R. Natarajan and D. S. Rosenblum. Merging Component Models and Architectural Styles. Third International Software Architecture Workshop, Nov. 1998. 
  • Sun Microsystems, Inc.  Java Beans Specification. (on-line reference)
  • Sun Microsystems, Inc. Enterprise Java Beans Specification. (on-line reference)
  • Homework 4 (PDF)

Apr 20 

  • Issues in middleware interoperability
  • Current issues and future trends (PDF)
  • R. T. Fielding. Software Architectural Styles for Network-based Applications.Unpublished manuscript, June 1999.
  • D. Wile. AML: An Architecture Meta-Language. 14th International Conference on Automated Software Engineering (ASE’99), Cocoa Beach, FL, October 1999.

 

16

Apr 25

  • Final project discussion and clarification
  • Course Evaluations

 

  • QUIZ (30 min.)

Apr 27

  • Course summary and review
  • N. Medvidovic and D. S. Rosenblum. Domains of Concern in Software Architectures and Architecture Description Languages. USENIX Conference on Domain-Specific Languages, Santa Barbara, CA, October 1997.
  • Homework 4 due

Finals

May 2-4 

 

 

  • Project writeups and presentations/ demonstrations due

Additional Resources

This is a (growing) list of resources you may find useful for your projects (and in general).  New resources will be added as they arise in your proposed projects and/or become relevant.  If you have a resource you think may be of use to the class, send it to me and I will add it here.



Last updated:  09/10/2000