Automated
Software
Design
(formerly Feature Oriented Software Design FOSD)


CS392F and EE382V 

Fall 2013



 
Instructor Prof. Don Batory   batory@cs.utexas.edu
Office Hours GDC 5.826  Tuesday 3:30-4:30pm
Room GDC 2.210
Time MW 3:30-5:00pm
Unique# CS 54123 (ECE 17294)
Ground Rules Rules of Conduct and Academic Honesty
Your Grades UT Blackboard Grade Book
Final Exam TBA.

 Prerequisites, Overview, and Goals

This course explores leading edge paradigms for automated software design and software modularity from advances in:

A spectacular example of the integration of these areas was realized thirty-five 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 publications -- not all -- are listed below, the most recent in red.

 Prerequisites, Overview, and Goals

All programming assignments will use Java or Prolog. You can pick up what you need in Prolog, if you are unfamiliar with Prolog. We will use the following software, all of which is free to UTCS students, and all of which has been installed in the UTCS public labs.  The following is for Windows Platforms.  If you use Apple machines, well, I will try to help as much as I can, but no promises!

Course Prerequisites

Basic familiarity with the following topics are assumed -- all that is needed will be covered, but some prior experience will help greatly:

As mentioned above, Prolog will be used in assignments. I expect that you'll pick up what you need.

Lecture Notes and Texts

Lecture notes will be presented online (after the lecture) as downloadable PPTX files.  Links to the lectures are given below in the Course Outline. There is an optional text for this course:

Class Grades, Projects, and Homework

Grades for this course are determined by the following policy:

Each 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.

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 that are listed below are required readings and are accessible via a web link.  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. 

Warning: I reserve the option to replace a series of lectures below with another that I feel may be better and will improve the course further.

Topics
[# of lectures + days of discussion]
Written
Assignments
Programming
Assignments

Pre-course survey Complete Course Survey

Introduction to Model Driven Engineering  [4]

Readings

H1: Mapping to Tables
Due Friday, January 18, 10pm


H2: Meta Model Constraints
Due Friday, January 25th, 10pm


H3: Meta-Meta-Model Constraints
Due:TBD

P1: Model-2-Text Transformations
Due Monday, January 21, 10pm


P2: Writing Model Constraints and Transformations in Prolog
Due Monday, January 28, 10pm


P3: Violet to Prolog and the FSM Tool
Due: TBD
Software Product Lines and Feature Modularity (4)
Readings
Readings



P4: Feature Refactoring
Due: TBD


P5: Use of FeatureIDE
Due TBD
Feature Models (3)
Readings
 

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

score card for categories

 
Midterm
Spring Break

Separation of Concerns (2)

 

Feature Interactions (4)

 
Program Kubes (2) (optional)  
Product Potpourri (2)
  • Performance: estimating the performance of products in  product lines
  • Testing: static and dynamic analyses to reduce testing combinatorics
Readings
  • Siegmund paper
  • to be added
Refactorings  (1) 
  • Design Patterns, Refactorings, and Refactoring Scripts

Readings

  • to be added

Design By Transformation (4)

 

Student Project Presentations (4)