"Babes-Bolyai" University of Cluj-Napoca
Faculty of Mathematics and Computer Science

Software architectures
Code
Semes-
ter
Hours: C+S+L
Credits
Type
Section
MI099
8
2+0+2
10
optional
Informatică
Teaching Staff in Charge
Prof. PÂRV Bazil, Ph.D.,  bparvcs.ubbcluj.ro
Aims
The course introduces core concepts and principles of software architecture, focusing on software architecture definition(s), architectural styles and models, architecture definition languages, and tool support for architectural design. All theoretical concepts are introduced by case studies, taken from real applications.
Content
1. Introduction
1.1. Definitions
1.2. Early work on software architecture
2. From Programming Languages to Software Architecture
2.1. High-level Programming Languages
2.2. Abstract Data Types
2.3. Software Architecture
3. Common Architectural Styles
3.1. Pipes and Filters
3.2. Data Abstraction and Object-Oriented Organization
3.3. Event-based, Implicit Invocation
3.4. Layered Systems
3.5. Repositories
3.6. Table Driven Interpreters
3.7. Other Familiar Architectures
3.8. Heterogeneous Architectures
4. Case Studies
4.1. Case Study 1: Key Word in Context
4.2. Case Study 2: Instrumentation Software
4.3. Case Study 3: A Fresh View of Compilers
4.4. Case Study 4: A Layered Design with Different Styles for the Layers
4.5. Case Study 5: An Interpreter Using Different Idioms for the Components
4.6. Case Study 6: A Blackboard Globally Recast as Interpreter
5. Architectural models and elements
5.1. Model elements and types
5.2. Early models
5.3. The 4+1 View Model
5.4. Elements of software architecture: components, connectors, patterns, configurations
6. Architectural notations
6.1. Informal diagrams
6.2. Module interconnection languages
6.3. SGL (Software Glue Language)
6.4. ADL (Architecture Description Language)
6.5. Modeling/Specification Languages (UML, ModeChart)

Lab activities

At least two design solutions for the problems introduced in the course lectures, using different architectural styles. Every design solution will be implemented in at least two different programming languages (Java, C#, Visual Basic 6.0, Visual Basic .NET).
References
1. FUSSELL, MARK L.: A Good Architecture for Object-Oriented Information Systems. Structures, Designs, and Patterns, OOPSLA'96 Tutorial 23, [http://www.chimu.com/ publications/oopsla96tutorial23/oopsla96tutorial23.pdf].
2. KRUCHTEN, PHILIPPE: Architectural Blueprints - The 4+1 View Model of Software Architecture, IEEE Software 12 (6), 1995, pp. 42-50.
3. MOWBRAY, THOMAS J. - MALVEAU, RAPHAEL: Software Architect Bootcamp, Prentice Hall, (1st ed., 2000, 2nd ed., 2003).
4. SHAW, MARY: The Coming-of-Age of Software Architecture Research, in Proc. of the 23rd ICSE, IEEE Comp. Soc. 2001, 656, [http://www.cs.cmu.edu/afs/cs.cmu.edu/project/vit/ ftp/pdf/shaw-keynote-rev.pdf]
5. SHAW, MARY - GARLAN, DAVID: Software Architecture: Perspectives on an Emerging Discipline, Prentice-Hall, 1996.
6. Software Architecture Resources, [http://www.bredemeyer.com/papers.htm ]
Assessment
The final mark covers lab activity and written exam. It is computed as follows, on a 10-point scale:
1pt by default
1pt lab attendance
4pt lab activity (homework, implementation issues, schedule conformance etc.)
4pt written exam - scheduled in the last week of the term.