Information and Computer Science 223:
Software Architectures

(offered as ICS 280G in WQ 2003)

Winter Quarter, 2003
Location: CS 253 (Need a map?)
Tuesday and Thursday, 2:00-3:20
Course code: 36695
(Last modified January 28, 2003 )


[January 28, 2003] Bob Monroe's tech report on Armani is now available. I recommend your reading it.

[January 23, 2003] Debi's slides on Endnote usage are now available.

[January 20, 2003] Eric's slides from last Thursday are now available. See the schedule below for the URL.

[January 16, 2003] Assignment 2 made it out by email, so I've deleted it from this page.

[January 9, 2003] I've posted Haig Krikorian's slides. Note also the correct URL for the Software Architecture website:

My keynote talk from the STRAW '01 workshop is available.

Here's a talk on architectures from 1999 that I'll be using parts of in class today.

That talk was refined and focused a bit for a talk I gave at JPL. I'll be using some of these slides as well

I now have a URL for the Perry and Wolf paper, for your convenience. See the paper list below.

Overview | Textbooks | Schedule | Assignments | Academic Dishonesty |


Overview and Prerequisite Knowledge

From the UCI Catalog:

223 Software Architecture (4). Study of the concepts, representation techniques, development methods, and tools for architecture-centric software engineering. Topics include domain-specific software architectures, architectural styles, architecture description languages, software connectors, and dynamism in architectures.

The following is a quote from Neno Medvidovic. It works for this class.

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, JavaBeans, and COM/DCOM).


A variety of textbooks are available, including

...but these are NOT required (I haven't even ordered "optional" copies) as the primary reading material will be from conference and journal articles.


Here's a first cut at the reading list. This will *definitely* be modified.

  1. D. E. Perry and A. L. Wolf. Foundations for the Study of Software Architectures. ACM SIGSOFT Software Engineering Notes, October 1992.
  2. R. Kazman. Distributed Flight Simulation: A Challenge for Software Architecture. Technical Report, University of Waterloo.
  3. P. Kruchten. The Software Architect – and the Software Architecture Team. 1st Working IFIP Conference on Software Architectures, San Antonio, TX, February 1999.
  4. D. L. Parnas. On the Criteria To Be Used in Decomposing Systems into Modules. Communications of the ACM, December 1972.
  5. T. Korson and J.D. McGregor. Understanding Object-Oriented: A Unifying Paradigm. Communications of the ACM, September 1990.
  6. P. Kruchten. Mommy, Where Do Software Architectures Come from? 1st International Workshop on Architectures for Software Systems, Seattle, WA, April 1995.
  7. N. Medvidovic and R. N. Taylor. A Classification and Comparison Framework for Software Architecture Description Languages. IEEE Transactions on Software Engineering, January 2000.
  8. D. C. Luckham and J. Vera. An Event-Based Architecture Definition Language. IEEE Transactions on Software Engineering, September 1995.
  9. 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.
  10. W. Tracz. DSSA (Domain-Specific Software Architecture) Pedagogical Example. ACM SIGSOFT Software Engineering Notes, July 1995.
  11. 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. 
  12. R. T. Fielding. Software Architectural Styles for Network-based Applications. Unpublished manuscript, June 1999.
  13. 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.
  14. 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.
  15. R. N. Taylor et al. A Component- and Message-Based Architectural Style for GUI Software. IEEE Transactions on Software Engineering, June 1996.
  16. 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.
  17. N. R. Mehta et al. Towards a Taxonomy of Software Connectors. 22nd International Conference on Software Engineering, Limerick, Ireland, June 2000. 
  18. 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.
  19. 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. 
  20. P. Oreizy et al. Architecture-Based Runtime Software Evolution. 20th International Conference on Software Engineering, Kyoto, Japan, April 1998.
  21. M. Moriconi et al. Correct Architecture Refinement. IEEE Transactions on Software Engineering, April 1995.
  22. D. Garlan et al. Architectural Mismatch: Why Reuse Is so Hard. IEEE Software, November 1995.
  23. C. Gacek and B. W. Boehm. Composing Components: How Does One Detect Potential Architectural Mismatches? Workshop on Compositional Software Architectures, Monterey, CA, January 1998.
  24. UML Documentation. (on-line reference)
  25. 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.
  26. D. Garlan and A. J. Kompanek – Carnegie Melon University. Reconciling the needs of Architectural Description with Object-Modeling Notations. 3rd International Conference on The Unified Modeling Language (UML 2000),
  27. N. Medvidovic et al. Modeling Software Architectures in the Unified Modeling Language. ACM Transactions on Software Engineering and Methodology, 2002.
  28. D. Krieger and R.M. Adler. The Emergence of Distributed Component Platforms. IEEE Computer, March 1998.
  29. 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.
  30. S. Vinoski. CORBA: Integrating Diverse Applications Within Distributed Heterogeneous Environments. IEEE Communications Magazine, February 1997.
  31. Microsoft Corporation.  The Component Object Model: Technical Overview. (on-line reference
  32. Microsoft Corporation.  DCOM Technical Overview. (on-line reference)
  33. S. P. Reiss. Connecting Tools Using Message Passing in the Field Environment. IEEE Software, July 1990
  34. M. J. Maybee et al. Multilanguage Interoperability in Distributed Systems: Experience Report. 18th International Conference on Software Engineering, Berlin, Germany, March 1996.
  35. R. Natarajan and D. S. Rosenblum. Supporting Architectural Concerns in Component Interoperability Standards. IEE Proceedings – Software, December 2000. 
  36. Sun Microsystems, Inc.  Java Beans Specification. (on-line reference)
  37. Sun Microsystems, Inc. Enterprise Java Beans Specification. (on-line reference)


Schedule (Subject to change)

Week Date Lecture topic Readings
1 January 7

Software Architectures within the context of Software Engineering

  • Requirements engineering and software architecture
  • Software architecture and design
  • Software architectures impact on testing and analysis
  • Where the money is: software architectures and product evolution
-- January 9

Basic Definitions and Formalisms

  • Something old, something new: software architectures through the decades.
  • Difference from design.
  • Differences from patterns.
  • Components, Connectors, Constraints, Styles, and Rationale
  • Models, levels of abstractions
2 January 14

Describing Architectures

-- January 16  
3 January 21

Developing architectures

  • Product families and domain-specific software architectures
-- January 23  
4 January 28

Architectural styles

  • Why we care about styles: focused reasoning; guarantees through conformance; design methodology
    selection guidance
  • Primary styles
    “the classics”
-- January 30  
5 February 4


  • USC’s taxonomy
  • Event-based
  • Traditional middleware and architectures
-- February 6    
6 February 11

Moving from architectures to implementations

  • Programming language issues
  • Frameworks
-- February 13    
7 February 18

Formal description and analysis of architectures

  • Analyses (almost) uniquely enabled by architectures: architectural tradeoff analysis
  • Performance analysis
  • Analysis for architectural design faults
-- February 20    
8 February 25

Architecture-driven dynamism and evolution

  • Types of change.
  • An encompassing methodology/framework
  • Change and configuration management
-- February 27    
9 March 4 Architecture-focused environments  
-- March 6 NO CLASS (GSAW)  
10 March 11 Architectures and Business Practices
Introducing software architectures into an organization
-- March 13    
Exams March    

Assignments and Assessment

This class is going to be a bit different from the usual 280. At this point my plan is that there will not be either a term paper or a term project. Rather I'm just going to ask you to submit weekly progress reports. The "progress" will be with respect to a whole set of items that will be discussed in class. Stay tuned.

Academic Dishonesty

Cheating in ICS 223 will be punished in accordance with University policy and ICS policy. Please familiarize yourself with those documents. Note that University policy states that faculty have the responsibility of "assigning an appropriate grade to a student who engages in academic dishonesty." That appropriate grade, for this class, is an F. Cheating is wrong. It is lying. Don't do it.
Department of Information and Computer Science,
University of California, Irvine CA 92697-3425