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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Abadi, M., Lamport, L.: Composing specifications. ACM Trans. Program. Lang. Syst. 15, 73–132 (1993)
Aldrich, J.: Open modules: Modular reasoning about advice. In: Gao, X.-X. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 144–168. Springer, Heidelberg (2005)
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)
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)
Booch, G.: Object-Oriented Analysis and Design with Applications. Addison-Wesley, Reading (2007)
Borgida, A., Mylopoulos, J., Reiter, R.: On the frame problem in procedure specifications. IEEE Trans. Softw. Eng. 21, 785–798 (1995)
Bremer, M.: An Introduction to Paraconsistent Logics. Peter Lang Publishing (2005)
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)
Brooks, F.P.: The mythical man-month: After 20 years. IEEE Software 12, 57–60 (1995)
Cartwright, N.: How the laws of physics lie. Clarendon Press, Oxford (1983)
Clark, K.L.: Negation as failure. In: Logic and Data Bases, pp. 293–322 (1977)
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)
Dawkins, R.: The Blind Watchmaker. Norton & Company, New York (1986)
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
DiBona, C., Ockman, S., Stone, M. (eds.): Open Sources: Voices from the Open Source Revolution. O’Reilly & Associates, Inc., Sebastopol (1999)
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)
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)
Ernst, E.: Method mixins. In: Proc. Net.ObjectDays/GSEM, pp. 145–161. GI (2005)
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)
Flanagan, C., Freund, S.N., Qadeer, S., Seshia, S.A.: Modular verification of multithreaded programs. Theor. Comput. Sci. 338, 153–183 (2005)
Gabbay, D.: Classical vs non-classical logic. In: Handbook of Logic in Artificial Intelligence and Logic Programming, vol. 2, Oxford University Press, Oxford (1994)
Girard, J.-Y.: Linear logic. Theoretical Computer Science 50, 1–102 (1987)
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)
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)
Hebb, D.: The organization of behavior. John Wiley & Sons, Chichester (1949)
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)
Hinman, P.: Fundamentals of Mathematical Logic. A K Peters, Wellesley (2005)
Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580 (1969)
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)
Kästner, C., Apel, S.: Virtual separation of concerns – A second chance for preprocessors. Journal of Object Technology (JOT) 8(6), 59–78 (2009)
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)
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)
Kiczales, G., Mezini, M.: Aspect-oriented programming and modular reasoning. In: ICSE, pp. 49–58. ACM, New York (2005)
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)
Klusener, S., Lämmel, R., Verhoef, C.: Architectural Modifications to Deployed Software. Science of Computer Programming 54, 143–211 (2005)
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
Lakatos, I.: A renaissance of empiricism in the recent philosophy of mathematics. Br. J. Philos. Sci. 27(3), 201–223 (1976)
Lanier, J.: One half of a manifesto: Why stupid software will save the future from neo-darwinian machines. wired 8.12 (2000)
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)
Li, H., Krishnamurthi, S., Fisler, K.: Verifying cross-cutting features as open systems. SIGSOFT Softw. Eng. Notes 27, 89–98 (2002)
Liskov, B.H., Wing, J.M.: A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16(6), 1811–1841 (1994)
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)
Manna, Z., Pnueli, A.: The temporal logic of reactive and concurrent systems. Springer, Heidelberg (1992)
McCarthy, J.: Circumscription—a form of non-monotonic reasoning. Artificial Intelligence 13, 27–39 (1980)
McCarthy, J., Hayes, P.J.: Some philosophical problems from the standpoint of artificial intelligence. Machine Intelligence 4, 463–502 (1969)
McMullin, E.: Galilean Idealization. Studies in the History and Philosophy of Science 16, 247–273 (1985)
Miikkulainen, R., Bednar, J.A., Choe, Y., Sirosh, J.: Computational Maps in the Visual Cortex. Springer, Heidelberg (2005)
Mitchell, J.C., Plotkin, G.D.: Abstract types have existential type. ACM Trans. Program. Lang. Syst. 10(3), 470–502 (1988)
Montague, R.: Universal grammar. In: Formal Philosophy, pp. 222–246 (1970)
Morris, J.H.: Lambda-Calculus Models of Programming Languages. PhD thesis, Massachusetts Institute of Technology (1968)
Noble, J., Vitek, J., Potter, J.: Flexible alias protection. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 158–185. Springer, Heidelberg (1998)
Object Management Group (OMG). Object management architecture guide, ed 2.0. (1992)
O’Hearn, P.W., David, Pym, D.J.: The logic of bunched implications. Bulletin of Symbolic Logic 5, 215–244 (1999)
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)
Ossher, H., Tarr, P.: On the need for on-demand remodularization. In: Position Paper for Aspects and Dimensions of Concern Workshop, ECOOP, Citeseer (2000)
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)
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)
Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972)
Parnas, D.L.: On a “buzzword”: Hierarchical structure. In: Proceedings of IFIP Congress 1974, pp. 336–339. North-Holland, Amsterdam (1974)
Parnas, D.L.: Use of abstract interfaces in the development of software for embedded computer systems. Technical report, NRL Report No. 8047 (1977)
Parnas, D.L.: The secret history of information hiding. In: Software Pioneers: Contributions to Software Engineering, pp. 399–409. Springer, Heidelberg (2002)
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)
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)
Popper, K.R.: Conjectures and refutations: The growth of scientific knowledge. Harper & Row, New York (1968)
Reiter, R.: On closed world data bases. In: Logic and Data Bases, pp. 55–76 (1977)
Reiter, R.: A logic for default reasoning, pp. 68–93. Morgan Kaufmann Publishers Inc., San Francisco (1987)
Reynolds, J.C.: Types, abstraction and parametric polymorphism. In: IFIP Congress, pp. 513–523 (1983)
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)
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)
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)
Ross, S.D.: Plato’s Theory of Ideas. Oxford University Press, Oxford (1951)
Roy, P.V., Haridi, S.: Concepts, Techniques, and Models of Computer Programming. MIT Press, Cambridge (2004)
Sandewall, E.: Nonmonotonic inference rules for multiple inheritance with exceptions. In: Expert systems, pp. 239–247. IEEE Computer Society Press, Los Alamitos (1990)
Smith, B.C.: Reflection and semantics in LISP. In: Proc. Symp. Principles of Programming Languages (POPL), pp. 23–35. ACM, New York (1984)
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)
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)
Sternberg, R.: Cognitive Psychology. Thomson Wadsworth (2008)
Stoy, J.E.: Denotational Semantics: The Scott-Strachey Approach to Programming Language Semantics. MIT Press, Cambridge (1977)
Tanenbaum, A.S., Herder, J.N., Bos, H.: Can we make operating systems reliable and secure? Computer 39, 44–51 (2006)
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)
Wright, A.K., Felleisen, M.: A syntactic approach to type soundness. Inf. Comput. 115(1), 38–94 (1994)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)