Encyclopedia of Database Systems

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


  • Patrick EugsterEmail author
Reference work entry
DOI: https://doi.org/10.1007/978-1-4614-8265-9_1176


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

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 the 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 the 3rd International Conference on Embedded Software; 2003. p. 117–33.CrossRefGoogle Scholar
  4. 4.
    de Alfaro L, Henzinger TA. Interface automata. In: Proceedings of the 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.zbMATHCrossRefGoogle Scholar

Copyright information

© Springer Science+Business Media, LLC, part of Springer Nature 2018

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