Course Syllabus

Software Architecture
IN4MATX 221 (37330) 

Meeting Information

Lectures
Room: DBH 1300
Day & time: TuTh 2:00-3:20pm

Instructor Information

Professor
Sam Malek

Email: malek at uci dot edu
Office hours: After class or by email appointment @ DBH 5226  

Assistant
Mahmoud Hammad
Email: hammadm at uci dot edu
Office hours: Thursdays, 10-11am @ ICS1 440

Course Description

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.

Requirements and expectations of students: This course is intended for MS and PhD students. The course covers the foundations and principles of software architecture as well as some of the more recent literature and research issues. The course will be a mix of lectures by the instructor and guest speakers, as well as interactive discussions. The students are expected to possess (1) a basic understanding of the software engineering principles, (2) prior experience with the design and development of large-scale software, (3) a strong programming background, specifically Java, and (4) the ability to learn new programming languages and software development technologies, specifically Android Development Framework.  

Grading Summary

  • Class participation (5%): actively contribute to classroom discussions/exercises and online discussion board based on the reading material assigned for the week 
  • Three individual assignments (15% each): involve substantial amount of design and programming in Java/Android
  • Two exams (midterm 20%, final 30%): combination of multiple-choice and essay questions covering the concepts presented in lectures and reading materials 

Required Textbook and Reading Material

R. N. Taylor, N. Medvidovic, and E. M. Dashofy.
Software Architecture: Foundations, Theory, and Practice,  
John Wiley & Sons, 2009.
ISBN-10: 0470167742
ISBN-13: 978-0470167748 

The textbook is complemented with online reading materials, resources, and publications that are assigned throughout the class; see the schedule below.

Class Schedule (subject to change; check regularly)

Date

Topic

Readings

Assignments

Sep 22

Introduction

Chapters 1 and 2

Sep 27

Basic Concepts

Chapter 3

Sep 29

Introduction to Android Programming

Android developer guide:
https://developer.android.com/index.html 

Android tutorial: 
https://www.tutorialspoint.com/android/index.htm 

Oct 4

Designing Architecture Chapter 4
Oct 6

Architectural Styles

Chapter 4

Oct 11

Basic Concepts in Practice

Bagheri, et al. Software Architectural Principles in Contemporary Mobile Software: From Conception to Practice. Journal of Systems and Software (JSS), Vol. 119, Pages 31-44, September 2016.

HW 1 & 2 are assigned

Oct 13

Architectural styles Cont.

 

Oct 18

Architectural Issues in Practice

Chin, et al. Analyzing Inter-Application Communication in Android. International Conference on Mobile Systems, Applications, and Services, Washington DC, June 2011.  

Felt et al. Permission Re-Delegation: Attacks and Defenses. USENIX Security Symposium, August 2011. 

Oct 20

Software Connectors 

Chapter 5

 

Oct 25

Modeling 

Chapter 6

HW 1 is due

Oct 27 

Midterm Exam

Nov 1

Analysis

Chapter 8 

 

Nov 3

Analysis in Practice

Sadeghi et al. Analysis of Android Inter-App Security Vulnerabilities Using COVERT. International Conference on Software Engineering, Florence, Italy, May 2015.

Bagheri et al. COVERT: Compositional Analysis of Android Inter-App Permission Leakage. IEEE Transactions on Software Engineering, Vol. 41, No. 9, September 2015. 

 

Nov 8

Implementation

Chapter 9

 

Nov 10

Security

Chapter 13 (13.1-13.2)

HW 2 is due

HW 3 is assigned 

Nov 15

Architecture Recovery

Ducasse and Pollet, Software Architecture Reconstruction: A Process-Oriented Taxonomy. IEEE Transactions on Software Engineering, vol. 35, no. 4, pp. 573-591, July-Aug. 2009.

Garcia et al. A comparative analysis of software architecture recovery techniques. IEEE/ACM 28th International Conference on Automated Software Engineering (ASE), Silicon Valley, CA, 2013, pp. 486-496.

Nov 17

Architectural Adaptation 

Chapter 14

Kephart and Chess. The Vision of Autonomic Computing. IEEE Software. January 2003. 

Nov 22

Architectural Adaptation for Security

Yuan et al. Architecture-Based Self-Protecting Software Systems. International Conference on Quality of Software Architectures (QoSA 2013), Vancouver, Canada, June 2013.

Yuan and Malek. Mining Software Component Interactions to Detect Security Threats at the Architectural Level. Working IEEE/IFIP Conference on Software Architecture (WICSA 2016), Venice, Italy, April 2016. 

Nov 24

Thanksgiving holiday -- no class 

Nov 29

Architectural Adaptation for Security Cont.

 

Dec 1

Deployment

Chapter 10

 HW 3 is due 

Dec 8

Final Exam -- 1:30-3:30pm

Academic Honesty

Students are responsible for adhering to the UCI Academic Honesty standards. I encourage students to discuss problems in broad, conceptual terms and to work and study together. However, any work turned in must be your own. Material that is copied from any source needs to be quoted and the source must be cited. If you plagiarize, you run the severe risk of failing the class, in a most disgraceful manner. For further information, see http://honesty.uci.edu/

 Disabilities

If you need an accommodation because of a disability, please contact the instructor and the Disability Services Center as soon as possible.

Course Summary:

Date Details Due