6898: Advanced Topics in Software Design: Readings

This is a draft reading list. I don't plan for us to read all of these papers, and I expect to add a few as we go.


Modelling Languages & Specification

Language Design

[J02] Daniel Jackson. Micromodels of Software: Lightweight Modelling and Analysis with Alloy. February 2002. Available at: http://sdg.lcs.mit.edu/alloy/book.pdf.

[JSS02] Daniel Jackson, Ilya Shlyakhter and Manu Sridharan. A Micromodularity Mechanism. ACM SIGSOFT Conference on Foundations of Software Engineering / European Software Engineering Conference, Vienna, September 2001. Available at: http://theory.lcs.mit.edu/~dnj/publications.html#micromodularity.

[LBR01] Gary T. Leavens, Albert L. Baker, and Clyde Ruby. Preliminary Design of JML: A Behavioral Interface Specification Language for Java. Department of Computer Science, Iowa State University, TR #98-06p, June 1998, revised July, November 1998, January, April, June, July, August, December 1999, February, May, July, December 2000, February, April, May, August 2001. Available here.

[LBR99] Gary T. Leavens, Albert L. Baker, and Clyde Ruby. Preliminary Design of JML: A Behavioral Interface Specification Language for Java. In: Behavioral Specifications for Businesses and Systems, chapter 12, pages 175-188, Haim Kilov, Bernhard Rumpe, and William Harvey (editors). Kluwer Academic Publishers, 1999. Available here.

[MPL01] Peter Mueller, Arnd Poetzsch-Heffter, and Gary T. Leavens. Modular Specification of Frame Properties in JML. Workshop on Formal Techniques for Java Programs, ECOOP 2001. Available here.

[L02] K. Rustan M. Leino. A Myth in the Modular Specification of Programs. Technical Note KRML63. Personal Communication. Available here.

[G93] Yuri Gurevich. Abstract State Machines: The ASM Tutorial. Or: "Evolving Algebras: An Attempt to Discover Semantics". Current Trends in Theoretical Computer Science, eds. G. Rozenberg and A. Salomaa, World Scientific, 1993, 266-292. Available here. See also the ASM website: http://www.eecs.umich.edu/gasm/.

[S89] J. Michael Spivey. An Introduction to Z and Formal Specifications. Software Engineering Journal IEE/BCS, 1989. Vol 4, No 1, pp. 40-50. Available here.

[S90] J. Michael Spivey. Specifying a Real-Time Kernel. IEEE Software, September, 1990, pp. 21-28. Available here.

[W89] J.C.P. Woodcock. Structuring Specifications in Z. Software Engineering Journal IEE/BCS, 1989. Vol 4, No 1, pp. 51-66. Available here.

[WK99] Jos Warmer and Anneke Kleppe. The Object Constraint Language: Precise Modelling with UML. Addison-Wesley, 1999. For online information about OCL, see http://www-3.ibm.com/software/ad/library/standards/ocl.html.

Case Studies

[JS00] Daniel Jackson and Kevin Sullivan. COM Revisited: Tool-Assisted Modelling and Analysis of Complex Software Structures. ACM SIGSOFT Conference on Foundations of Software Engineering, San Diego, CA, November 2000. Available at: http://theory.lcs.mit.edu/~dnj/publications.html#com.

[KJ00] Sarfraz Khurshid and Daniel Jackson. Exploring the Design of an Intentional Naming Scheme with an Automatic Constraint Analyzer. Proc. 15th IEEE International Conference on Automated Software Engineering, Grenoble, France, September 2000. Available at: http://theory.lcs.mit.edu/~dnj/publications.html#ase-00.

[J01] Daniel Jackson. Analyzing Objects. Talk given at: Workshop on New Directions in Software Technology, St. John, US Virgin Islands, December 2001. Available at: http://theory.lcs.mit.edu/~dnj/talks.html#ndist01.

Analysis Technology

[J00] Daniel Jackson. Automating Relational Logic. ACM SIGSOFT Conference on Foundations of Software Engineering, San Diego, CA, November 2000. Available at: http://theory.lcs.mit.edu/~dnj/publications.html#alcoa-algorithm.

[L01] Extended Static Checking: A Ten-Year Perspective. K.R.M. Leino. Proceedings of the Schloss Dagstuhl Tenth Anniversary Conference, edited by Reinhard Wilhelm, Springer LNCS, Volume 2000, 2001. Available here.

[B01] University of Bremen. USE: A UML-based Specification Environment. At http://www.db.informatik.uni-bremen.de/projects/USE/.

Patterns of Specification & Design

[F96] Martin Fowler. Analysis Patterns. Addison Wesley Longman, Inc. 1996.

[GHJV95] Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, 1995.

[Jm00] Michael Jackson. Problem Analysis and Structure. In Proceedings of NATO Summer School, Marktoberdorf, August 2000 (in publication). Available here.

[Jm01] Michael Jackson. Problem Frames: Analyzing and Structuring Software Development Problems. Addison Wesley, 2001.

[P57] G. Polya. How to Solve It. 2nd ed., Princeton University Press, 1957.

Programming Mechanisms for Design

[CLCM00] Curtis Clifton, Gary T. Leavens, Craig Chambers, Todd Millstein. MultiJava: Modular Open Classes and Symmetric Multiple Dispatch for Java. OOPSLA 2000 Conference on Object-Oriented Programming, Systems, Languages, and Applications, Minneapolis, Minnesota, 2000. Available here.

[C97] Luca Cardelli. Program Fragments, Linking, and Modularization. POPL 97. Available here.

[FF98] R. Findler and M. Flatt. Modular Object-Oriented Programming with Units and Mixins. International Conference on Functional Programming, 1998. Available here.

[FF98] M. Flatt, and M. Felleisen. Units: Cool modules for HOT languages. In Proc. Sigplan 1998 Conference on Programming Language Design and Implementation, 236--248. Available here.

[MFH01] S. McDirmid, M. Flatt, and W. Hsieh. Jiazzi: New Age Components for Old Fashioned Java. In Proc. of the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA) 2001. Available here.

[RFSLE00] Reid, Flatt, Stoller, Lepreau, and Eide. Knit: Component Composition for Systems Software. OSDI 2000. Available here.

[L94] Xavier Leroy. Manifest Types, Modules and Separate Compilation. Proc. 21st Symposium on Principles of Programming Languages (POPL), 1194, pp. 109--122. Available here.

[L+01] Xavier Leroy, with Damien Doligez, Jacques Garrigue, Didier Remy and Jerome Vouillon. The Objective Caml System. Release 3.04. Documentation and User's Manual. Chapter 2: Modules. December 10, 2001. Institut National de Recherche en Informatique et en Automatique (INRIA). Available here, or at http://caml.inria.fr/ocaml/htmlman.

[H02] Robert Harper. Programming in Standard ML. Latest draft, March 4, 2002. Part 3: The Module Language. Available here, or at http://www.cs.cmu.edu/~rwh/.

[WB88] Philip Wadler and Stephen Blott. How to make adhoc polymorphism less ad hoc. Proc. 16th ACM Symposium on Principles of Programming Languages, pp. 60--76, 1989. Available here

[HPF00] Paul Hudak, John Peterson, Joseph Fasel. A Gentle Introduction to Haskell. Revised June, 2000 by Reuben Thomas. See section: Type Classes and Overloading. http://www.haskell.org/tutorial/classes.html. Available here.

[G+97] Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Videira Lopes, Jean-Marc Loingtier, and John Irwin.Aspect-Oriented Programming. Proceedings of the European Conference on Object-Oriented Programming (ECOOP), Finland. Springer-Verlag LNCS 1241. June 1997. Available here.

[G+01] G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. G. Griswold. An overview of aspectj. In ECOOP, pages 327-353, 2001. 52 Available here.

[P97] Christian Prehofer. Feature-Oriented Programming: A Fresh Look at Objects. Proceedings of the European Conference on Object-Oriented Programming (ECOOP), Finland. Springer-Verlag LNCS 1241. June 1997. Available here.

Decoupling Theory

[P79] David L. Parnas. Designing software for ease of extension and contraction. IEEE Trans. Software Eng. SE-5, 2 (1979).

[E01] Steven D. Eppinger. Innovation at the Speed of Innovation. Harvard Business Review, January 2001.

[PE94] Thomas U. Pimmler and Steven D. Eppinger. Integration Analysis of Product Decompositions. DE-Col. 68, Design Theory and Methodology (DTM 1994), American Society of Mechanical Engineers.

[S01] Nam Pyo Suh Axiomatic Design: Advances and Applications. Oxford University Press, 2001.

[BC00] Carliss Y. Baldwin and Kim B. Clark. Design Rules: The Power of Modularity, Volume 1. MIT Press, 2000.

Refactoring

[F99]Martin Fowler with contributions by Kent Beck, John Brant, William Opdyke and Don Roberts. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.

[K+01]Yoshio Kataoka, Michael D. Ernst, William G. Griswold, and David Notkin. Automated Support for Program Refactoring using Invariants. Proceedings of the International Conference on Software Maintenance (ICSM'01), (Florence, Italy), November 6-10, 2001, pp. 736-743. Available here.