Engr 691-06: Special Topics in Engineering Science
(Software Families)
Fall 2011
Lecture Notes
- Classic papers by Frederick P. Brooks, Jr.
- "No Silver Bullet--Essence and Accidents of Software
Engineering," IEEE Computer, April 1987.
- " 'No Silver Bullet' Refired," Chapter 17 in The Mythical
Man Month: Essays on Software Engineering, Anniversary
Edition, Addison Wesley, 1995.
- Classic papers by David Parnas. In addition to the references
listed below, these are reprinted in the book: D. M. Hoffman and
D. M. Weiss, Editors. Software Fundamentals: Collected
Papers by David L. Parnas, Addison-Wesley, 2001.
- D. L. Parnas. "On the Criteria to Be Used in Decomposing Systems
into Modules," Communications of the ACM, Vol. 15,
No. 12, pp. 1053-1058, December 1972.
(Chapter 7 of Software Fundamentals.)
- K. H. Britton, R. A. Parker, and D. L. Parnas. "A Procedure for
Designing Abstract Interfaces for Device Interface Modules,"
Proceedings of the Fifth International Conference on
Software Engineering, pp. 195-204, March 1981.
(Chapter 15 of Software Fundamentals.)
- D. L. Parnas. "On the Design and Development of Program
Families," IEEE Transactions on Software
Engineering, Vol. SE-2, No. 1, pp. 1-9, March 1976.
(Chapter 10 of Software Fundamentals.)
- Supplemenatary reference for "Program Families" paper:
N. Wirth. "Program Development by Stepwise Refinement,"
Communications of the ACM, Vol. 14, No. 4, April
1971.
- D. L. Parnas. "Designing Software for Ease of Extension and
Contraction," IEEE Transactions on Software
Engineering, Vol. SE-5, No. 1, pp. 128-138, March 1979.
(Chapter 14 of Software Fundamentals.)
- (Not explicitly disucssed) D. L. Parnas, P. C. Clements, and
D. M. Weiss. "The Modular Structure of Complex Systems,"
IEEE Transactions on Software Engineering,
Vol. SE-11, No. 3, pp. 259-266, March 1985.
Chapter 16 of Software Fundamentals.)
- (Not explicitly discussed) Cunningham group papers about the Parnas ideas. These are for
reference only.
- Advocacy paper: H. C. Cunningham, C. Zhang, and Y. Liu. "Keeping
Secrets Within a Family: Rediscovering Parnas," In
Proceedings of the International Conference on Software
Engineering Research and Practice (SERP), pp. 712-718,
CSREA Press, June 2004.
[preprint PDF]
[presentation]
- Paper about previous version of course: H. C. Cunningham,
P. Tadepalli, and Y. Liu. "Secrets, Hot Spots, and
Generalization: Preparing Students to Design Software Families,"
Journal of Computing Sciences in Colleges, Vol. 20,
No. 6, pp. 118-124, CCSC, June 2005.
[preprint PDF]
- Cunningham group "Using Classic Problems..." paper.
- H. C. Cunningham, Y. Liu, and C. Zhang. "Using Classic Problems
to Teach Java Framework Design," Science of Computer
Programming, Special Issue on Principles and Practice of
Programming in Java (PPPJ 2004), Vol. 59, No. 1-2, pp. 147-169,
January 2006. doi: 10.10.16/j.scico.2005.07.009.
[preprint PDF]
- Related tutorial: H. C. Cunningham, Y. Liu, and
C. Zhang. "Teaching Framework Design Using Classic Problems,"
Journal of Computing Sciences in Colleges, Vol. 21,
No. 5, pp. 10-12, CCSC, May 2006. [abstract]
[presentation]
- (For reference) E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design
Patterns: Elements of Reusable Object-Oriented Software,
Addison-Wesley, 1995.
- "Template Method," Part of Chapter 5 on "Behavioral Patterns,"
pages 325-330.
Slides on Template Method pattern, prepared by Yi Liu and
Conrad Cunningham.
- "Strategy," Part of Chapter 5 on "Behavioral Patterns," pages
315-324.
Slides on Strategy pattern, prepared by Yi Liu and Conrad
Cunningham.
- "Factory Method," Part of Chapter 3 on "Creational Patterns," pages 107-116.
Slides on Factory Method pattern, prepared by Yi Liu and
Conrad Cunningham.
- Additional pattern references:
- GoF, "Composite," pages 163-174.
Grand, "Composite," pages 165-174.
- GoF, "Visitor," pages 331-344.
Grand, "Visitor," pages 385-395.
- Scala Divide-and-Conquer Framework, similar to the Java framework
in the "Using Classic Problems..." paper.
- Template-based Divide-and-Conquer Framework
(DivConqTemplate):
Scala source]
Strategy-based Divide-and-Conquer Framework (DivConqStrategy):
[Scala source]
Traits for Problem and Solution descriptions for both frameworks (DivConqProblemSolution):
[Scala source]
- Application of Template-based framework to QuickSort (QuickSortTemplateApp):
[Scala source]
[program output]
Application of Strategy-based framework to QuickSort (QuickSortStrategyApp):
[Scala source]
[program output]
Descriptor for QuickSort state for both QuickSort applications (QuickSortDesc):
[Scala source]
- Scala Binary Tree Framework, similar to the Java framework in the
"Using Classic Problems..." paper:
- Straightforward translation of the Java program to Scala.
Top-level framework (BinTreeFramework) [Scala source]
Second-level Euler tour framework (EulerTourVisitor)
[Scala source]
Second-level mapping framework (MappingVisitor)
[Scala source]
Second-level breadth-first framework (BreadthFirstVisitor)
[Scala source]
Application of BinTree frameworks (BinTreeTest)
[Scala source]
- Generic implementation of BinTree framework in Scala.
Top-level framework (BinTreeFramework)
[Scala source]
Second-level Euler tour framework (EulerTourVisitor)
[Scala source]
Second-level mapping framework (MappingVisitor)
[Scala source]
Second-level breadth-first framework (BreadthFirstVisitor)
[Scala source]
Application of BinTree frameworks (BinTreeTest)
[Scala source]
- R. E. Johnson and B. Foote. "Designing Reusable Classes",
Journal of Object-Oriented Programming, Vol. 1,
No. 2, pages 22-35, June/July 1988. Also available as
http://www.laputan.org/drc/drc.html.
- D. Roberts and R. Johnson. "Patterns for Evolving Frameworks,"
Chapter 26 in R. Martin, D. Riehle, and F. Buschmann, editors,
Pattern Languages of Program Design 3, pp. 470-486,
Addison Wesley, 1998.
- Systematic generalization.
- H. A. Schmid. "Framework Design by Systematic Generalization,"
Chapter 15 in M. E. Fayad and R. E. Johnson, editors,
Domain-Specific Application Frameworks, pp. 353-378,
Wiley, 2000.
- (For referenece only) H. A. Schmid. "OSEFA: Framework for
Manufacturing", Chapter 4 in M. E. Fayad, D. C. Schmidt, and
R. E. Johnson, editors, Building Application Frameworks:
Object-Oriented Foundations of Framework Design, pp. 43-65,
Wiley, 1999.
- (For reference only) H. A. Schmid. "Creating Applications From
Components: A Manufacturing Framework Design," IEEE
Software, Vol. 13, No. 6, November 1997.
- D. Garlan, R. Allen, and J. Ockerbloom. "Architectural Mismatch:
Why Reuse is So Hard," IEEE Software, Vol. 12,
No. 6, November 1995. [instructor's notes]
- Mary Shaw. "Some Patterns for Software Architecture," In John M
Vlissides, James O. Coplien, and Norman L. Kerth, editors,
Pattern Languages of Program Design 2, Addison
Wesley, 1996, pages 255-270.
ITEMS FROM PREVIOUS SEMESTERS
- J. Vlissides. "Designing with Patterns", In Pattern
Hatching: Design Patterns Applied, Addison-Wesley, 1998.
Slides prepared by Yi Liu and Conrad Cunningham for Software
Architecture class.
- N. Soundarajan and S. Fridella. "Framework-Based Applications:
From Incremental Development ot Incremental Reasoning," In
Proceedings of the International Conferernce on Software
Reuse (ICSR-6), LNCSD 1844, pp. 100-116, Springer-Verlag,
2000.
- Mark Ardis, Nigel Daley, Daniel Hoffman, Harvey Siy, and David
Weiss. "Software Product Lines: A Case Study," Software
Practice and Experience, Vol. 30, No. 7,
pp. 825-847.2000.
- H. C. Cunningham and J. Wang. "Building a Layered Framework for
the Table Abstraction," In Proceedings of the ACM Symposium on
Applied Computing, pp. 668-674, March 2001.
[preprint PDF]
[related presentation]
Variant paper: H. C. Cunningham, Y. Liu, and J. Wang. "Designing
a Flexible Framework for a Table Abstraction," Draft book chapter,
November 2007
[ PDF]
[related presentation]
- Cunningham notes:
Introduction to Patterns
- Cunningham notes:
Pipes and Filters Architectural Pattern
- Cunningham papers on function generalization:
- H. C. Cunningham and P. Tadepalli. "Using Function Generalization
to Design a Cosequential Processing Framework," In
Proceedings of the 39th Hawaii International Conference on
System Sciences, 10 pages, IEEE, January 2006.
[preprint PDF]
- H. C. Cunningham, Y. Liu, and P. Tadepalli. "Framework Design
Using Function Generalization: A Binary Tree Traversal Case
Study," In Proceedings of the ACM SouthEast
Conference, pp. 312-318, March 2006.
[preprint PDF]
- H. C. Cunningham. "Framework Design by Function Generalization,"
Seminar presentation, Department of Computer and Information
Science, University of Mississippi, October 2006.
[presentation]
UP to ENGR 691 root document?
Copyright © 2011, H. Conrad Cunningham
Last modified: Tue, 8 Nov 2011