Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Masterat
Domeniul: Informatica
Programul de studii: Programare bazată pe componente - în limba engleză
Limba de predare: Engleză

SYLLABUS

I. General data
Code	Subject	
MID1010	Software Architecture	

Semester	Hours: C+S+L	Category	Status	
4	2+1+0	speciality	compulsory	

II. Full status faculty members
Name and	Scientific	Didactic	Chair	Type of activity	
surname	title	title		C	S	L	
PÂRV Bazil	Ph.D.	Prof.	Programming  Languages and Methods	*			

Associated faculty members
Name and	Scientific	Institution	Type of	Type of activity	
surname	title		position	C	S	L	

III. Course objectives
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 using case studies, taken from real applications.	

IV. Course contents
1. Introduction. From Programming Languages to Software Architecture 
2. Common Architectural Styles
3. Case Studies
4. Shared Information Systems
5. Client/Server Architectures
6. Architectural models and elements
7. Architectural notations	

V. Bibliography
1. BASS, L., CLEMENTS, P., KAZMAN R.: Software Architecture in Practice, 2nd ed., Addison-Wesley, 2003
2. KRUCHTEN, PH.: Architectural Blueprints – The 4+1 View Model of Software Architecture, IEEE Software 12 (6), 1995, pp. 42-50. 
3. MALVEAU, R., MOWBRAY, T.J.: Software Architect Bootcamp, Prentice Hall, (1st ed., 2000, 2nd ed., 2003).
4. SHAW, M.: 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, M., GARLAN, D.: Software Architecture: Perspectives on an Emerging Discipline, Prentice-Hall, 1996.	

VI. Thematic of didactic activities per weeks
Course lectures - 12 weeks
Week 1 1. Introduction. From Programming Languages to Software Architecture: definitions, early work, kigh-level programming languages, abstract data types
Week 2 2. Common architectural styles: pipes and filters, data abstraction and object-oriented organization, event-based (implicit Invocation), layered systems, repositories, table-driven interpreters, 
other architectures, heterogeneous architectures.
Week 3 3. Case studies: Key Word in Context, Instrumentation Software, Mobile Robots
Week 4 3. Case studies: Cruise Control, A Layered Design with Different Styles for Layers, An Interpreter Using Different Idioms for the Components, A Blackboard Globally Recast as Interpreter 
Week 5 4. Shared information systems: definitions, database integration, integration in software development environments, integration in the design of buildings, architectural structures.
Week 6 5. Client/server architectures: introduction, evolution - mainframe architecture, file sharing architecture, client-server architecture with examples, two-tier architectures (fat client, thin client)
Week 7 5. Client/server architectures: three (multi)-tier architectures - general issues, different approaches (with multiple transaction processing monitor, with message server, with application server)
Week 8 5. Client/server architectures: three (multi)-tier architectures with object request broker, distributed/collaborative enterprise architecture
Week 9 6. Architectural models and elements: definitions, model elements and types, traditional architectural notations, architecture description languages
Week 10 6. Architectural models and elements: 4+1 View Model (Kruchten), information systems architectures (Zachman framework, Data warehouse)
Week 11 7. Architectural notations: informal diagrams, module interconnection languages, SGL (Software Glue Language)
Week 12 7. Architectural notations: ADL (Architecture Description Language), modeling/specification languages (UML, ModeChart)

Seminars /labs- 1 hour/week, 6 seminars/labs of 2 hours each
Seminar 1 Survey of the sources of information available on Internet and Intranet; chosing the paper topic and scheduling the presentation.
Seminars 2-5 Presentations of papers

Students will be organized in teams of 3 to 5 members. Each team will solve a problem, and each team member will implement a different architectural style. 
Lab 1 Survey of the sources of information available on Internet and Intranet; team building, chosing the model problem, and initial planning of the project.
Lab 2 Project management phase (problem statement, requirements, team members,. architectural styles to be considered, preliminary schedule)
Labs 3 Analysis and design phase (analysis issues and general design decisions, detailed design for each considered style, project management issues)
Labs 4-5 Construction phase (implementation and testing issues)
Lab 6 Live demos (including source code, the comparison of different solutions, and the statement of individual contributions).

The course and seminar/lab materials are available on the Win server, in the folder 
\win\labor\Romana\Master\pbc251\SoftwareArch	

VII. Didactic methods used
The course is based on the following methods: exposure, conversation, didactical proof, modelling, and the discussion of some case studies and programming examples. Lectures are given in the form of Powerpoint presentations and live demos implemented in several programming languages.
Seminar/lab work consists of preparing and presenting a research paper on software architectures and working on a software project, both individual and team work. Each team member will design and implement a different solution for the model problem chosen by their team, answering to the same requirements and testing issues, as well as the same user interface and data model. The complete solutions will be compared with respect to the following issues: change in algorithms and data representation, change in function, performance, and degree of reuse.	

VIII. Assessment
The final mark will cover seminar/lab work (i.e. paper and project) and the written exam results. It is computed as follows, on a 10-point scale:
1pt by default
1pt lab attendance
2pts research paper
2pts software project
4pts written exam.	

IX. Additional references
1. FUSSELL, M.L.: A Good Architecture for Object-Oriented Information Systems, in Structures, Designs, and Patterns, OOPSLA'96 Tutorial 23, [http://www.chimu.com/ publications/oopsla96tutorial23/oopsla96tutorial23.pdf].
2. Software Architecture Resources, [http://www.bredemeyer.com/papers.htm ]	

	Dean,							Chair head,
	Prof. ȚÂMBULEA Leon, Ph.D.			Prof. PÂRV Bazil, Ph.D.

	Date,							Course responsible,
	October 1, 2009					Prof. PÂRV Bazil, Ph.D.