|
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
- 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)
- 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
- D. E. Perry,
A. L. Wolf: Software
Architecture, 1989
- 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
- Robert
Allen, David Garlan:
Formalizing Architectural Connection. Proceedings of the
Sixteenth International Conference on Software Engineering,
1994
- 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.
- 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
- 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.
- 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
- 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
- B. Selic, J.
Rumbaugh: Using UML for
Modeling Complex Real-Time Systems, Rational Whitepaper,
1998
- 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
- OMG:
Corba
Basics, online tutorial, 2001
- R.
Orfali, D. Harkey: Client/Server Programming with JAVA and
CORBA, John Wiley, 1997
- 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
- 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.
- 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.
- M. Moriconi, X. Qian, R. A.
Riemenschneider: Correct
Architecture Refinement. IEEE Transactions on Software
Engineering, Volume 21, Number 4, 1995.
- J. Magee, J. Kramer, D.
Giannakopoulou: Behaviour
Analysis of Software Architectures. In: Proc. of First
Working IFIP Conference on Software Architecture (WICSA1),
1999.
- 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
|
|