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 VPN. 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 (fill out one form for all four readings)
- 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 that are exposed between classes (violating DRY) and/or interwined with another design decision (violating SRP) 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 motivated.
- Thursday: Object-Oriented Design
LAB: Apply OO Design to the entire project to identify essential core SRP objects with
interfaces that sound like what that object would do to itself. Refactor the project
to extract the indicated classes.
- Thursday: Object Orientation Languages and Modularity
- (background - if OO is new to you or you're somewhat rusty; no write-up) 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
- 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
- Robert C. Martin, "The Liskov Substitution Principle", C++ Report, Nov-Dec 1996.
LAB: Apply the LSP and related concepts to the project. 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 all classes (implementations) that should not be depended upon, and refactor them and all their clients to depend on types (abstract classes or interfaces) instead. Identify which, if any, of your refactorings you think constitute an application of Strategy and say why. Details on Piazza.
- Thursday: Micro-Architecture
- Chapter 2 (Observer): Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates: Head First Design Patterns, O'Reilly Media, 2004 [LINK]
- 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 7 (Adapter only): Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates: Head First Design Patterns, O'Reilly Media, 2004 [LINK]
- OPTIONAL: 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.
LAB: Identify all "notifications" and "when's" that are appropriate for Observer pattern
and refactor accordingly. Apply MVP (introduce Mediators) so that "base" objects don't
have to be Observers.
- Thursday (write up the two Kiczales items together)
- Robert C. Martin The Open-Closed Principle,
C++ Report, January 1996. [on Piazza]
- G. Kiczales, Why Black Boxes are so Hard to Resuse (video), University Video Communications, October 1994.
- 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 classes that need to be "open" and also easy to use and refactor them into an
Open Implementation design.
LAB: Document the system'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.
- (optional) 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
- 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 to your project to better manage crosscutting concerns, bringing the application into better ``architectural compliance''
- 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