Abstract
In a provocative essay from the mid-1980s, Brooks asserts that “building software will always be hard” because software systems are inherently complex, must conform to all sorts of physical, human, and software interfaces, must change as the system requirements evolve, and are inherently invisible entities (Brooks 1986). A decade later Brooks again observes, “The best way to attack the essence of building software is not to build it at all” (Brooks 1995). That is, software engineers should reuse both software and, more importantly, software designs.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Britton KH, Parker RA, Parnas DL (1981) A procedure for designing abstract interfaces for device interface modules, In: Proceedings of the 5th International Conference on Software Engineering, pp 95-204.
Brooks FP Jr (1986) No silver bullet—Essence and accidents in software engineering, In: Information Processing, Elsevier Science, pp 1069-1076.
Brooks FP Jr (1995) “No Silver Bullet” refired, Chapter 17, In: The mythical man-month, Anniversary edn, Addison-Wesley.
Buschmann F, Meunier R, Rohnert H, Sommerlad P, Stal M (1996) Pattern-oriented software architecture: A system of patterns, Wiley.
Coplien J, Hoffman D, Weiss D (1998) Commonality and variability in software engineering, IEEE Software, vol 15, no 6, pp 37-45.
Cunningham HC, Wang J (2001) Building a layered framework for the table abstraction, In: Proceedings of the ACM Symposium on Applied Computing, pp 668-674.
Cunningham HC, Tadepalli P (2006) Using function generalization to design a cosequential processing framework, In: Proceedings of the 39th Hawaii International Conference on System Sciences, IEEE, 10 pages.
Cunningham HC, Zhang C, Liu Y (2004) Keeping secrets within a family: Rediscovering Parnas. In: Proceedings of the International Conference on Software Engineering Research and Practice (SERP), CSREA Press, pp 712-718.
Cunningham HC, Liu Y, Zhang C (2006a) Using classic problems to teach Java framework design. Science of Computer Programming, vol 59, pp 147-169.
Cunningham HC, Liu Y, Tadepalli P (2006b) Framework design using function generalization: A binary tree traversal case study. In: Proceedings of the ACM SouthEast Conference, pp 312-318.
Fayad ME, Schmidt DC, Johnson RE (1999) Application frameworks, In: Fayad ME, Schmidt DC, Johnson RE (eds) Building application frameworks: Object-oriented foundations of framework design, Wiley, pp 3-27.
Folk MJ, Zoellick B, Riccardi G (1998) File structures: An object-oriented approach with C++, Addison Wesley.
Gamma R, Helm R, Johnson R, Vlissides J (1995) Design patterns: Elements of reusable object-oriented software, Addison Wesley.
Goodrich MT, Tomassia R (1998) Data structures and algorithms in Java, Wiley.
Grand M (1998) Patterns in Java, vol 1, Wiley.
Guttag JV (1977) Abstract data types and the development of data structures, Communications of the ACM, vol 20, no 6, pp 396-404.
Hallstrom J, Soundarajan N (2002) Incremental development using object-oriented frameworks: A case study, Journal of Object Technology, Special issue TOOLS USA 2002, vol 1, no 3, pp 189-205.
Hoare CAR (1969) An axiomatic basis for computer programming, Communications of the ACM, vol 12, no 10, pp 45-58.
Hoare CAR (1972) Proofs of correctness of data representations, Acta Informatica, vol 1, pp 271-281.
Johnson RE, Foote B (1988) Designing reusable classes, Journal of Object-Oriented Programming, vol 1, no 2, pp 22-35.
Liskov B, Wing J (1994) A behavioral notion of subtyping, ACM Transactions on Programming Languages and Systems, vol 16, pp 1811-1840.
Mitchell B, McKim J (2002) Design by contract, by example. Addison-Wesley.
Meyer B (1992) Applying design by contract. IEEE Computer, pp 40- 51.
Meyer B (1997) Object-oriented software construction, second edn, Prentice Hall PTR.
Odersky M, Altherr P, Cremet V, Dragos I, Dubochet G. Emir B, McDirmid S, Micheloud S, Mihaylov N, Schinz M,. Stenman E, Spoon L, Zenger M (2006) An overview of the Scala programming language, second edn, LAMP-REPORT-2006-001, Ecole Polytechnique Federale De Lausanne (EPFL), 20 pages.
Parnas DL (1972) On the criteria to be used in decomposing systems into modules, Communications of the ACM, vol 15, no 12, pp 1053-1058.
Parnas DL (1976) On the design and development of program families, IEEE Transaction on Software Engineering, vol SE-2, pp 1-9.
Parnas DL (1978) Some software engineering principles. Infotech State of the Art Report on Structured Analysis and Design, Infotech International, 10 pages, 1978. Reprinted in: Hoffman DM, Weiss DM (eds) (2000) Software fundamentals: Collected papers by David L. Parnas, Addison-Wesley.
Peyton Jones S (2003) Haskell 98 language and libraries: The revised report, Cambridge University Press.
Pree W (1995) Design patterns for object-oriented software development, Addison-Wesley.
Roberts D, Johnson R (1998) Patterns for evolving frameworks, In: Martin R, Riehle D, Buschmann F (eds) Pattern languages of program design 3, Addison-Wesley, pp.471-486.
Schmid HA (1996) Creating applications from components: A manufacturing framework, IEEE Software, vol 13, no 6, pp 67-75.
Schmid HA (1999) Framework design by systematic generalization, In: Fayad ME, Schmidt DC, Johnson RE (eds) Building application frameworks: Object-oriented foundations of framework design, Wiley, pp 353–378.
Soundarajan N, Fridella S (2000) Framework-based applications: from incremental development to incremental reasoning, In: Proceedings of the 6th Interantional Confernce on Software Reuse (ICSR), LNCS 1844, Springer-Verlag, pp 100-116.
Shaw M (1996) Some patterns for software architecture, In: Vlissides JM, Coplien JO, Kerth NL (eds), Pattern languages of program design 2, Addison Wesley.
Sridhar MA (1996) Building portable C++ applications with YACL, Addison-Wesley.
Thomas D, Fowler C, Hunt A (2005) Programming Ruby: The pragmatic programmer’s guide, second edition, The Pragmatic Bookshelf.
Wang J (2000) A flexible Java library for table data and file structures, Technical Report UMCIS-2000-07, Department of Computer and Information Science, University of Mississippi.
Weiss DM, Lai CTR (1999) Software product-line engineering: A family-based software development process, Addison-Wesley.
Woolf B (1998) Null object. In: Martin R, Riehle D, Buschmann F (eds), Pattern languages of program design 3, Addison-Wesley, pp. 5-18.
Acknowledgements
The preparation of an earlier version of this chapter was supported, in part, by a grant from Acxiom Corporation titled “An Acxiom Laboratory for Software Architecture and Component Engineering (ALSACE).” The authors thank Robert Cook and “Jennifer” Jie Xu for their suggestions for improvements to the paper (Cunningham and Wang 2001). We also thank the two anonymous reviewers, the editors, Chuck Jenkins, and Pallavi Tadepalli for their useful comments on this chapter. As this chapter was being revised, the first author benefited from discussions about various aspects of the framework design with Jenkins. Pallavi Tadepalli is a collaborator on the related function generalization research (Cunningham and Tadepalli 2006; Cunningham et al. 2006b) and Cuihua Zhang is involved with work on the educational aspects of software patterns and framework design (Cunningham et al. 2004, 2006a). This research also benefited from insights provided by projects completed by the first author’s former students Wei Feng on relative files, Jian Hu on Table libraries, and Deep Sharma on B-tree libraries.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer Science+Business Media, LLC
About this chapter
Cite this chapter
Cunningham, H.C., Liu, Y., Wang, J. (2009). Designing a Flexible Framework for a Table Abstraction. In: Chan, Y., Talburt, J., Talley, T. (eds) Data Engineering. International Series in Operations Research & Management Science, vol 132. Springer, Boston, MA. https://doi.org/10.1007/978-1-4419-0176-7_13
Download citation
DOI: https://doi.org/10.1007/978-1-4419-0176-7_13
Published:
Publisher Name: Springer, Boston, MA
Print ISBN: 978-1-4419-0175-0
Online ISBN: 978-1-4419-0176-7
eBook Packages: Computer ScienceComputer Science (R0)