SWE 443 - Software Architectures
Spring 2013
Location: Art and Design Building, Room L008
Time: MW 3:00-4:15pm
SWE 443 - Software Architectures
Spring 2013
Location: Art and Design Building, Room L008
Time: MW 3:00-4:15pm
Schedule (subject to change; check regularly)
Lecture slides and handouts are available for download from blackboard.
Week 1
Jan 23
Topic: Introduction
Reading: T1, T2.1-2.6
Week 2
Jan 28
Topic: Basic Concepts
Reading: T3
Jan 30
Topic: Architectural View and Styles I
Reading: T4.1-4.3.4
Week 3
Feb 4
Topic: Architectural View and Styles II
Reading: T4.1 - 4.3.4
Feb 6
Topic: Data Flow Style I
Reading: T5
Handout: Lab 1, Code
Week 4
Feb 11
Topic: Data Flow Style II
Reading: T5
Feb 13
Topic: Data Flow Style Case Study
Reading: T5
Week 5
Feb 18
Topic: Call Return Style I
Reading: T5
Feb 20
Topic: Call Return Style II
Reading: T5
Week 6
Feb 25
Topic: Event Based Style
Handout: Lab 2, Code
Reading: T5
Feb 27
Topic: Event Based Style Case Study
Reading: T5
Week 7
Mar 4
Topic: Recap of Lab 1, Lab 2, and midterm review
Mar 6
Topic: Recap of Lab 1, Lab 2, and midterm review
Week 8
Mar 11
-- Spring Break
Mar 13
-- Spring Break
Week 9
Mar 18
-- Midterm Exam
Mar 20
Topic: C2 Style
Reading: T4.3.5
Handout: Project Description
Week 10
Mar 25
Topic: Architecture Implementation Frameworks
Reading: T9
Mar 27
Topic: Distributed Software Architectures
Reading: T11
Week 11
Apr 1
Topic: Architecture-Based Adaptation
Reading: T14
Apr 3
Topic: Project Requirements Recap
Week 12
Apr 8
-- Midterm Project Presentations
-- Presenters: Adnan, Garine, Jaclyn, Chad, Brandon, Keith
Apr 10
-- Midterm Project Presentations
-- Presenters: Bradley, Ribhi, Jeremy, Kyle, Christopher, Paul
Week 13
Apr 15
Topic: Quality Attributes of Software Architecture I
Reading: T12 and ATAM
Apr 17
Topic: Quality Attributes of Software Architecture II
Reading: T12 and ATAM
Week 14
Apr 22
Topic: Subsystem Design I
Reading: Object-Oriented Design Patterns
Apr 24
Topic: Subsystem Design II
Reading: Object-Oriented Design Patterns
Week 15
Apr 29
-- Final Project Presentations
-- Presenters: Paul, Christopher, Kyle, Jeremy, Ribhi, Bradley
May 1
-- Final Project Presentations
-- Presenters: Keith, Brandon, Chad, Jaclyn, Garine, Adnan
Week 16
May 6
Topic: Guest Lecture (paper) and Course Recap
Week 17
May 13 1:30-4:15pm
-- Final Exam
Instructor
Professor Dr. Sam Malek
Electronic Mail: smalek@gmu.edu
Office: Nguyen Engineering Building, Room 4431
Office Phone: +1-703-993-1677
Office Hours: Mon 10am-12pm or by appointment
Teaching Assistant Naeem Esfahani
Electronic Mail: nesfaha2@gmu.edu
Office: Nguyen Engineering Building, Room 4404
Office Hours: by appointment
Overview
One of the greatest difficulties for an inexperienced programmer in a large software engineering project is understanding the “big picture”. What are the components of a software system? How are those components communicating with one another? What other architectures are possible for the system? What are the tradeoffs between those alternatives? Architecting software is normally reserved for senior and highly experienced programmers, but this course shows you the ropes of the trade so that you too can work towards becoming a software architect.
This course teaches how to design, understand, and evaluate software systems at an architectural level of abstraction. By the end of the course, students will be able to:
• Identify and characterize the major architectural styles in existing software systems.
• Recover the architecture of a software system by analyzing its code.
• Describe a system’s architecture accurately using views of the code and run-time structures.
• Use existing tools and architectural frameworks to expedite software design.
• Design a medium-size software system that satisfies a specification of requirements
• Discuss the pros and cons of architectural alternatives.
This course can be taken for credit towards
•BS CS major as a Senior CS-related course
•BS CS minor in Software Engineering
•BS in Applied CS in Software Engineering
Prerequisites
•CS 321 or SWE 321 Minimum Grade of C
•Knowledge of Java
Textbook and Readings
•Software Architecture: Foundations, Theory, and Practice (required). R. N. Taylor, N. Medvidovic, and E. M. Dashofy. Wiley, 2009.
Grading
•Class Participation 5%
•Two Programming Assignments 25%
•One Course Project 25%
•Midterm Exam 20%
•Final Exam 25%
Late Work Will only be accepted with previous authorization from the instructor.
Academic Integrity
George Mason's policy concerning student conduct applies. Although students are encouraged to discuss the topics covered in class, all homework assignments, exams, and projects are to be completed individually, unless joint work is explicitly authorized by the instructor. If joint work is authorized, all contributing students must be listed on the submission. Presenting as one's own the words, the work, or the opinions of someone else without proper acknowledgment is plagiarism. Any deviation from the aforementioned policies is considered to be a violation of GMU’s Honor Code, and, as a minimum, will result in failure of the submission and, as a maximum, failure of the class.
Learning Disabilities
Students with a learning disability or other condition (documented with GMU Office of Disability Services) that may impact academic performance should speak with professor ASAP to discuss accommodations.