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:

  1. 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.
  2. 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).
  3. 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.
  4. 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).
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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%