CSE218: Advanced Topics in Software Engineering

Software Architectures for Distributed and Reactive Systems

Winter 2007

Welcome to "CSE 218: Advanced Topics in Software Engineering - Software Architectures for Distributed and Reactive Systems". You are in the right place if you want to understand better what the challenges and driving forces in constructing large software systems are, and how to develop and document software architectures without making a mess of it".

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 particular, 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, and Enterprise Service Bus (ESB).

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: 580156
Time: 5pm - 6:20pm
Date: Monday and Wednesday
Location: CENTR 205
Instructor: Ingolf Krueger
Office Hours: Monday 3:30pm-4:30pm (before class) in CSE 3120

Tentative Schedule of Topics

date item due Topic Materials Readings
January 8

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

Project discussion.

Handout #1
Slide Set #1
10 Software Architecture, Design Patterns and Refactoring - An Overview (Part II) Slide Set #2
B1: Ch. 1 & 2,

Texts:
#1, #2, #4

15 NO CLASS!
17 Software Architecture, Design Patterns and Refactoring - An Overview (Part III)

HW #1


Slide Set #3
B1: Ch. 4, 5, 9, Texts:
#6, #8
22 Software Architecture, Design Patterns and Refactoring - An Overview (Part III - continued)

Distributed and Reactive Systems: Challenges for Software Architecture Development

Project discussion - Team formation.

Slide Set #4

24 Project Proposal,

Topic Selection for Paper Summaries

Architectural Description Techniques: Formal and Semi-Formal Approaches Slide Set #5
29 HW #1 Specifying Objects and Components using the Unified Modeling Language (UML)

Domain Modeling

Components and Services
Slide Set #6 B1: Ch. 7, 9
31 B2: Ch. 1, 2, 3
February 5 Slide Set #7 B2: Ch. 4, 5
7 HW #2

Slide Set #8
12 B2: Ch. 6, 12
14 Slide Set #9
Slide Set #10
19 NO CLASS!
21 Project Progress Report
HW #2
Specifying Component- and Service-Oriented Software Architectures using UML-RT/UML 2.0 HW #3

Slide Set #11
26 Patterns for Composition and Decoupling:
Adapter, Decorator, Proxy, Observer, MVC


Pattern Languages and Software Architectures:
An Example
Slide Set #12
28
March 5 Implementation Infrastructures for Software Architectures (CORBA, .NET/Web Services, Messaging, ESB) B2: Ch. 8, 9, 10
7
12 HW #3 Formal Foundations of Software Architectures: Formal Methods and their Applications B2: Ch. 13 -16
14 Research Paper Summaries Evaluating Software Architectures:
Stakeholders, Metrics, Development Processes, Migration Strategies
19-24 Final Project Report Project Presentations

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, research paper summaries, and homework assignments. Project teamwork consists of 2-4 students working together on the specification and design of a software architecture. This involves writing a project proposal, project progress report (max. 5 pages), and a final project report (max. 20 pages) as a team effort. Classroom participation will include making at least one 10-20 minute overview presentation of a topic relevant to class. 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 (50% of the evaluation stems from my assessment, 50% from your teammates)

Project

Work on the project is an important, integral part of this class; you will have an opportunity to identify, specify, design, document and implement important architectural aspects of a concrete software system.

You will select both your own team members (contact me if you need help) and your own example system/system class for which you are developing the architecture.

Your task is to identify the central product requirements (what should the system do), to develop and document an architecture for the system (what are the fundamental system components and their relationships), to investigate adequate implementation infrastructures on which the system could be built, and to build a prototype of the system. One key requirement is that your architecture must involve an Enterprise Service Bus (ESB).Our focus is on architecture; implementation, while required, is of secondary importance.Our focus is on architecture; implementation, while required, is of secondary importance. Project proposals, project progress reports and final project reports (including a final project presentation in form of PPT slides) are due on January 24, 2007, February 21, 2007, and during finals week (March 19-24, 2007), respectively.

Project teams are welcome to meet with me for discussion sessions.

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 ymposium 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 / Components
  1. Robert Allen, David Garlan: Formalizing Architectural Connection. Proceedings of the Sixteenth International Conference on Software Engineering, 1994
  2. 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.
  3. 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
  4. 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.
  5. 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
  6. 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 Universitaet Muenchen, 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 Universitaet Muenchen, 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 09, 2007, by Ingolf Krueger