In computing, an '''interface''' is a shared boundary across which two or more separate components of a [[computer system]] exchange information. The exchange can be between [[software]], [[computer hardware]], [[peripheral]] devicesmachines, [[User interface|humans]], and combinations of these.<ref name="HookwayInterface14">{{cite book |url=https://books.google.com/books?id=BQM_AwAAQBAJ |chapter=Chapter 1: The Subject of the Interface |title=Interface |author=Hookway, B. |publisher=MIT Press |pages=1–58 |year=2014 |isbn=9780262525503}}</ref> Some computer hardware devices, such as a [[touchscreen]], can both send and receive data through the interface, while others such as a mouse or microphone may only provide an interface to send data to a given system.<ref>{{cite encyclopedia
| year = 2000
| title = IEEE 100 - The Authoritative Dictionary Of IEEE Standards Terms
A software interface may refer to a wide range of different types of interfaceinterfaces at different "levels". For example, an operating system may interface with pieces of hardware. [[application software|Application]]s or [[Computer program|program]]s running on the operating system may need to interact via data [[Stream (computing)|streams]], filters, and pipelines.<ref name="BuyyaMastering13">{{cite book |url=https://books.google.com/books?id=VSDZAgAAQBAJ&pg=SA2-PA13 |title=Mastering Cloud Computing |author=Buyya, R. |publisher=Tata McGraw-Hill Education |page=2.13 |year=2013 |isbn=9781259029950}}</ref> In [[Object-oriented programming|object oriented programs]], objects within an application may need to interact via [[Method (computer science)|methods]].<ref name="PooObject08">{{cite book |chapter=Chapter 2: Object, Class, Message and Method |title=Object-Oriented Programming and Java |url=https://archive.org/details/springer_10.1007-978-1-84628-963-7 |author1=Poo, D. |author2=Kiong, D. |author3=Ashok, S. |publisher=Springer-Verlag |pages=7–15 |year=2008 |isbn=9781846289637}}</ref>