CSE 990
Advanced Software Architecture
Fall 2011
Software Architecture is the discipline of designing and specifying software
systems. As we move towards larger and larger (or ultra large scale) systems, having well-designed architecture and system models will be an essential element for producing software that is of high quality and feasible to maintain. Several recent trends such as the adoption of software product line engineering (SPLE) by many sectors of industry, and a move towards designing self-adaptive software that can respond to environmental changes, indicate that software architecture is becoming a more and more important part of the software process.
In this course, students will study software architecture with a focus on software validation techniques that leverage architectural models. Students will learn an architectural description language, will be exposed to feature modeling for SPLE, and learn about self-adaptive software. The course will consist of some individual homework assignments, paper reviews and presentations and as well as a term project.
Some additional course slots may be used to accommodate for travel. This will be discussed on day-one.
The course will have a substantial independent project and will
require strong class participation. Many of the lectures will not be structured. You are expected
to read the material assigned and participate in discussions.
This course is a project based course. The first part of the course will consist of
structured lectures. The second part of the course will involve reading current literature on related topics. Students will be responsible for leading presentations. This includes creating supplementary
overheads to lead the discussion.
Each student will participate in a group project
during the course of the semester. They will be expected to become familiar with a particular body
of research beyond the classroom lectures. Students will submit a written
report, and give an oral presentation of their findings. A list of suggested projects for this
course will be available after the first 6 weeks of classes.
To succeed in this course you should have some prior course work in
software engineering, CSE 310 and CSE 235 or equivalent.
This document is available at http://www.cse.unl.edu/~myra/classes/cse990_11/syllabus.html
Course Textbook:
There is no official text for this course. I will provide handouts and will have
the following books available on short term loan in the library. You may
keep the book for a loan period of one day from the short term loan desk in the Math the library. Links to research papers from conferences and journals will be posted on line for you to read.
We will be making use of Blackboard for providing some material.
-
P. Clements and L. Northrup, Software Product Lines: Practices and Patterns,
Addison-Wesley, 2002.
R. Taylor, N. Medvidović and E.M. Dashofy, Software Architecture : Foundations, Theory, and Practice, John Wiley, 2010.
Topics to be Covered:
(This syllabus will be updated and expanded as the semester
progresses. You should use your browser reload button each time to make
sure you have the most current version). A detailed schedule of lectures and
handouts will be provided.
- Introduction and Overview of Software Architecture
- Architectural Models
- Software Product Lines and Configurable Software
- Self-Adaptive Software
- Architectural Description Languages
- Feature Modeling
- Architecture and Model-Based Testing
The grading for the class will be as follows:
- Homeworks: problems, programs, paper reviews: 30%
- In Class participation: 10%
- Project Proposal: 10%
- Paper presentations: 10%
- Final project presentation results and paper: (due during dead week) 40%
There will be no exams given in this course; Evaluation will be based on your class
participation, assignments, paper reviews, your paper presentation, and your written and oral project presentations. There will be a considerable amount of reading of research papers
in the course.
Detailed Class Schedule: (updated as semester progresses)
Class | Day/Date | Topic
|
1 |
Tues. 8/23 |
Introduction to Course |
2 |
Thurs. 8/25 |
Future of Software Design/Architecture
|
3 |
Fri. 8/26 (Avery 347 11:30-12:45) |
Introduction to Software Architecture |
|
4 |
Tues. 8/30 |
Introduction to Architecture Description Languages |
|
5 |
Thurs. 9/1 |
Architecture Description Languages cont. |
|
6 |
Thurs. 9/15 |
ADL Framework paper discussion |
|
7 |
Fri. 9/16 |
SPLs and Feature Modeling |
|