E0 327, Topics in Program Analysis: Software design using Application Frameworks, 3:1

August-December 2009, 2:30pm-4pm WF, Room 252

Instructor: K. V. Raghavan

Schedule

Date
Topic
Slides
Reading/Assignment
Aug. 05 Course Overview
lecture1.pdf
Prof. Aldrich's slides

Aug. 07 Demo of Eclipse JDT. Introduction to Java.

Frameworks = components + patterns
Aug. 12 Introduction to plugin projects

Getting your workspace setup
Aug. 14 Command pattern; class UpdateTestSuite.

Carry out steps in Chap. 3 of "Contributing to Eclipse".
Aug. 19 Composite pattern; class TestElement. Launching; class JUnitLaunchConfigurationDelegate.

Read chapters 1 and 2 of GoF book, and chapters 1-8 of Eclipse book. Read the JUnit Cookbook and JUnit FAQ.
Aug. 21 Class canceled
Aug. 26 Class timing: 2:30pm-4:30pm. Listening to launches, and building the model of test-suites and test-cases: Classes JUnitModel, JUnitModel.JUnitLaunchListener, TestRunSession, RemoteTestRunnerClient.
Assignment on design patterns.
Aug. 28 Class timing: 2:00pm-3:00pm. MVC. Introduction to the viewer TestRunnerViewPart. Method TestRunnerViewPart.createPartControl.

Sep. 2 MVC. Introduction to the viewer TestRunnerViewPart. Method TestRunnerViewPart.createPartControl. Features provided by JFace: Converting model to view, notifying clients of selection changes in the view in terms of the underlying model elements.


Sep. 4 Populating the popup menu in the TestViewer. Various actions supported by TestViewer and TestViewerPartControl.


Sep. 7

Demonstration of iterators assignment.
Sep. 9

Discuss Ferret paper.
Sep. 11

Discuss proposed UI to implement Ferret.
Sep. 16 Extensions and extension points contributed by JUnit


Sep. 22 Special class

Present detailed UI design, and high-level architecture of Ferret implementation.
Sep. 23 Extension points contributed by JUnit. Listening to resource changes.


Sep. 25

Discussion of plugin design for course project.
Sep. 30, Oct. 7, 9 No classes


Oct. 14 Checking Framework Interactions with Relationships. C. Jaspan and J. Aldrich. In ECOOP, July 2009. (You may skip the details of Section 4 in case you are short of time.)

Presentation by Raghavan.
Oct. 16 Components, frameworks, patterns. Ralph Johnson. In Proc. Symp. on Softw. Reusability, 1997.

Presentation by Ravi.
Oct. 21 Design Fragments Make Using Frameworks Easier. G. Fairbanks, et al. In OOPSLA, 2006.

Presentation by Sudha.
Oct. 23 Behavioral subtyping using invariants and constraints. B. H. Liskov and J. M. Wing, 1999 (a previous version of this paper appeared in TOPLAS, November 1994).

Presentation by Arnab.
Oct. 28 Role model based framework design and integration. D. Riehle and T. Gross. In OOPSLA, 1998.

Presentation by Raghavan.
Nov. 4 Contract soundness for object-oriented languages. R. B. Findler and M. Felleisen. In OOPSLA, 2001.

Presentation by Ravi.
Nov. 11 Separation logic, abstraction and inheritance. M. J. Parkinson and G. M. Bierman. In POPL, 2008.

Presentation by Arnab.
Nov. 13 Practical API protocol checking with access permissions. K. Bierhoff, N. E. Beckman, and J. Aldrich. In ECOOP, 2009.

Presentation by Sudha.
Nov. 18

Final demo of class project.
Nov. 20 jStar: towards practical verification for java. D. Distefano and M. J. Parkinson. In OOPSLA, 2008.

Presentation by Raghavan.

Rough lecture notes on JUnit

Motivation

The topic of this course is software development using design patterns and frameworks. Traditional object-oriented programming has reached its limits in terms of scaling to large systems, chiefly because classes are too small a unit of abstraction and reuse. Application frameworks are the new paradigm for creating large software systems. For instance, Eclipse is a framework for creating integrated development environments, while Wicket is a framework for creating web applications. A framework is a collection of classes organized according to well-known design patterns, forming the basic architecture of an application, and allowing programmers to focus on the task of completing the application by "filling in the holes" in the framework. The objective of this course is to study the theory and practice of application frameworks, to investigate and formalize the rules for using frameworks correctly, and to design verification approaches to enforce correctness. We will do this via class room lectures, reading current literature, programming assignments, and assignments on designing verification approaches.

Course contents

Software engineering topics: Introduction to frameworks - Eclipse and Wicket; Design patterns - Extension Object, Proxy, Virtual Proxy, Bridge, Composite, Visitor, Observer, Execute Around, Adapter, Pluggable Adapter, Objectify Association, Builder, Strategy, Command, Memento; Architectural patterns - layers, model-view-controller; RESTful web programming.

Computer science topics pertinent to verification of object-oriented and framework-based applications: Type states; behavioral subtyping; modelling languages; property verification - logical reasoning on pre- and post-conditions, model checking, type inference, and abstract interpretation.

Prerequisites

Experience in object-oriented programming, preferably using Java; basics of discrete structures and mathematical logic. Or, consent of instructor.

References

Required
  1. Contributing to Eclipse: Principles, Patterns, and Plugins. Erich Gamma and Kent Beck, Dorling Kindersley (India) Pvt Ltd / Pearson Education, 2004.
  2. Design Patterns: Elements of Reusable Object-Oriented Software. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Dorling Kindersley (India) Pvt Ltd / Pearson Education, 1994.
  3. Current research papers.
Optional
  1. Eclipse plugins, 3/e. Eric Clayberg and Dan Rubel, Addison-Wesley (USA), 2009.
  2. Design Patterns Explained, 2/e: A New Perspective on Object-Oriented Design. Alan Shalloway and James Trott, Dorling Kindersley (India) Pvt Ltd / Pearson Education, 2005.
  3. Spring in action, updated for Spring 2.0, 2/e. Ryan Breidenbach and Craig Walls, Dreamtech Press / Wiley (India), 2007.
  4. Wicket in action. Martijn Dashorst and Eelco Hillenius. Dreamtech Press / Wiley (India), 2008.
  5. Restful Web Services. Leonard Richardson, Sam Ruby, and David Heinemeier Hansson. Shroff / O'Reilly, 2007.