Software Adaptation: 539C


Time and Place

Term 2
Monday and Wednesday
11:00-12:30
CISR 304

Schedule

DateClass
Mon. Jan 10First day of class. Syllabus (slides). Course content overview.
Wed. Jan 12Aspect-Oriented Programming

Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Griswold. An overview of AspectJ. ECOOP 2001.

Yvonne Coady, Gregor Kiczales, Mike Feeley and Greg Smolyn. Using AspectC to improve the modularity of path-specific customization in operating system code. FSE 2001.
Mon. Jan 17Pavel Augustinov et al. abc: An extensible AspectJ compiler. Technical Report.

Charles Zhang and Hans-Arno Jacobsen. Quantifying aspects in middleware platforms. AOSD 2003.
Wed. Jan 19Interception

If your UNIX is rusty, you can reference these fine manual pages.

Tal Garfinkel. Traps and Pitfalls: Practical Problems in System Call Interposition Based Security Tools. NDSS 2003. (Software Distribution)

Niels Provos. Improving Host Security with System Call Policies. USENIX Security 2003. (Software Distribution)
Mon. Jan 24 Eugene Tsyrklevich and Bennet Yee. Dynamic detection and prevention of race conditions in file accesses. USENIX Security 2003.

Chris Wright and Crispin Cowan. Linux Security Modules: Generic Support for the Linux Kernel. USENIX Security 2002.
Wed. Jan. 26Adaptive Servers/Middleware
Eyal de Lara, Dan S. Wallach and Willy Zwaenepoel. Puppeteer: Component-based adaptation for mobile computing. USITS 2001.

If you need a refresher on Components and Compound Documents, check out the background in this paper.

Lecture: Thread versus Event-Based Programming
Mon. Jan 31
Only one paper Matt Welsh, David Culler, and Eric Brewer. SEDA: An Architecture for Well-Conditioned, Scalable Internet Services. SOSP 2001.
Wed. Feb. 2Brian Ensink and Vikram Adve. Coordinating adaptations in distributed systems. ICDCS 2004.

Duzan, G., Loyall, J., and Schantz, R. Building adaptive distributed applications with middleware and aspects. AOSD 2004.
Mon. Feb. 7Ting Liu and Margaret Martonosi. Impala: a middleware system for managing autonomic, parallel sensor systems. PPoPP 2003. (pdf)
Wed. Feb 9Project Proposal Due


Theme: An Approach for Aspect-Oriented Analysis and Design. Elisa L.A. Baniassad and Siobhan Clarke. ICSE 2004.
Mon. Feb 21Session Layer

Jon Salz and Hari Balakrishnan. TESLA: A transparent, extensible session-layer architecture for end-to-end network services. USITS 2003.

Aspectizing Server-Side Distribution. ASE 2003.
Wed. Feb 23Software Architecture

Y. Smaragdakis and D. Batory. Implementing layered designs with mixin layers. In Proc. of the European Conference on Object-Oriented Programming, pages 550 570, 1998.

D. Batory, C. Johnson, B. MacDonald, and D. von Heeder.Achieving extensibility through product-lines and domain-specific languages: A case study. In Proc. of the International Conference on Software Reuse, pages 117 136, 2000.
Mon. Feb 28 Eric Eide, Alastair Reid, John Regehr, and Jay Lepreau. Static and dynamic structure in design patterns. In Proceedings of the 24th International Conference on Software Engineering (ICSE 2002).
Wed. March 2Verification

Stephen McCamant and Michael Ernst. Predicting problems caused by component upgrades. FSE 2003. (Lyndon)

Patrick Lam, Viktor Kuncak, and Martin Rinard.Crosscutting Techniques in Program Specification and Analysis. AOSD 2005. (Ivan)
Mon. March 7 Kernel

Andrea C. Arpaci-Desseau et al. Transforming policies into mechanisms with Infokernel. SOSP 2003. (Daniel)

Scout OS paper (Cancelled)
Wed. March 9 Ana Moreira. Crosscutting quality attributes for requirements engineering. International conference on Software engineering and knowledge engineering.

Awais Rashid. Modularisation and Composition of Aspectual Requirements. AOSD 2003.
Mon. March 16AOSD Conference. No class.
Wed. March 19AOSD Conference. No class.
Mon. March 21 Malabarba, Pandey, Gragg, Barr, and Barnes. Runtime support for type-safe dynamic Java classes. ECOOP 2001.
Wed. March 23Spitznagel and Garlan.A Compositional Formalization of Connector Wrappers. ICSE 2003.

Robert Walker and Gail Murphy. Implicit context: Easing software evolution and reuse. FSE 2000.
Wed. March 30Interoperability among Independently Evolving Web Services. Middleware 2004.
Mon. April 4TBA
Wed. April 6TBA

Course Description

This course will study the infrastructure required to add new features to exisiting software. An understanding of software adaptation can speed the time to market for new program versions and improve program reliability. Topics include: Aspect-Oriented Programming, Extensible Operating Systems, Configurable Distributed Systems, and Product-Line Architectures. We will read numerous papers from these topics that form a foundation for software adaptation. This foundation will be used to understand several real-world case studies. Examples will be taken from the AspectJ Weaver, Eclipse and Mozilla Plug-In Architectures, Linux Kernel Modules, and Linux Packet Filter. Students will have the option of completing a research intensive paper or a programming intensive project.

Related Links

Check out the UBC Software Practices Lab
See Peyman Oreizy's Software Adaptation Hierarchy.

Course Format

Each class will be focused around the presentation and discussion of (usually) two research papers (see Reading). Students are required to read both papers and present a paper review (see Paper Reviews) for three out of four papers per week. Each paper will be presented by a student in a short (10-15 minute) informal slide presentation. After the presentations we will discuss both papers openly. Towards the end of class I will present basic terminology and concepts required for the following meeting's reading. Throughout the term students are required to complete a programming or research project (see Term Project).


Paper Reviews

Students will submit a paper review for each paper presented in class. Students presenting a paper are not required to write a review for that paper. Each review must be between 3/4 and 1 page, Times New Roman Font, single spacing, with 1 inch margins. Use a minimum of spacing between sections (TBA: Example Review). Reviews will be graded on a 0-2 point scale and returned the following day of class. Paper reviews will count for 30% of the total course grade. The review consists of two sections: a paper summary and answers to the following questions.

Q1: Who will benefit from the research described in this paper and in what way will they benefit? Describe the individual's role (ex. programmer) the task performed by the individual (ex. debugging aspect-oriented programs), and the benefit (ex. makes clear how aspect-code relates to object-model).

Q2: What are two contributions claimed by the paper authors?

Q3: For each each contribution claim, describe how the claim is validated and whether you think the validation is convincing.

Q4: Do you think each contribution is novel? Why or why not? If you are not familiar with the area, base your judgement on the credibility of any novelty arguments put forth in the paper. Also, use any other papers read in class as a basis.

Q5: What opportunities for future research can you see in this area? If you are not familiar with the area, you can base your answer on a future research direction outlined in the paper.


Term Project

Students have the option of choosing either a research proposal or a programming project related to the areas of Aspect-Oriented Programming, Adaptive Middleware, Extensible Operating Systems, Configurable Distributed Systems, or Product-Line Architectures. Projects can be completed individually or in groups. A one page preliminary proposal is required for both project options. Group projects must include an additional 1/2 page describing how responsibility is to be divided. Both project options require a 15 minute (per person) class presentation at the end of the term.

Research Proposal : The purpose of the research proposal option is to give students the opportunity to do significant background research in an area of interest. From this backgound, they will develop a new direction for research. The focus of the 8 page research proposal should be on arguing why current work does not address a significant problem in software development, maintainance, or configuration. You are not required to have a fully developed solution, only a proposed new direction. The paper will consist of the following sections: Introduction, Background, Proposed Research, Proposed Validation. It is required that at least ten sources not discussed in class are referenced in the paper. References must come from certain acceptable conferences or journals (see below) or checked with me before being used. The project presentation will be a presentation of this paper.

Programming Project : The purpose of the programming project option is to give students the opportunity to become familiar with the tools, languages, and platforms that enable the adaptation of existing software. The focus can be either on: enabling adaptation in a platform (ex. adding "aspects" to Mozilla) or implementing a specific adaptation (ex. adding "security" to Mozilla). The project presentation can be a traditional slide presentation or a "live" software demonstration. Students giving a traditional slide presentation will demo their software to me in office hours. Submission of all source code and an informal two page documentation is required.

Term Project Grade Project Proposal: 10% of total course grade Research Paper or Software Implementation: 40% of total course grade Project Presentation: 20% of total course grade

Attendance

Attendance is required. You will not be able to submit paper reviews (see Reading) for classes which you did not attend. Exceptions will be made for students with documented medical excuses or academic related travel obligations.


Pre-requisites

There are no formal pre-requisites for this course. However, an understanding of basic concepts from and experience with Software Engineering and Operating Systems is important. Specifically,
Software Engineering: Software Lifecycle, Design Patterns, the UML, OO, Java, C++.
Operating Systems: Threads, semaphores (locks), sockets, file I/O.

Conference List

AOSD : International Conference on Aspect-Oriented Software Development
FSE: Foundations of Software Engineering
ICSE : International Conference on Software Engineering
Middleware : International Middleware Conference
NDSS: Network and Distributed System Security Symposium
OOPSLA: Object-Oriented Programming, Systems, Languages, and Applications
OSDI: Operating System Design and Implementation
PPoPP: Principles and Practice of Parallel Programming
SOSP: Symposium on Operating System Principles
USENIX Security: USENIX Security Symposium
USITS: USENIX Symposium on Internet Technology and Systems

Case Studies

Eclipse Plug-In Architecture
Mozilla Plug-In Architecture
Linux Netfilter