Encyclopedia of Database Systems

Living Edition
| Editors: Ling Liu, M. Tamer Özsu


  • Patrick EugsterEmail author
Living reference work entry
DOI: https://doi.org/10.1007/978-1-4899-7993-3_1176-2


An interface describes the functionalities exported by an entity such as a software module. These functionalities typically consist in named operations with signatures describing potential arguments and return values, but interfaces may also include the definitions of data types, constants, exceptions, or even describe semantics.

Interfaces shield the internals of corresponding software modules from the outside, providing several benefits. Interfaces provide abstraction, in the sense that the internals of modules may evolve while other modules can still rely on the same functionalities (encapsulation). Safety and security are promoted by interfaces as these define single access points to respective software modules.

In object-oriented programming, software modules often coincide with classes, which also describe data types implicitly. In the case of such a class, an interface is thus roughly made up of the methods exported by the class. Mostly, interfaces are then defined...


Programming Language Unify Modeling Language Software Module Java Modeling Language Common Object Request Broker Architecture 
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.
This is a preview of subscription content, log in to check access.

Recommended Reading

  1. 1.
    Beyer D, Henzinger TA, Singh V. Algorithms for interface synthesis. In: Proceedings of 19th international conference on computer aided verification. 2007. p. 4–19.Google Scholar
  2. 2.
    Canning PS, Cook WR, Hill WL, Olthoff WG. Interfaces for strongly-typed object-oriented programming. ACM SIGPLAN Not. 1989;24(10):457–67.CrossRefGoogle Scholar
  3. 3.
    Chakrabarti A, de Alfaro L, Henzinger TA, Stoelinga M. Resource interfaces. In: Proceedings of 3rd international conference on embedded software. 2003. p. 117–33.Google Scholar
  4. 4.
    de Alfaro L, Henzinger TA. Interface automata. In: Proceedings of 9th ACM SIGSOFT international symposium on foundations of software engineering. 2001. p. 109–20.Google Scholar
  5. 5.
    Griswold WG, Sullivan KJ, Song W, Shonle M, Tewari N, Cai Y, Rajan H. Modular software design with crosscutting interfaces. IEEE Softw. 2006;23(1):51–60.CrossRefGoogle Scholar
  6. 6.
    Liskov BH, Wing JM. A behavioral notion of subtyping. ACM Trans Program Lang Syst. 1994;16(6):1811–41.CrossRefGoogle Scholar
  7. 7.
    Meyer B. Applying design by contract. IEEE Comput. 1992;25(10):40–51.CrossRefGoogle Scholar
  8. 8.
    Parnas DL. On the criteria to be used in decomposing systems into modules. Commun ACM. 1972;15(12):1053–8.CrossRefGoogle Scholar
  9. 9.
    Strom RE, Yemini S. Typestate: a programming language concept for enhancing software reliability. IEEE Trans Softw Eng. 1986;12(1):157–71.CrossRefzbMATHGoogle Scholar

Copyright information

© Springer Science+Business Media LLC 2016

Authors and Affiliations

  1. 1.Purdue UniversityWest LafayetteUSA

Section editors and affiliations

  • H. - Arno Jacobsen
    • 1
  1. 1.Dept. of Elec. and Comp.Eng.Univ. of TorontoTorontoCanada