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
)
WHAT'S NEW?
[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: http://www.isr.uci.edu/projects/swarch/.
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
|
Instructor
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).
Textbooks
A variety of textbooks are available, including
- Mary Shaw and David Garlan, Software Architecture: Perspectives on an Emerging
Discipline, Prentice-Hall, 1996.
- Paul Clements, et al., Documenting Software Architectures: Views and Beyond,
Addison-Wesley, 2002.
- Software Architecture: System Design, Development and Maintenance. Edited
by Jan Bosch, Morven Gentelman, Christine Hofmeister, Juha Kuusela.. Kluwer
Academic Publishers. www.wkap.nl
...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.
- D. E. Perry and A. L. Wolf. Foundations
for the Study of Software Architectures. ACM SIGSOFT Software Engineering
Notes, October 1992.
- R. Kazman. Distributed Flight Simulation: A Challenge for Software Architecture.
Technical Report, University of Waterloo.
- P. Kruchten. The Software Architect – and the Software Architecture
Team. 1st Working IFIP Conference on Software Architectures,
San Antonio, TX, February 1999.
- D. L. Parnas. On the Criteria To Be Used in Decomposing Systems into
Modules. Communications of the ACM, December 1972.
- T. Korson and J.D. McGregor. Understanding Object-Oriented: A Unifying
Paradigm. Communications of the ACM, September 1990.
- P. Kruchten. Mommy, Where Do Software Architectures Come from? 1st
International Workshop on Architectures for Software Systems, Seattle,
WA, April 1995.
- N. Medvidovic and R. N. Taylor. A
Classification and Comparison Framework for Software Architecture Description
Languages. IEEE Transactions on Software Engineering, January
2000.
- 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.
- W. Tracz. DSSA (Domain-Specific Software Architecture) Pedagogical Example.
ACM SIGSOFT Software Engineering Notes, July 1995.
- 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.
- R. T. Fielding. Software Architectural Styles for Network-based Applications.
Unpublished manuscript, June 1999.
- 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.
- 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.
- R. N. Taylor et al. A Component- and Message-Based Architectural Style
for GUI Software. IEEE Transactions on Software Engineering, June
1996.
- 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.
- N. R. Mehta et al. Towards a Taxonomy of Software Connectors. 22nd
International Conference on Software Engineering, Limerick, Ireland, June
2000.
- 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.
- 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.
- 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.
- D. Garlan et al. Architectural Mismatch: Why Reuse Is so Hard. IEEE
Software, November 1995.
- C. Gacek and B. W. Boehm. Composing Components: How Does One Detect Potential
Architectural Mismatches? Workshop on Compositional Software Architectures,
Monterey, CA, January 1998.
- UML Documentation. (on-line
reference)
- 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.
- 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),
- N. Medvidovic et al. Modeling Software Architectures in the Unified Modeling
Language. ACM Transactions on Software Engineering and Methodology,
2002.
- D. Krieger and R.M. Adler. The Emergence of Distributed Component Platforms.
IEEE Computer, March 1998.
- 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.
- S. Vinoski. CORBA: Integrating Diverse Applications Within Distributed
Heterogeneous Environments. IEEE Communications Magazine, February
1997.
- Microsoft Corporation. The Component Object Model: Technical Overview.
(on-line
reference)
- Microsoft Corporation. DCOM Technical Overview. (on-line reference)
- S. P. Reiss. Connecting Tools Using Message Passing in the Field Environment.
IEEE Software, July 1990
- M. J. Maybee et al. Multilanguage Interoperability in Distributed Systems:
Experience Report. 18th International Conference on Software
Engineering, Berlin, Germany, March 1996.
- R. Natarajan and D. S. Rosenblum. Supporting Architectural Concerns in
Component Interoperability Standards. IEE Proceedings – Software,
December 2000.
- Sun Microsystems, Inc. Java Beans Specification. (on-line reference)
- 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”
C2
REST
DECENT
|
|
--
| January 30
|
|
5
| February 4
| Connectors
- 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