Feature Oriented Software Development (FOSD)
CS392F and EE382V
Spring 2012

Instructor Prof. Don Batory   batory@cs.utexas.edu
Office Hours Batory ACES 5.252
Tuesday 3:30-4:30pm
Room GEA 114
Time Tuesday-Thursday 9:30-11am
Unique# 53195 (ECE 16915)
Ground Rules Rules of Conduct and Academic Honesty
Your Grades UT Blackboard Grade Book
Final Exam Thursday, May 10th, 2-5pm (location TBA)

Project Presentation/Writeup Advice

Day Group (Leader)
Tuesday (in class) Group 2 (Abraham)
Group 5 (Puffe)
Wednesday evening
Painter 3.14 6-8pm
Group 4 (Lin)
Thursday (in class) Group 1 (Berg)
Group 3 (Flinchbaugh)

Projects

 Prerequisites, Overview, and Goals

First there was structured design with programming languages like C and Pascal.  Then object-oriented design and programming languages like C++ and Java arose.  Then components and component infrastructures.  What's next?  This course surveys leading edge paradigms for software design and software modularity that exploits advances in:

The integration of the above seems daunting. Yet a spectacular example of their integration was realized thirty years ago: relational query optimization (RQO). A relational query is specified in SQL, a parser maps it to an inefficient relational algebra expression, a query optimizer optimizes the expression automatically, and an efficient query evaluation program is generated from the optimized expression. SQL is a prototypical declarative DSL. Query evaluation programs are specified as compositions of relational algebra operations; relational algebra is a prototype for compositional programming. Query optimizers achieve automatic programming by rewriting an inefficient expression/program to a semantically equivalent but more efficient expression/program. The cost models that drive expression optimization are examples of program analysis. Mapping a relational algebra expression to an efficient program is generative programming and is an elementary example of model driven engineering.

A "holy grail" of Software Engineering is to replicate the success of RQO in other domains. Feature Oriented Software Development is a generalization, and its ideas are at the confluence next-generation research topics in software modularity, program design and program synthesis: OO design, product-lines, program refactoring, model driven engineering, program evolution, and program transformations.

Prior offerings of this course lead to student publications and research degrees (M.Sc. and Ph.D), some -- not all -- are listed below:

Course Prerequisites

The prerequisites of this course are:

Lecture Notes, Texts, and Software

Lecture notes will be presented online (after the lecture) as downloadable PPTX files.  A special font is used in the titles of lecture slides -- you can download it here. Links to the lectures are given below in the Course Outline. There is an optional text for this course:

We will use prototype Java-based tools that may be updated periodically during the course.  Some of the tools that we will use are posted below.  Note that you'll need about 500MB+ for this software.

Class Grades, Projects, and Homework

Grades for this course are determined by the following policy:

Each student (or group of students) will complete an approved project by the end of the class.  A classroom presentation on every project is expected.  Details on the projects will be announced later.

This year, group projects will be assigned at the beginning of the semester, where the first few lectures (past the introductory lecture) will be on various projects that could be worked on in groups.  I will entertain singleton projects (meaning specific projects that an individual student will propose) that are outside the group projects I present in class.

Extenuating Circumstances

If you have difficulty meeting the requirements of this course, fail to hand in an assignment, or miss an exam because of extenuating circumstances, please advise the instructor in writing at the earliest possible date so that your situation can be discussed. If you encounter an unexpected medical or family emergency or a random act of Nature that causes you to miss the due date for homework or miss a quiz or exam, you must present suitable documentation in writing to the instructor before special consideration will be given. A file of all written correspondence will be kept by the instructor and decisions regarding them will be made at the end of the semester.

Schedule

 

Numbers in [brackets] indicates the estimated number of lectures on a topic. The number indicated is a lower-bound, as there will be class room discussions to work on problems and review of homework assignments. Papers in yellow are required readings and are accessible via a web link. Required papers are to be read prior to each class. The order in which topics are presented might be changed as the class progresses.  (#) indicates approximate number of class dates per subject.  indicates code examples can be downloaded. 

Topic (# of lectures + days of discussion) Assignments

Introduction (1)

  • relational query optimization, product-lines, features, feature models, transformations, automated software development, model driven engineering

Complete pre-course Survey

Semester Projects (3)

Homework 1
Due Fri Jan 27 12noon


Program 1
Due Fri, Feb 3 12noon


Project Readings
Basic Concepts of Software Product Lines and Feature Modularity (3) Collect into Project Groups

Homework 2
Due Tuesday, Feb 7th 6pm


Program 2 (FeatureIDE)
Due Tuesday, Feburary 14th, 8pm


Feature Models (2) Program 3
Due Monday, Feburary 20th, 8pm


Begin Working on Group Projects

Category Theory, Product Lines, and Model Driven Engineering (4)

score card for categories

1st Project Report Due
Monday 27th, 12noon

Homework 3
Due Wednesday, February 29th, 8pm 

Solution

Separation of Concerns (2)

Program P4
Due Wednesday, March 21, 8pm


2nd Project Report Due
Saturday, March 24th, 8pm
Spring Break  

Feature Interactions (4)

Program P5
Due Monday, April 2, 8pm
Program Kubes (2)  

Design By Transformation (3)

 

Optional Lectures (3)  time permitting

  • Refactoring Product Lines
  • Automatic Programming
  • Program Transformation Systems
 

Student Project Presentations (3)