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 - Improving the Black Box
- Robert C. Martin The Open-Closed Principle,
C++ Report, January 1996.
- G. Kiczales,
Beyond the Black Box: Open Implementation. Software, IEEE,
- 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: 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.
- Chapter 1: 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
- Santiago Prez De Rosso and Daniel Jackson, "What's Wrong with GIT? A Conceptual Design Analysis", Onward! 2013.
- Tuesday - NO CLASS
LAB: Apply conceptual modelling to reveal design flaws. Propose an improved conceptual model.
- Thursday: Crosscutting and Aspect-Oriented Programming
- 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.
- 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
- LAB: Employ AspectJ in FBReader to better manage crosscutting concerns, bringing the application into better ``architectural compliance''
- Thursday - NO CLASS
- Tuesday: AOP done "right"
- 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
- 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