CSE218 Winter 2005
Home Up Projects Publications Links

 

Up
CSE291 Spring 2005
CSE218 Winter 2005
CSE291 Spring 2004
CSE218 Winter 2004
CSE218 Winter 2003
CSE 290

CSE 218: Advanced Topics in Software Engineering

Software Architectures for Distributed and Reactive Systems

Winter 2005

 

Overview

The selection of a robust, sustainable software-architecture is a key factor for success in the development of large, long-lived, or safety-critical software-systems. While this is generally acknowledged, there is much less agreement in the literature on what the important quality attributes of architectures are, how to represent them, and how to systematically construct and modify architectures.

In this course we will take a closer look at description techniques, formal foundations and methodologies for analyzing and constructing software architectures. We will also consider current infrastructures and middleware technologies for implementing software architectures, such as .NET, JINI, and CORBA.

Student teams will turn theory into practice by actively creating software architectures for exciting applications based on wireless, distributed, or ad-hoc networking systems.

After taking this course, students will be able to specify, design, deploy, and evaluate software architectures, and will thus be able to make informed decisions in building complex distributed software systems in their future careers.

General Information

Section Id: 518444
Time: 12:30pm - 1:50pm
Date: Tuesday and Thursday
Location: SEQUO 147
Instructor: Ingolf Krueger
Office Hours: Tuesday 2pm-3pm (after class) in APM 5101

Tentative Schedule of Topics

 date item due Topic Materials   Readings
January 4  

 
Software Architecture, Design Patterns and Refactoring An Overview (Part I)

Project discussion.

Handout #1,
Slide Set #1
   
6   Software Architecture, Design Patterns and Refactoring An Overview (Part II)

Project discussion (continued); Team formation.

Slide Set #2   B1: Ch. 1
11   Software Architecture, Design Patterns and Refactoring An Overview (Part III) HW #1,


Slide Set #3

 

 

B1: Ch. 2,

Texts:
 #1, #2, #4

13  

Distributed and Reactive Systems: Challenges for Software Architecture Development

Architectural Description Techniques: Formal and Semi-Formal Approaches

Slide Set #4

Slide Set #5

  B1: Ch. 4, 5, 9,

Texts:
#6, #8

18  
20 HW #1 Specifying Objects and Components using the Unified Modeling Language (UML)

Domain Modeling

Components and Services

Slide Set #6

Slide Set #7

Slide Set #8

HW #2

Slide Set #9

Slide Set #10

HW #3

 

 

 

 

 

 

 

B1: Ch. 7, 9

B2: Ch. 1, 2, 3

B2: Ch. 4, 5

B2: Ch. 6, 12

25  
27  
February 1  
3 Project Progress Report
8  
10  
15  
17 HW #2
22   Specifying Component- and Service-Oriented Software Architectures using UML-RT/UML 2.0 Slide Set #11    
24   Patterns for Composition and Decoupling:
Adapter, Decorator, Proxy, Observer,  MVC

Pattern Languages and Software Architectures:
An Example

Slide Set #12      
March 1    
3 HW #3 Implementation Infrastructures for  Software Architectures
(CORBA,  .NET/Web Services, Messaging)
Slide Set #13 B2: Ch. 8, 9, 10
8  
10   Formal Foundations of Software Architectures: Formal Methods and their Applications

Evaluating Software Architectures:
Stakeholders,  Metrics, Development Processes, Migration Strategies

    B2: Ch. 13, 14
16 Final Project Report Project Presentations     B2: Ch. 15, 16

Grading

There will be no final exam. The grade will be determined based on individual achievements and teamwork. Individual achievements are participation in classroom discussion, and three homework assignments. Project teamwork consists  of 3-5 students working together on the specification and design of a software architecture . This involves writing a project progress report (max. 5 pages), and a final project report (max. 20 pages) as a team effort. The details regarding the project will be discussed during the first class meeting. Individual achievements and teamwork contribute as follows to the overall grade:

    35% Homework
    15% Classroom participation
    50% Project

Literature

required:

B1 Len Bass, Paul Clements, Rick Kazman: Software Architecture in Practice. Second Edition. SEI Series in Software Engineering, Addison-Wesley, 2003
B2 Eric Evans: Domain-Driven Design: Tackling Complexity in the Heart of Software, Addison-Wesley, 2003

recommended:

Bernd Bruegge, Alan Dutoit: Object-Oriented Software Engineering: Using UML, Patterns and Java, 2nd Edition. Prentice Hall, 2003

Paul Clements, Rick Kazman, Mark Klein: Evaluating Software Architectures. Methods and Case Studies, SEI Series in Software Engineering, Addison-Wesley, 2002

Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad and Michael Stal, Pattern-Oriented Software Architecture A System of Patterns, John Wiley & Sons, 1996.

Luke Hohmann: Beyond Software Architecture, Addison-Wesley, 2003

 

Further Reading

Additional texts, from which topics presented in class will be drawn, include:

Classics
  1. Edsger W. Dijkstra: The Structure of the "THE"-Multiprogramming System. EWD196, in J. Gosden, B. Randell (eds.): Proceedings of the ACM Symposium on Operating System Principles, 1967 (appeared also under the title "The structure of the “THE”-multiprogramming system"  in CACM Volume 11, Issue 5, May 1968)
  2. D. L. Parnas: On the Criteria To Be Used in Decomposing Systems into Modules. Communications of the ACM, Vol. 15, No. 12, pp. 1053 - 1058, 1972
  3. D. E. Perry, A. L. Wolf:  Software Architecture, 1989
  4. D. E. Perry, A. L. Wolf: Foundations for the Study of Software Architecture. ACM SIGSOFT Software Engineering Notes, Volume 17, Number 4, 1992.
Architectural Description Languages / Connectors
  1. N. Medvidovic, R. N. Taylor: A Framework for Classifying and Comparing Architecture Description Languages. In: Proceedings of the 6th European conference held jointly with the 5th ACM SIGSOFT, Springer, 1997.
  2. P. Oreizy, M. M. Gorlick, R. N. Taylor, D. Heimbigner, G. Johnson, N. Medvidovic, A. Quilici, D. S. Rosenblum, A. L. Wolf: An Architecture-Based Approach to Self-Adaptive Software. IEEE Intelligent Systems, vol. 14, no. 3, pages 54-62, 1999
  3. N. R. Mehta, N. Medvidovic, S. Phadke: Towards a Taxonomy of Software Connectors. In: Proc. of 22nd International Conference on Software Engineering (ICSE), ACM Press, 2000.
  4. B. Spitznagel, D. Garlan: A Compositional Approach for Constructing Connectors. In Proc. of the Working IEEE/IFIP Conference on Software Architecture (WICSA'01), Royal Netherlands Academy of Arts and Sciences, 2001
  5. I. H. Krüger, R. Mathew: Systematic Development and Exploration of Service-Oriented Software Architectures. Proceedings of the 4th Working IEEE/IFIP Conference on Software Architecture (WICSA 2004), 2004.
Development of Component-Oriented Architectures with UML and UML-RT
  1. B. Selic, J. Rumbaugh: Using UML for Modeling Complex Real-Time Systems, Rational Whitepaper, 1998
  2. I. Krüger, W. Prenninger, R. Sandner: From Scenarios to Hierarchical Broadcasting Software Architectures using UML-RT, International Journal of Software Engineering and Knowledge Engineering (IJSEKE), Vol. 12, No. 2, pp. 155-174, 2002.
Middleware Technologies
  1. OMG: Corba Basics, online tutorial, 2001
  2. R. Orfali, D. Harkey: Client/Server Programming with JAVA and CORBA, John Wiley, 1997
  3. A. Corsaro and D. C. Schmidt:  Evaluating Real-Time Java Features and Performance for Real-time Embedded Systems. Submitted to the 8th IEEE Real-Time Technology and Applications Symposium, San Jose, CA, September 2002.
Foundations
  1. M. Broy: Semantic Concepts for Software Architectures. In: M. Broy, E. Denert, K. Renzel, and M. Schmidt, editors: Software Architectures and Design Patterns in Business Applications. Technische Universität München, TUM-I9746, 1997.
  2. J. Philipps, B. Rumpe: Stepwise Refinement of Data Flow Architectures. In: M. Broy, E. Denert, K. Renzel, and M. Schmidt, editors: Software Architectures and Design Patterns in Business Applications. Technische Universität München, TUM-I9746, 1997.
  3. M. Moriconi, X. Qian, R. A. Riemenschneider: Correct Architecture Refinement. IEEE Transactions on Software Engineering, Volume 21, Number 4, 1995.
  4. J. Magee, J. Kramer, D. Giannakopoulou: Behaviour Analysis of Software Architectures. In: Proc. of First Working IFIP Conference on Software Architecture (WICSA1), 1999.
  5. J. Goguen: Parameterized Programming and Software Architecture. In Proceedings, Fourth International Conference on Software Reuse, IEEE Computer Society, April 1996

Initial version: January 03, 2005, by Ingolf Krueger