CIS 602-01 Special Topics in
Computer Science: Software Architecture.
Course Description
Homework Assignments
Lecture Notes
Projects
Exams
Instructor: Dr. Boleslaw Mikolajczak
Prerequisite: Graduate Standing
Time: Spring 2005; T, Th 6.30 - 7.45 pm, Dion 101
Office hours: Tu, Th 9.00 am -10.00 am in Dion 302F
Fr. 9.00-11.00 am in Dion 302F
bmikolajczak@umassd.edu
phone: (508)-999-8350
fax: (508)-999-9144
Textbook: “Software Architectures in Practice” by Len Bass,
Paul Clements, and Rick
Kazman, Addison Wesley, Second Edition
Course Contents by Topic:
- INTRODUCTION TO SOFTWARE ARCHITECTURES
Architectural Business Cycle (ABC): organizational goals and capabilities, requirements,
architecture, systems. Classification of quality attributes: observable via execution
(behavioral
requirements, required results, timely manner, correctness,
stability of results) and non-observable
via execution (system’s integration,
testing, and modification, cost of development, time to market).
Software Architectures (SA) support for quality attributes.
Taxonomy of SA vs. design goals.
- COMMON ARCHITECTURAL STYLES
Components and Connectors of SA. Instance vs. Styles,
Design Methods vs. Software
Architectures. Importance of SA: understanding of large systems,
reuse at multiple levels, reuse of
components, evolution (to estimate cost of modification,
concerns on performance, analysis methods,
management).
- PIPES AND FILTERS ARCHITECTURAL STYLE
General characteristics of Pipes and Filters architectural style. GRAIL as an example of Pipes and
Filters. Role of domain specific knowledge. GRAIL’s objectives: modularity, clarity, extendability,
maintainability, and robustness. Implemented in C++ with stricter type
checking, robust, modular.
Review of parametrizable classes. Two types of support classes:
container classes (set, list, string),
state, inst, subexp classes. Use of
any command shell language.
- DISTRIBUTED SYSTEMS AS ARCHITECTURAL STYLE
Specification of distributed systems. Representation of conflict, nondeterminism,
and concurrency.
Business process modeling by means of Petri nets.
Resolution of conflict for resources in Petri nets.
Representation of
data types and actions. Representation of time in Petri nets. Concept of a global state.
Reachability graph. Transitions with logical and timed guards.
Pre-conditions (pre-places) and post-
conditions (post-places).
- ARCHITECTURAL STYLES REVISITED
Features defining architectural software style: component types,
topological layout, semantic
constraints, connectors. Characterization
of architectural styles from perspective of their support for
different
system qualities. Architectural styles: data-centered architectures (scalability,
integrability), data-
flow architectures (maintenance, reuse, modifiability),
virtual machine architecture (portability), call-and-
return architecture
(modifiability, scalability, performance), layered architecture
(quality of modifiability,
portability, ease of system parametrization),
independent component architectures (publish/subscribe
paradigm, event systems,
communicating processes), heterogeneous styles.
- COORDINATION LANGUAGES – LINDA
Syntactic and semantic details of coordination primitives in LINDA C: handling
data and process
tuples with multidimensional arrays, and structs. LINDA C
implementation of a database search using
Master-Slave programming paradigm.
Watermarking applied to database search as a technique to keep
tuple space
evenly populated. Examples of coordination in LINDA C: matrix multiplication
with different
clustering techniques (row, column, block) and the dining philosopher problem.
- INHERITANCE ANOMALY IN DISTRIBUTED OBJECT-ORIENTED SYSTEMS
Definition of inheritance anomaly. Techniques to resolve inheritance
anomaly: by state
partitioning, by pre-conditions and post-actions,
by history sensitiveness. Examples illustrating inheritance
anomaly.
Formalization of inheritance anomaly.
- REPRESENTATION OF TIME AND COORDINATION OF COMPONENTS
Two forms of time representation: time as a timestamp attached to tokens
(data structures) and
time attached to transition (to represent delay and
duration of actions). Examples of time annotations.
Handling of data types
and resource sharing. Transaction processing and their modeling.
- FORMALIZATION OF SOFTWARE ARCHITECTURE WITH Z
Elements of the Z specification language. Notation and semantics. Box and dot
notation.
Hierarchy structure. Example of a filter and its formalization.
Filter, Filter_State, Filter_Compute.
Formalization of a pipe: Pipe, Pipe_State,
Pipe_Compute. Mathematical objects bear resemblance to
computational objects.
Formalization of the Pipe and Filter System: System, System_State,
System_Filter_Step, System_Pipe_Step, Complete_Computation. Formalization of a
Pipeline. Delta
schema.
- UNIT OPERATIONS vs. SYSTEM QUALITY FEATURES
Analysis of unit operations and their influence on systems quality features:
Separation, Part-Whole
Decomposition, Is-a Decomposition, Replication, Abstraction,
Compression, Resource Sharing.
How to achieve quality by changing the allocation of functionality to structure.
Engineering
principles – unit operations applied to architectural decisions.
The Seeheim model of HCI software. The
MVC model. Transformation of the Seeheim model
to the Arch/Slikny model. Transformation of the MVC
model into PAC model.
New HCI architectures.
- PERFORMANCE EVALUATION OF CLIENT-SERVER ARCHITECTURE
Introduction to Stochastic Petri Nets and Generalized Stochastic Petri Nets. Performance
evaluation by measurements, modeling, analytical solution, and simulation. Petri net
performance modeling
of various hardware/software architectures.
Modeling of a client, network, and server. Mean response time
and utilization ratio
as two performance measures. Computing performance metrics from Petri net
simulation of client-server architectures.
- SOFTWARE ARCHITECTURE ANALYSIS METHODS (SAAM)
Analysis of qualities with scenarios. Classifications of scenarios.
Activities in SAAM. Case
studies in SAAM: KWIC system, Financial
Management System, Revision-Control System.
Student Research Presentation #1
Thursday, March 10, 2005
Sandeep Ramanadham; 6.30-6.50 pm:
"Abstractions for Software Architecture and Tools to Support Them" - Shaw,
M. DeLine, R. Klein, D. V. Ross, T. L. Young D. M. Zelesnik, G., IEEE Transaction on
Software Engineering, April, 1995.
Dave Boose; 6.55-7.15 pm
“Behavior Protocols for Software Components”, F. Plasil, IEEE Transactions on
Software Engineering, vol. 28, No. 11, November 2002.
Terri MacEachern; 7.20-7.40 pm
“A Classification and Comparison Framework for Software Architecture Description”
Languages, N. Medvidovic, P., IEEE Transactions on Software Engineering, vol. 26, Jan.
2000, pp70-93.
Course Evaluation Procedures:
Homework assignments – 20%; Project assignments – 30%;
Oral Presentations – 15%; Midterm – 15%; Final – 20%