CS 392F Automated Software Design
Fall 2014



Instructor

Prof. Don Batory  

batory@cs.utexas.edu

GDC 5.826 after class or by appointment
TADoug Ilijevdoug.ilijev@utexas.edu
GDC 5.828T/Th 2-3pm

Room

GDC 6.202

Time

MW 3:30-5:00pm

Unique#

53225

Ground Rules

Rules of Conduct and Academic Honesty

Your Grades

Final Exam

Friday, December 12, 7:00-10:00 pm GDC 6.202



 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 listed last.

 Programming Assignments

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 a required text for this course:

This text is now available as a kindle ebook from Amazon. The University Co-op will have new and used copies of this text.  Here's a link to which you can find various sites at which you can order this text --- just click on "Begin Price Comparison".


            Hint: I’m not impressed with today’s ebooks.  They are just as expensive as hard copies, and I am unimpressed with ebook software.  Your call.

Class Grades, Projects, and Homework

Final grades will be determined approximately by the following scheme:

  1. Your accumulative programming assignment grade will determine the maximum final grade for the course.  Ex: if you get a "B" average across all of your projects, your final grade will be no greater than a "B".
  2. Final counts 35%; midterm counts 35%; classroom participation 15%; and class presentation counts 15%.

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.

All programming projects are to be submitted through Canvas.  A PDF file must be included on all assignments -- it lists your name and email addresses that are hyperlinked so that I can easily send my comments of your assignment back to you.


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.

The syllabus on the first day of class is here (as I do modify this page as the course progresses).

Topics
[# of lectures + days of discussion]

Written
Assignments

Programming
Assignments

Precourse Survey

Introduction to Model Driven Engineering  [4] 

  1. UML class diagrams, MDE models and metamodels, model-2-text transformations
  2. Metamodel constraints, OCL, model-to-model transformations, ATLAS, prolog
  3. Bootstrapping MDE tools

Readings

H1: Mapping to Tables
Due Thurs Sept  4, 10pm

 

H2: MetaModels
Due Mon, Sept 15, 10pm

P1: Model-2-Text

Due Mon Sept 8, 7pm

 

P2: Model-2-Model
Due Mon Sept 15, 7pm

 

P4: Text-2-Model

Due Mon Oct 6, 7pm


Software Product Lines and Feature Models [3] 

  1. Feature models, attribute grammars, propositional formulas, SAT solvers
  2. Feature model analyses, reasoning about edits
  3. Next generation feature models, feature replication, multi product lines

Readings


H3: Conjunctive Normal Form and Feature Model Negation
Due Fri, Sept 26, 7pm


H3.5 (H3 Resubmission)
Due Wed, Oct 1, 7pm

P3: BMW Series 2 FM
Due Mon Sept 29, 7pm

Feature Modularity [3] 

  • Layered designs, OO virtual machines, collaborations, extensions, mixins, mixin-layers
  • FOSD, principles of uniformity and scalability, generalized modularity, composition

    Readings




P5: Feature House
Due Tues Oct 14,  10pm

 

P6: Refactoring Scripts
Due Thurs, Oct 30, 7pm

Refactorings  [4] 

  • Review of Refactorings
  • Review of Design Patterns
  • Reflective Refactoring

Readings



H4: Model Refactoring
Due Sun 19, 12noon 




Midterm 

       

Take Home Midterm
Due Sun 26th 12noon


Class Projects
Due Wed 29th, 12noon

Design By Transformation [4] 

  • Map reduce, Liskov and Perry substitution principles, refinement, optimization, correct-by-construction
  • Parallel architectures, product lines of streaming applications
  • Dr. Taylor Riche, Guest Lecturer, National Instruments
  • Dr. Bryan Marker, Guest Lecturer, University of Texas at Austin

    Readings

  • Modeling in Event-B (1st 2 chapters)

 


P7: Gamma
Due Tues, Nov 11, 7pm

Categories [4]

score card for categories

  • Domains, instances, arrows and MDE
  • Pragmatics, inheritance, SPLs, functors, examples, commuting diagrams
  • Products, product families, products of categories, pushouts
  • Applications: portlet synthesis, geodesics, lifting, homomorphisms, test generation

Readings

 



H5: Categorical Constructions

Due x

 

Feature Interactions [2] 

  • CIDE, altering natural orders, optional feature problem, lifters and derivatives
  • Feature products, interactions, and composition


Readings




Program Kubes [2]  (if there is time)

  • Product lines of product lines
  • Origami, multidimensional arrays, expression problem, relational data cubes, product-lines of product-lines, array contraction, array products, generalizing safe composition

    Readings




Student Presentations [4]