1. COMPUTER ENGINEERING DEPARTMENT
Course: CMPE 296G
Course Title: Software Architectures
Semester: Spring 2005
Course Catalog Description
Provides in depth the concepts, principals, methods, and best practices in software architectures;
emphasizes on team projects to architect domain-specific architectures, service-oriented
architectures, product-line architectures, adaptive and generative architectures. Prerequisites:
CmpE202, 3 units
Prerequisites:CmpE202 (System Engineering), or instructor’s permission -- It is desirable the
students have sound programming skills in C++ or Java and a sound first level exposure to data
structures. Clear understanding of the concept of object oriented programming would help.
Familiarity with C++ or Java is helpful but not mandatory. Students with excellent aptitude in the
course but with little prior exposure to prerequisites may also take the course but they will have to
put in substantial extra effort during the first one month or so.
Must likely are a group of papers and/or one of the following books:
1. C. Hofmeister, R. Nord, D. Sonic. Applied Software Architecture. Addison-Wesley Object
Technology Series, Addison-Wesley, October 1999, ISBN# 0201325713
2. Len Bass, Paul Clements & Rick Kazman; Software Architecture in Practice, 2nd edition,
3. Paul Clements, et.al., Evaluating Software Architectures: Methods and Case Studies ,
Addison Wesley, 2002
1. M. Fayad, D. Schmidt & R. Johnson. Implementing Application Frameworks: Object-Oriented
Frameworks at Work, New York: John Wiley & Sons, September 1999, ISBN# 0-471-15012-1
2. M. Fayad and R. Johnson. Domain-Specific Application Frameworks: Experience by
Industry, New York: John Wiley & Sons, October 1999 with a C.D.
3. B. Tekinerdogan. Synthesis-Based Software Architecture Design, Ph.D. Thesis, University
of Twente, 2000
4. M. Johnson, R. Baxter, and T. Dahl. SanFrancisco Life Cycle Programming Techniques,
Addison-Wesley, 2000 with a CD.
1 of 8
2. COMPUTER ENGINEERING DEPARTMENT
5. P. Monday, J. Carey, and M. Dangler SanFrancisco Component Framework: An
Introduction, Addison-Wesley, 2000 with a CD.
6. M. Shaw and D. Garlan, Software Architecture-Perspectives on an Emerging Discipline,
Prentice-Hall, Upper Saddle River, New Jersey, 1996.
Please note: More articles will be provided in the 16 weeks schedule below.
Student Learning Objectives:
By the end of the course, you should:
1. Have an ability to apply knowledge of several software architectures, such as product line
architectures, service-oriented architectures
2. Have an ability to document effectively software architectures.
3. Have an ability to use the principles, methods, techniques, and skills of architecting any
4. Be capable of becoming a talented “software architects” with superior competence in
building robust and adaptive software systems in extremely effective way.
The OBJECTIVE of the course is to provide a sound technical exposure to the concepts, principles,
methods, and best practices in software architecture and software design. The VISION of the
course is to produce "software architects" with sound knowledge and superior competence in
building robust, scalable, and reliable software intensive systems in an extremely effective way.
They would have a clear appreciation of the role of abstraction, modeling, architecture, and design
patterns in the development of a software product. They would be able to make optimal
architectural choices and employ the most relevant methods, best practices, and technologies for
architecting and implementing a software product, regardless of its complexity and scale.
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). Homework
assignments and an exam will be given to assess your understanding of important concepts,
2 of 8
3. COMPUTER ENGINEERING DEPARTMENT
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 practice and research.
This course will treat the following topics in depth:
1. Software Architectures
Architecture-based software engineering research has yielded an impressive array of technologies and
demonstrations over the past decade. Using an architecture-based approach, applications have been built
- Are understandable
- Are expected to evolve
- Exhibit remarkable flexibility
- Demonstrate significant reuse of off-the-shelf components
- Leverage experience from related applications in the same problem domain
- Are analyzable earlier in their development than ever before
- Are key milestones in software managerial and development processes.
Currently, there is relatively little guidance for software developers on how to develop software
architectures. This course addresses several topics crucial to the state of the art and practice of software
architecture. The course presents a complete reference on how to develop a good software architecture and
provides guidelines for resolving key software architecture issues, such as evolving software architectures,
leveraging existing investment in software architecture artifacts, representing architecture description
languages, introducing formal models for software architectures, addressing architectural analysis
techniques & development methods, transitioning from software architecture to coding and surveying
architectural design tools and environments.
In addition, the course will include sections on: accessing of software architectures, testing and validating
software architectures, improving software architecture quality, documenting software architectures, and
2. Product-Line Architectures (PLAs)
Software product lines are emerging as a new and important software development paradigm. A Product-
Line Architecture (PLA) is a design for a family of related applications, and its motivation is to simplify the
design and maintenance of program families and to address the needs of highly customizable applications in
an economical manner. Companies are realizing that the practice of building sets of related systems from
common assets can yield remarkable improvements in productivity, time to market, product quality and
customer satisfaction. But these gains are only a part of the picture; organizational, technical and
management issues are other factors that should be considered. Although there are encouraging research
experiences with PLAs and some guidelines exist to help in the development process, some issues about
component-based development in PLAs are still under study. The goal of this course is to examine the
foundational concepts underlying product lines and address the essential activities developers should
consider to apply a PLA to a number of lines of products.
3. Service-Oriented Architectures (SOAs)
3 of 8
4. COMPUTER ENGINEERING DEPARTMENT
A service-oriented architecture is essentially a collection of services. These services communicate
with each other. The communication can involve either simple data passing or it could involve two
or more services coordinating some activity. Some means of connecting services to each other is
Service-oriented architectures are not a new thing. The first service-oriented architecture for many
people in the past was with the use DCOM or Object Request Brokers (ORBs) based on the
CORBA specification. For more on DCOM and CORBA
In first half of the semester I will cover the basic topics in the more traditional lecture format. There will be
four structured exercises and a midterm test devoted to this part. The instructor, visitors, and students will
jointly present some of the advanced topics in the second half. Students will work on a project of their
choice during this period and submit a paper-length report (about 30 double-spaced pages including figures
and references) by the last day of classes. Project presentations will be scheduled during the last and the
Final Take Home 30%
Project (Team Reports): 40%
Short Esay: 10%
Schedule (Subject to Change)
Week Lecture Topic Readings
W1 • Overview of
• F. P. Brooks, Jr. No Silver Bullet: Essence and Accidents of
Software Engineering. IEEE Computer, April 1987.
• F. DeRemer and H. H. Kron. Programming-in-the-Large
• Origins of
versus Programming-in-the-Small. IEEE Transactions on
W2 Software Engineering, June 1976.
• B. W. Boehm and W. L. Scherlis. Megaprogramming.
Software Technology Conference 1992, Los Angeles, April
W3 • Introduction • Chapter 1
4 of 8
5. COMPUTER ENGINEERING DEPARTMENT
architectures • D. E. Perry and A. L. Wolf. Foundations for the Study of
Software Architectures. ACM SIGSOFT Software
Engineering Notes, October 1992.
• Scope of • Chapter 3
architectures • 2nd International Software Architecture Workshop (ISAW-2)
• Chapter 5
• T. Korson and J.D. McGregor. Understanding Object-
Oriented: A Unifying Paradigm. Communications of the
• Arriving at an
ACM, September 1990
• P. Kruchten. Mommy, Where Do Software Architectures
Come from? 1st International Workshop on Architectures for
Software Systems, Seattle, WA, 1995.
specific • W. Tracz. DSSA (Domain-Specific Software Architecture)
software Pedagogical Example. ACM SIGSOFT Software Engineering
architectures Notes, July 1995.
• Chapter 2
• Architectural • Chapter 8: Section 8.2
• M.Shaw. Comparing Architectural Design Styles. IEEE
Software, November 1995.
• D. Batory and S. O'Malley. The Design and Implementation
of Hierarchical Software Systems with Reusable
• Examples of
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.
W6 Discussion & Project Requirements, Sample Projects
W7 • Software • M.Shaw. Procedure Calls are the Assembly Language of
connectors Software Interconnections: Connectors Deserve First-Class
Status. Workshop on Studies of Software Design, 1993.
5 of 8
6. COMPUTER ENGINEERING DEPARTMENT
• 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.
• Addendum: Specification of the C2SADEL Architecture
W7 Description Language
• McGregor, John D.; Northrop, Linda M.; Jarrad, Salah; &
Pohl, Klaus. "Initiating Software Product Lines." IEEE Software
19, 4 (July/August 2002): 24-27.
• Clements, P. & Krueger, C. Two-part Point/Counterpoint column:
"Being Proactive Pays Off" and "Eliminating the Adoption Barrier."
• Product-Line IEEE Software 19, 4 (July/August 2002): 28-31.
W8 Architectures • Northrop, Linda M. "SEI's Software Product Line Tenets." IEEE
(PLA) Software 19, 4 (July/August 2002): 32-40.
• Kang, Kyo C.; Lee, Jaejoon; & Donohoe, Patrick. "Feature-
Oriented Product Line Engineering." IEEE Software 19, 4
(July/August 2002): 58-65.
Jean-Jacques Dubray "Constructing Software for
Service Oriented Architecture"
• Jean-Jacques Dubray "Standards for a Service Oriented
Architecture", ebXMLForum.org, November 2003
• Architecture • N. Medvidovic and R. N. Taylor. A Framework for
description Classifying and Comparing Architecture Description
languages Languages. 6th European Software Engineering Conference
(ADLs) with the 5th ACM SIGSOFT Symposium on the Foundations of
Software Engineering, Zurich, Switzerland, September 1997.
• 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.
W11 • Dynamism in • J. Magee and J. Kramer. Dynamic Structure in Software
6 of 8
7. COMPUTER ENGINEERING DEPARTMENT
Architectures. 4th ACM SIGSOFT Symposium on the
Foundations of Software Engineering, San Francisco, CA,
software October 1996.
• P. Oreizy et al. Architecture-Based Runtime Software
Evolution. 20th International Conference on Software
Engineering, Kyoto, Japan, April 1998.
• M. Moriconi et al. Correct Architecture Refinement. IEEE
Transactions on Software Engineering, April 1995.
W12 • C. Gacek and B. W. Boehm. Composing Components: How
Does One Detect Potential Architectural Mismatches?
Workshop on Compositional Software Architectures,
Monterey, CA, January 1998. (html)
• J. E. Robbins et al. Integrating Architecture Description
Languages with a Standard Design Method. 20th
• Role of UML
International Conference on Software Engineering, Kyoto,
W13 Japan, April 1998.
• Rose/Architect: A Tool to Visualize Architecture. Hawaii
Interntaional Conference on System Sciences, January 1999.
• Role of UML
W14 in software More articles will be listed
• D. Krieger and R.M. Adler. The Emergence of Distributed
Component Platforms. IEEE Computer, March 1998.
W15 • 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.
• Middleware - • S. Vinoski. CORBA: Integrating Diverse Applications
W15 CORBA Within Distributed Heterogeneous Environments. IEEE
Communications Magazine, February 1997.
• R. Natarajan and D. S. Rosenblum. Merging Component
• Middleware - Models and Architectural Styles. Third International
W16 JavaBeans Software Architecture Workshop, Nov. 1998.
• Sun Microsystems, Inc. Java Beans 1.01 Specification.
W16 • Summary and • N. Medvidovic and D. S. Rosenblum. Domains of Concern in
review Software Architectures and Architecture Description
Languages. USENIX Conference on Domain-Specific
• Final project Languages, Santa Barbara, CA, October 1997.
7 of 8
8. COMPUTER ENGINEERING DEPARTMENT
8 of 8