Revisiting Information Hiding: Reflections on Classical and Nonclassical Modularity

  • Klaus Ostermann
  • Paolo G. Giarrusso
  • Christian Kästner
  • Tillmann Rendel
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6813)


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.


Classical Logic Inductive Reasoning Information Hiding Paraconsistent Logic Default Reasoning 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Abadi, M., Lamport, L.: Composing specifications. ACM Trans. Program. Lang. Syst. 15, 73–132 (1993)CrossRefGoogle Scholar
  2. 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)CrossRefGoogle Scholar
  3. 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. 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. 5.
    Booch, G.: Object-Oriented Analysis and Design with Applications. Addison-Wesley, Reading (2007)zbMATHGoogle Scholar
  6. 6.
    Borgida, A., Mylopoulos, J., Reiter, R.: On the frame problem in procedure specifications. IEEE Trans. Softw. Eng. 21, 785–798 (1995)CrossRefGoogle Scholar
  7. 7.
    Bremer, M.: An Introduction to Paraconsistent Logics. Peter Lang Publishing (2005)Google Scholar
  8. 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. 9.
    Brooks, F.P.: The mythical man-month: After 20 years. IEEE Software 12, 57–60 (1995)CrossRefGoogle Scholar
  10. 10.
    Cartwright, N.: How the laws of physics lie. Clarendon Press, Oxford (1983)CrossRefGoogle Scholar
  11. 11.
    Clark, K.L.: Negation as failure. In: Logic and Data Bases, pp. 293–322 (1977)Google Scholar
  12. 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. 13.
    Dawkins, R.: The Blind Watchmaker. Norton & Company, New York (1986)Google Scholar
  14. 14.
    Descartes, R.: Discourse on the Method of Rightly Conducting One’s Reason and of Seeking Truth in the Sciences (1637),
  15. 15.
    DiBona, C., Ockman, S., Stone, M. (eds.): Open Sources: Voices from the Open Source Revolution. O’Reilly & Associates, Inc., Sebastopol (1999)zbMATHGoogle Scholar
  16. 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. 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)CrossRefGoogle Scholar
  18. 18.
    Ernst, E.: Method mixins. In: Proc. Net.ObjectDays/GSEM, pp. 145–161. GI (2005)Google Scholar
  19. 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)CrossRefGoogle Scholar
  20. 20.
    Flanagan, C., Freund, S.N., Qadeer, S., Seshia, S.A.: Modular verification of multithreaded programs. Theor. Comput. Sci. 338, 153–183 (2005)CrossRefzbMATHMathSciNetGoogle Scholar
  21. 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. 22.
    Girard, J.-Y.: Linear logic. Theoretical Computer Science 50, 1–102 (1987)CrossRefzbMATHMathSciNetGoogle Scholar
  23. 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)CrossRefzbMATHMathSciNetGoogle Scholar
  24. 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. 25.
    Hebb, D.: The organization of behavior. John Wiley & Sons, Chichester (1949)Google Scholar
  26. 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)CrossRefGoogle Scholar
  27. 27.
    Hinman, P.: Fundamentals of Mathematical Logic. A K Peters, Wellesley (2005)zbMATHGoogle Scholar
  28. 28.
    Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580 (1969)CrossRefzbMATHGoogle Scholar
  29. 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)CrossRefGoogle Scholar
  30. 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)CrossRefGoogle Scholar
  31. 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)CrossRefGoogle Scholar
  32. 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)CrossRefGoogle Scholar
  33. 33.
    Kiczales, G., Mezini, M.: Aspect-oriented programming and modular reasoning. In: ICSE, pp. 49–58. ACM, New York (2005)Google Scholar
  34. 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)CrossRefGoogle Scholar
  35. 35.
    Klusener, S., Lämmel, R., Verhoef, C.: Architectural Modifications to Deployed Software. Science of Computer Programming 54, 143–211 (2005)CrossRefzbMATHMathSciNetGoogle Scholar
  36. 36.
  37. 37.
    Lakatos, I.: A renaissance of empiricism in the recent philosophy of mathematics. Br. J. Philos. Sci. 27(3), 201–223 (1976)CrossRefzbMATHMathSciNetGoogle Scholar
  38. 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. 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. 40.
    Li, H., Krishnamurthi, S., Fisler, K.: Verifying cross-cutting features as open systems. SIGSOFT Softw. Eng. Notes 27, 89–98 (2002)CrossRefGoogle Scholar
  41. 41.
    Liskov, B.H., Wing, J.M.: A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16(6), 1811–1841 (1994)CrossRefGoogle Scholar
  42. 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)CrossRefGoogle Scholar
  43. 43.
    Manna, Z., Pnueli, A.: The temporal logic of reactive and concurrent systems. Springer, Heidelberg (1992)CrossRefzbMATHGoogle Scholar
  44. 44.
    McCarthy, J.: Circumscription—a form of non-monotonic reasoning. Artificial Intelligence 13, 27–39 (1980)CrossRefzbMATHMathSciNetGoogle Scholar
  45. 45.
    McCarthy, J., Hayes, P.J.: Some philosophical problems from the standpoint of artificial intelligence. Machine Intelligence 4, 463–502 (1969)zbMATHGoogle Scholar
  46. 46.
    McMullin, E.: Galilean Idealization. Studies in the History and Philosophy of Science 16, 247–273 (1985)CrossRefMathSciNetGoogle Scholar
  47. 47.
    Miikkulainen, R., Bednar, J.A., Choe, Y., Sirosh, J.: Computational Maps in the Visual Cortex. Springer, Heidelberg (2005)Google Scholar
  48. 48.
    Mitchell, J.C., Plotkin, G.D.: Abstract types have existential type. ACM Trans. Program. Lang. Syst. 10(3), 470–502 (1988)CrossRefGoogle Scholar
  49. 49.
    Montague, R.: Universal grammar. In: Formal Philosophy, pp. 222–246 (1970)Google Scholar
  50. 50.
    Morris, J.H.: Lambda-Calculus Models of Programming Languages. PhD thesis, Massachusetts Institute of Technology (1968)Google Scholar
  51. 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)CrossRefGoogle Scholar
  52. 52.
    Object Management Group (OMG). Object management architecture guide, ed 2.0. (1992)Google Scholar
  53. 53.
    O’Hearn, P.W., David, Pym, D.J.: The logic of bunched implications. Bulletin of Symbolic Logic 5, 215–244 (1999)CrossRefzbMATHMathSciNetGoogle Scholar
  54. 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. 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. 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. 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. 58.
    Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972)CrossRefGoogle Scholar
  59. 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. 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. 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. 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)CrossRefGoogle Scholar
  63. 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. 64.
    Popper, K.R.: Conjectures and refutations: The growth of scientific knowledge. Harper & Row, New York (1968)Google Scholar
  65. 65.
    Reiter, R.: On closed world data bases. In: Logic and Data Bases, pp. 55–76 (1977)Google Scholar
  66. 66.
    Reiter, R.: A logic for default reasoning, pp. 68–93. Morgan Kaufmann Publishers Inc., San Francisco (1987)Google Scholar
  67. 67.
    Reynolds, J.C.: Types, abstraction and parametric polymorphism. In: IFIP Congress, pp. 513–523 (1983)Google Scholar
  68. 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)CrossRefGoogle Scholar
  69. 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. 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. 71.
    Ross, S.D.: Plato’s Theory of Ideas. Oxford University Press, Oxford (1951)Google Scholar
  72. 72.
    Roy, P.V., Haridi, S.: Concepts, Techniques, and Models of Computer Programming. MIT Press, Cambridge (2004)Google Scholar
  73. 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. 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. 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. 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. 77.
    Sternberg, R.: Cognitive Psychology. Thomson Wadsworth (2008)Google Scholar
  78. 78.
    Stoy, J.E.: Denotational Semantics: The Scott-Strachey Approach to Programming Language Semantics. MIT Press, Cambridge (1977)zbMATHGoogle Scholar
  79. 79.
    Tanenbaum, A.S., Herder, J.N., Bos, H.: Can we make operating systems reliable and secure? Computer 39, 44–51 (2006)CrossRefGoogle Scholar
  80. 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. 81.
    Wright, A.K., Felleisen, M.: A syntactic approach to type soundness. Inf. Comput. 115(1), 38–94 (1994)CrossRefzbMATHMathSciNetGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Klaus Ostermann
    • 1
  • Paolo G. Giarrusso
    • 1
  • Christian Kästner
    • 1
  • Tillmann Rendel
    • 1
  1. 1.University of MarburgGermany

Personalised recommendations