Skip to main content

Revisiting Information Hiding: Reflections on Classical and Nonclassical Modularity

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 6813))

Abstract

What is modularity? Which kind of modularity should developers strive for? Despite decades of research on modularity, these basic questions have no definite answer. We submit that the common understanding of modularity, and in particular its notion of information hiding, is deeply rooted in classical logic. We analyze how classical modularity, based on classical logic, fails to address the needs of developers of large software systems, and encourage researchers to explore alternative visions of modularity, based on nonclassical logics, and henceforth called nonclassical modularity.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight 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

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Abadi, M., Lamport, L.: Composing specifications. ACM Trans. Program. Lang. Syst. 15, 73–132 (1993)

    Article  Google Scholar 

  2. Aldrich, J.: Open modules: Modular reasoning about advice. In: Gao, X.-X. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 144–168. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  3. Bartolomei, T.T., Czarnecki, K., Lämmel, R., van der Storm, T.: Study of an API migration for two XML APIs. In: Malloy, B., Staab, S., van den Brand, M. (eds.) SLE 2010. LNCS, vol. 6563, Springer, Heidelberg (2011)

    Google Scholar 

  4. Bloch, J.: How to design a good API and why it matters. In: Companion Int’l Conf. Object-Oriented Programming, Systems, Languages & Applications (OOPSLA), pp. 506–507. ACM, New York (2006)

    Google Scholar 

  5. Booch, G.: Object-Oriented Analysis and Design with Applications. Addison-Wesley, Reading (2007)

    MATH  Google Scholar 

  6. Borgida, A., Mylopoulos, J., Reiter, R.: On the frame problem in procedure specifications. IEEE Trans. Softw. Eng. 21, 785–798 (1995)

    Article  Google Scholar 

  7. Bremer, M.: An Introduction to Paraconsistent Logics. Peter Lang Publishing (2005)

    Google Scholar 

  8. Britton, K.H., Parker, R.A., Parnas, D.L.: A procedure for designing abstract interfaces for device interface modules. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 195–204. IEEE Press, Los Alamitos (1981)

    Google Scholar 

  9. Brooks, F.P.: The mythical man-month: After 20 years. IEEE Software 12, 57–60 (1995)

    Article  Google Scholar 

  10. Cartwright, N.: How the laws of physics lie. Clarendon Press, Oxford (1983)

    Book  Google Scholar 

  11. Clark, K.L.: Negation as failure. In: Logic and Data Bases, pp. 293–322 (1977)

    Google Scholar 

  12. Clinger, W.D.: Proper tail recursion and space efficiency. In: Proc. Conf. Programming Language Design and Implementation (PLDI), pp. 174–185. ACM, New York (1998)

    Google Scholar 

  13. Dawkins, R.: The Blind Watchmaker. Norton & Company, New York (1986)

    Google Scholar 

  14. Descartes, R.: Discourse on the Method of Rightly Conducting One’s Reason and of Seeking Truth in the Sciences (1637), http://www.gutenberg.org/etext/59

  15. DiBona, C., Ockman, S., Stone, M. (eds.): Open Sources: Voices from the Open Source Revolution. O’Reilly & Associates, Inc., Sebastopol (1999)

    MATH  Google Scholar 

  16. Dijkstra, E.W.: The structure of “THE”-multiprogramming system. In: Proc. ACM Symposium on Operating System Principles, pp. 10.1–10.6. ACM, New York (1967)

    Google Scholar 

  17. Dijkstra, E.W.: EWD 447: On the role of scientific thought. In: Selected Writings on Computing: A Personal Perspective, pp. 60–66. Springer, Heidelberg (1982)

    Chapter  Google Scholar 

  18. Ernst, E.: Method mixins. In: Proc. Net.ObjectDays/GSEM, pp. 145–161. GI (2005)

    Google Scholar 

  19. Ernst, M.D., Cockrell, J., Griswold, W.G., Notkin, D.: Dynamically discovering likely program invariants to support program evolution. IEEE Trans. Softw. Eng. 27(2), 99–123 (2001)

    Article  Google Scholar 

  20. Flanagan, C., Freund, S.N., Qadeer, S., Seshia, S.A.: Modular verification of multithreaded programs. Theor. Comput. Sci. 338, 153–183 (2005)

    Article  MATH  MathSciNet  Google Scholar 

  21. Gabbay, D.: Classical vs non-classical logic. In: Handbook of Logic in Artificial Intelligence and Logic Programming, vol. 2, Oxford University Press, Oxford (1994)

    Google Scholar 

  22. Girard, J.-Y.: Linear logic. Theoretical Computer Science 50, 1–102 (1987)

    Article  MATH  MathSciNet  Google Scholar 

  23. Goguen, J.A., Thatcher, J.W., Wagner, E.G., Wright, J.B.: Initial algebra semantics and continuous algebras. J. ACM 24(1), 68–95 (1977)

    Article  MATH  MathSciNet  Google Scholar 

  24. Hartmann, S., Frigg, R.: Scientific models. In: Sarkar, S., Pfeifer, J. (eds.) The Philosophy of Science: An Encyclopedia, vol. 2, pp. 740–749. Routledge, New York (2005)

    Google Scholar 

  25. Hebb, D.: The organization of behavior. John Wiley & Sons, Chichester (1949)

    Google Scholar 

  26. Henkel, J., Diwan, A.: Discovering algebraic specifications from Java classes. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, pp. 431–456. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  27. Hinman, P.: Fundamentals of Mathematical Logic. A K Peters, Wellesley (2005)

    MATH  Google Scholar 

  28. Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580 (1969)

    Article  MATH  Google Scholar 

  29. Janzen, D., De Volder, K.: Programming with crosscutting effective views. In: Vetta, A. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 197–220. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  30. Kästner, C., Apel, S.: Virtual separation of concerns – A second chance for preprocessors. Journal of Object Technology (JOT) 8(6), 59–78 (2009)

    Article  Google Scholar 

  31. Kiczales, G., Lamping, J., Lopes, C.V., Maeda, C., Mendhekar, A., Murphy, G.: Open implementation design guidelines. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 481–490. ACM, New York (1997)

    Chapter  Google Scholar 

  32. Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C.V., Loingtier, J.-M., Irwin, J.: Aspect-oriented programming. In: Aksit, M., Auletta, V. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  33. Kiczales, G., Mezini, M.: Aspect-oriented programming and modular reasoning. In: ICSE, pp. 49–58. ACM, New York (2005)

    Google Scholar 

  34. Kienzle, J., Liu, H.: AOP: Does It Make Sense? The Case of Concurrency and Failures. In: Deng, T. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 37–121. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  35. Klusener, S., Lämmel, R., Verhoef, C.: Architectural Modifications to Deployed Software. Science of Computer Programming 54, 143–211 (2005)

    Article  MATH  MathSciNet  Google Scholar 

  36. Kroah-Hartman, G.: The Linux kernel driver interface, http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/stable_api_nonsense.txt

  37. Lakatos, I.: A renaissance of empiricism in the recent philosophy of mathematics. Br. J. Philos. Sci. 27(3), 201–223 (1976)

    Article  MATH  MathSciNet  Google Scholar 

  38. Lanier, J.: One half of a manifesto: Why stupid software will save the future from neo-darwinian machines. wired 8.12 (2000)

    Google Scholar 

  39. Laymon, R.: Idealizations and the testing of theories by experimentation. In: Achinstein, P., Hannaway, O. (eds.) Observation Experiment and Hypothesis in Modern Physical Science, pp. 147–173. MIT Press, Cambridge (1985)

    Google Scholar 

  40. Li, H., Krishnamurthi, S., Fisler, K.: Verifying cross-cutting features as open systems. SIGSOFT Softw. Eng. Notes 27, 89–98 (2002)

    Article  Google Scholar 

  41. Liskov, B.H., Wing, J.M.: A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16(6), 1811–1841 (1994)

    Article  Google Scholar 

  42. Madsen, O.L., Møller-Pedersen, B.: A unified approach to modeling and programming. In: Petriu, D.C., Rouquette, N., Haugen, Ø. (eds.) MODELS 2010. LNCS, vol. 6394, pp. 1–15. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  43. Manna, Z., Pnueli, A.: The temporal logic of reactive and concurrent systems. Springer, Heidelberg (1992)

    Book  MATH  Google Scholar 

  44. McCarthy, J.: Circumscription—a form of non-monotonic reasoning. Artificial Intelligence 13, 27–39 (1980)

    Article  MATH  MathSciNet  Google Scholar 

  45. McCarthy, J., Hayes, P.J.: Some philosophical problems from the standpoint of artificial intelligence. Machine Intelligence 4, 463–502 (1969)

    MATH  Google Scholar 

  46. McMullin, E.: Galilean Idealization. Studies in the History and Philosophy of Science 16, 247–273 (1985)

    Article  MathSciNet  Google Scholar 

  47. Miikkulainen, R., Bednar, J.A., Choe, Y., Sirosh, J.: Computational Maps in the Visual Cortex. Springer, Heidelberg (2005)

    Google Scholar 

  48. Mitchell, J.C., Plotkin, G.D.: Abstract types have existential type. ACM Trans. Program. Lang. Syst. 10(3), 470–502 (1988)

    Article  Google Scholar 

  49. Montague, R.: Universal grammar. In: Formal Philosophy, pp. 222–246 (1970)

    Google Scholar 

  50. Morris, J.H.: Lambda-Calculus Models of Programming Languages. PhD thesis, Massachusetts Institute of Technology (1968)

    Google Scholar 

  51. Noble, J., Vitek, J., Potter, J.: Flexible alias protection. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 158–185. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  52. Object Management Group (OMG). Object management architecture guide, ed 2.0. (1992)

    Google Scholar 

  53. O’Hearn, P.W., David, Pym, D.J.: The logic of bunched implications. Bulletin of Symbolic Logic 5, 215–244 (1999)

    Article  MATH  MathSciNet  Google Scholar 

  54. O’Hearn, P.W., Yang, H., Reynolds, J.C.: Separation and information hiding. In: Proc. Symp. Principles of Programming Languages (POPL), pp. 268–280. ACM, New York (2004)

    Google Scholar 

  55. Ossher, H., Tarr, P.: On the need for on-demand remodularization. In: Position Paper for Aspects and Dimensions of Concern Workshop, ECOOP, Citeseer (2000)

    Google Scholar 

  56. Ostermann, K.: Reasoning about aspects with common sense. In: Proc. Int’l Conf. Aspect-Oriented Software Development (AOSD), pp. 48–59. ACM, New York (2008)

    Google Scholar 

  57. Parkinson, M.J., Bierman, G.M.: Separation logic, abstraction and inheritance. In: Proc. Symp. Principles of Programming Languages (POPL), pp. 75–86. ACM, New York (2008)

    Google Scholar 

  58. Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972)

    Article  Google Scholar 

  59. Parnas, D.L.: On a “buzzword”: Hierarchical structure. In: Proceedings of IFIP Congress 1974, pp. 336–339. North-Holland, Amsterdam (1974)

    Google Scholar 

  60. Parnas, D.L.: Use of abstract interfaces in the development of software for embedded computer systems. Technical report, NRL Report No. 8047 (1977)

    Google Scholar 

  61. Parnas, D.L.: The secret history of information hiding. In: Software Pioneers: Contributions to Software Engineering, pp. 399–409. Springer, Heidelberg (2002)

    Google Scholar 

  62. Parnas, D.L.: Precise documentation: The key to better software. In: Nanz, S. (ed.) The Future of Software Engineering, pp. 125–148. Springer, Heidelberg (2011)

    Chapter  Google Scholar 

  63. Parnas, D.L., Clements, P.C., Weiss, D.M.: The modular structure of complex systems. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 408–417. IEEE Press, Los Alamitos (1984)

    Google Scholar 

  64. Popper, K.R.: Conjectures and refutations: The growth of scientific knowledge. Harper & Row, New York (1968)

    Google Scholar 

  65. Reiter, R.: On closed world data bases. In: Logic and Data Bases, pp. 55–76 (1977)

    Google Scholar 

  66. Reiter, R.: A logic for default reasoning, pp. 68–93. Morgan Kaufmann Publishers Inc., San Francisco (1987)

    Google Scholar 

  67. Reynolds, J.C.: Types, abstraction and parametric polymorphism. In: IFIP Congress, pp. 513–523 (1983)

    Google Scholar 

  68. Reynolds, J.C.: Separation logic: A logic for shared mutable data structures. In: Proc. Symposium on Logic in Computer Science (LICS), pp. 55–74. IEEE Computer Society, Los Alamitos (2002)

    Chapter  Google Scholar 

  69. Rinard, M.C., Cadar, C., Dumitran, D., Roy, D.M., Leu, T., Beebee, W.S.: Enhancing server availability and security through failure-oblivious computing. In: Proc. Symposium on Operating Systems Design & Implementation (OSDI), pp. 303–316 (2004)

    Google Scholar 

  70. Robillard, M., Murphy, G.C.: Concern graphs: Finding and describing concerns using structural program dependencies. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 406–416. ACM, New York (2002)

    Google Scholar 

  71. Ross, S.D.: Plato’s Theory of Ideas. Oxford University Press, Oxford (1951)

    Google Scholar 

  72. Roy, P.V., Haridi, S.: Concepts, Techniques, and Models of Computer Programming. MIT Press, Cambridge (2004)

    Google Scholar 

  73. Sandewall, E.: Nonmonotonic inference rules for multiple inheritance with exceptions. In: Expert systems, pp. 239–247. IEEE Computer Society Press, Los Alamitos (1990)

    Google Scholar 

  74. Smith, B.C.: Reflection and semantics in LISP. In: Proc. Symp. Principles of Programming Languages (POPL), pp. 23–35. ACM, New York (1984)

    Google Scholar 

  75. Stata, R., Guttag, J.V.: Modular reasoning in the presence of subclassing. In: Proc. Conf. Object-Oriented Programming, Systems, Languages & Applications (OOPSLA), pp. 200–214. ACM, New York (1995)

    Google Scholar 

  76. Steele, G.L.: Debunking the “expensive procedure call” myth or, procedure call implementations considered harmful or, LAMDBA: The ultimate GOTO. Technical report, Massachusetts Institute of Technology (1977)

    Google Scholar 

  77. Sternberg, R.: Cognitive Psychology. Thomson Wadsworth (2008)

    Google Scholar 

  78. Stoy, J.E.: Denotational Semantics: The Scott-Strachey Approach to Programming Language Semantics. MIT Press, Cambridge (1977)

    MATH  Google Scholar 

  79. Tanenbaum, A.S., Herder, J.N., Bos, H.: Can we make operating systems reliable and secure? Computer 39, 44–51 (2006)

    Article  Google Scholar 

  80. Tarr, P., Ossher, H., Harrison, W., Sutton Jr., S.M.: N degrees of separation: Multi-dimensional separation of concerns. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 107–119. IEEE Computer Society, Los Alamitos (1999)

    Google Scholar 

  81. Wright, A.K., Felleisen, M.: A syntactic approach to type soundness. Inf. Comput. 115(1), 38–94 (1994)

    Article  MATH  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Ostermann, K., Giarrusso, P.G., Kästner, C., Rendel, T. (2011). Revisiting Information Hiding: Reflections on Classical and Nonclassical Modularity. In: Mezini, M. (eds) ECOOP 2011 – Object-Oriented Programming. ECOOP 2011. Lecture Notes in Computer Science, vol 6813. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-22655-7_8

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-22655-7_8

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-22654-0

  • Online ISBN: 978-3-642-22655-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics