Skip to main content

Designing a Flexible Framework for a Table Abstraction

  • Chapter
  • First Online:
Data Engineering

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 89.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 119.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 169.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

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.

    Google Scholar 

  • Brooks FP Jr (1986) No silver bullet—Essence and accidents in software engineering, In: Information Processing, Elsevier Science, pp 1069-1076.

    Google Scholar 

  • 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.

    Google Scholar 

  • Coplien J, Hoffman D, Weiss D (1998) Commonality and variability in software engineering, IEEE Software, vol 15, no 6, pp 37-45.

    Article  Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • Cunningham HC, Liu Y, Zhang C (2006a) Using classic problems to teach Java framework design. Science of Computer Programming, vol 59, pp 147-169.

    Article  MathSciNet  MATH  Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • Folk MJ, Zoellick B, Riccardi G (1998) File structures: An object-oriented approach with C++, Addison Wesley.

    Google Scholar 

  • Gamma R, Helm R, Johnson R, Vlissides J (1995) Design patterns: Elements of reusable object-oriented software, Addison Wesley.

    Google Scholar 

  • Goodrich MT, Tomassia R (1998) Data structures and algorithms in Java, Wiley.

    Google Scholar 

  • Grand M (1998) Patterns in Java, vol 1, Wiley.

    Google Scholar 

  • Guttag JV (1977) Abstract data types and the development of data structures, Communications of the ACM, vol 20, no 6, pp 396-404.

    Article  MATH  Google Scholar 

  • 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.

    Google Scholar 

  • Hoare CAR (1969) An axiomatic basis for computer programming, Communications of the ACM, vol 12, no 10, pp 45-58.

    Article  Google Scholar 

  • Hoare CAR (1972) Proofs of correctness of data representations, Acta Informatica, vol 1, pp 271-281.

    Article  MATH  Google Scholar 

  • Johnson RE, Foote B (1988) Designing reusable classes, Journal of Object-Oriented Programming, vol 1, no 2, pp 22-35.

    Google Scholar 

  • Liskov B, Wing J (1994) A behavioral notion of subtyping, ACM Transactions on Programming Languages and Systems, vol 16, pp 1811-1840.

    Article  Google Scholar 

  • Mitchell B, McKim J (2002) Design by contract, by example. Addison-Wesley.

    Google Scholar 

  • Meyer B (1992) Applying design by contract. IEEE Computer, pp 40- 51.

    Google Scholar 

  • Meyer B (1997) Object-oriented software construction, second edn, Prentice Hall PTR.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Article  Google Scholar 

  • Parnas DL (1976) On the design and development of program families, IEEE Transaction on Software Engineering, vol SE-2, pp 1-9.

    Article  Google Scholar 

  • 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.

    Google Scholar 

  • Peyton Jones S (2003) Haskell 98 language and libraries: The revised report, Cambridge University Press.

    Google Scholar 

  • Pree W (1995) Design patterns for object-oriented software development, Addison-Wesley.

    Google Scholar 

  • 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.

    Google Scholar 

  • Schmid HA (1996) Creating applications from components: A manufacturing framework, IEEE Software, vol 13, no 6, pp 67-75.

    Article  Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • Shaw M (1996) Some patterns for software architecture, In: Vlissides JM, Coplien JO, Kerth NL (eds), Pattern languages of program design 2, Addison Wesley.

    Google Scholar 

  • Sridhar MA (1996) Building portable C++ applications with YACL, Addison-Wesley.

    Google Scholar 

  • Thomas D, Fowler C, Hunt A (2005) Programming Ruby: The pragmatic programmer’s guide, second edition, The Pragmatic Bookshelf.

    Google Scholar 

  • 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.

    Google Scholar 

  • Weiss DM, Lai CTR (1999) Software product-line engineering: A family-based software development process, Addison-Wesley.

    Google Scholar 

  • Woolf B (1998) Null object. In: Martin R, Riehle D, Buschmann F (eds), Pattern languages of program design 3, Addison-Wesley, pp. 5-18.

    Google Scholar 

Download references

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

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics