Advanced Topics in Software Engineering
Methods and Tools for Software Modularity
Readings and Course Schedule
Note: Unless otherwise stated, a class meeting format is ``discussion''.
Details on the presentation format or the ``required'' status of a particular
reading is subject to change.
Most readings are provided as a download here.
Some of these are only accessible from the UCSD
campus or using the UCSD web proxy. Papers not posted here will be made available on Piazza under Resources > Resources (yes, there are nested tabs).
- Tuesday (First three readings strictly optional - Griswold presents with discussion)
- W.W. Gibbs, Software's Chronic Crisis, Scientific American, pages 72-81, September, 1994.
- L.A. Belady and M.M. Lehman,
A Model of Large Program Development.
IBM Systems Journal, 15(3), 1976.
- D.L. Parnas, Why Software Jewels are Rare, Computer, 29(2), 1996.
- Wikipedia: Refactoring
- Thursday: Early History of Modularity
- D. L. Parnas, Information Distribution Aspects of Design Methodology.
Proceedings of the IFIP Congress, vol. 1, pp. 339-344, 1971.
- D. Parnas, On the Criteria To Be Used in Decomposing Systems into
Modules, Communications of the ACM, 15 (12), 1972.
- Robert C. Martin, "SRP: The Single Responsibility Principle", from the book Agile Software Development, Principles, Patterns, and Practices>.
- Orthogonality and the DRY Principle, A Conversation with
Andy Hunt and Dave Thomas, Part II by Bill Venners, March 2003.
LAB: Identify 3 design decisions exposed between classes and refactor to hide them. Ideally these design decisions should be deemed likely to change, or that the tangling of each design decision with the other code presents problems, such as comprehensibility. Your choice of each design decision should be clearly omotivated.
- Thursday: Object Orientation and Modularity
- Wegner, P. 1987. Dimensions of object-based language design. In Conference Proceedings on Object-Oriented Programming Systems, Languages and Applications (Orlando, Florida, United States, October 04 - 08, 1987). N. Meyrowitz, Ed. OOPSLA '87. ACM, New York, NY, 168-182. DOI= http://doi.acm.org/10.1145/38765.38823 (background - if OO is new to you)
- Liskov, B. 1987. Keynote address - data abstraction and hierarchy. In Addendum To the Proceedings on Object-Oriented Programming Systems, Languages and Applications (Addendum) (Orlando, Florida, United States, October 04 - 08, 1987). L. Power and Z. Weiss, Eds. OOPSLA '87. ACM, New York, NY, 17-34. DOI= http://doi.acm.org/10.1145/62138.62141
- Barbara H. Liskov and Jeannette M. Wing. 1994. A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16, 6 (November 1994), 1811-1841. DOI=10.1145/197320.197383
LAB: Identify information distribution (etc.) among subclasses and refactor (2) See Piazza for details.
- Thursday: Pre-/post-condition semantics revisited
- Meyer, B. 1992. Applying "Design by Contract". Computer 25, 10 (Oct. 1992), 40-51. DOI= http://dx.doi.org/10.1109/2.161279
- R. Mitchell and J. McKim, Design by Contract: By Example, Chapters 1 and 2.
LAB: Identify "defensive" classes, and refactor into "contract form" (2)
- Thursday - Depending on Interfaces, not Implementations
- Robert C. Martin, "The Dependency Inversion Principle", C++ Report, May 1996.
- Chapter 1: Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates: Head First Design Patterns, O'Reilly Media, 2004 [LINK]
LAB: Identify classes (implementations) that should not be depended upon, and refactor them and their clients to depend on interfaces instead. (2)
- Thursday: Micro-Architecture
- E. Gamma, R. Helm, R. Johnson and J. Vlissides,
Patterns: Abstraction and Reuse of Object-Oriented Design. In
Proceedings of ECOOP '93, 1993.
More information on
patterns is available here.
- K.J. Sullivan and D. Notkin, Reconciling Environment Integration and
Component Independence, Proceedings of the SIGSOFT '90 Fourth
Symposium on Software Development Environments, December, 1990.
- OPTIONAL/HELPER: Chapter 2 (Observer): Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates: Head First Design Patterns, O'Reilly Media, 2004 [LINK]
- OPTIONAL/HELPER: Chapter 7 (Adapter only): Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates: Head First Design Patterns, O'Reilly Media, 2004 [LINK]
LAB: Identify information distribution apropos of design patterns and refactor (2)
- Thursday: Design Modelling
LAB: Apply conceptual modelling to reveal design flaws. Propose an improved conceptual model.
LAB: Document ForkHub's architecture and critique its strengths and weaknesses.
- Thursday: Crosscutting and Aspect-Oriented Programming
- G. Kiczales, Aspect Oriented Programming: Radical Research in Modularity (video), Google TechTalk, May 16, 2006.
- G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes,
J. M. Loingtier, and J. Irwin, Aspect-Oriented
Programming, 11th European Conference on Object-Oriented
Programming, Springer-Verlag, pp. 220-242, June, 1997. (optional)
- Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., and Griswold, W. 2001. Getting started with ASPECTJ. Commun. ACM 44, 10 (Oct. 2001), 59-65. DOI= http://doi.acm.org/10.1145/383845.383858 (optional)
- Sullivan, K., Griswold, W., Rajan, H., Song, Y., Cai, Y., Shonle, M., and Tewari, N. 2010. Modular aspect-oriented design with XPIs. ACM Trans. Softw. Eng. Methodol. 20, 2 (Aug. 2010), 1-42. DOI= http://doi.acm.org/10.1145/1824760.1824762
- LAB: Employ AspectJ in ForkHub to better manage crosscutting concerns, bringing the application into better ``architectural compliance''
- Robert C. Martin The Open-Closed Principle,
C++ Report, January 1996.
- G. Kiczales, Why Black Boxes are so Hard to Resuse (video), University Video Communications, October 1994.
- G. Kiczales,
Beyond the Black Box: Open Implementation. Software, IEEE,
January 1996. (alternative to video, might be faster)
- G. Kiczales, J. Lamping, C.V. Lopes, C. Maeda, A. Mendhekar, and G.
Murphy, Open Implementation Design Guidelines, Proceedings of the 19th
International Conference on Software Engineering, pp. 481-490,
April 1997. LINK
LAB: Identify use and/or need for "open" classes and refactor into an OI design (2)
- Thursday - Closing Lecture (readings optional, for reference)
- D.L. Parnas, G. Handzel, and H. Wurges, Design and Specification of the
Minimal Subset of an Operating System Family, Transactions on
Software Engineering, IEEE, SE-2, December 1976. Page
- Chapter 2 of: C.Y. Baldwin and K.B. Clark, Design Rules: The Power of Modularity, vol. 1, MIT Press, 2000.
- Chapter 3 of: C.Y. Baldwin and K.B. Clark, Design Rules: The Power of Modularity, vol. 1, MIT Press, 2000.
- Sullivan, K. J., Griswold, W. G., Cai, Y., and Hallen, B. 2001. The structure and value of modularity in software design. In Proceedings of the 8th European Software Engineering Conference Held Jointly with 9th ACM SIGSOFT international Symposium on Foundations of Software Engineering (Vienna, Austria, September 10 - 14, 2001). ESEC/FSE-9. ACM, New York, NY, 99-108. DOI= http://doi.acm.org/10.1145/503209.503224
Back to CSE 218 Course Page