Definition of interface
An interface is a boundary across which two independent entities meet and interact or communicate with each other [10]. An interface is a concept introduced to refer to a point of interaction between components, and is applicable at both hardware and software level. This allows a component, whether a piece of hardware such as a graphics card or a piece of software such as an Internet browser, to function independently while using interfaces to communicate with other components through an input/output system and an associated protocol. In computing, interface may also refer to the means of communication between the computer and the user by means of peripheral devices such as a monitor or a keyboard, an interface with the Internet via Internet Protocol, or any other point of communication involving a computer. An interface is a shared boundary or connection between two dissimilar objects, devices or systems through which information is passed. The connection can be either physical or logical. In electronics and computer engineering, an interface can be:
1. The physical boundary between two subsystems or devices
2. A part or circuit in some subsystem that sends or receives signals to or from other systems or subsystems (e.g., a video interface or a network interface card)
3. A standard specifying a set of functional characteristics, common physical interconnection characteristics and signal characteristics for the exchange of signals or data.
Software interface standard
A software interface is the languages and codes that the applications use to communicate with each other and with the hardware. A software interface standard is a document defining the details of that question and answer interaction, typically aimed at a software engineer. The engineer uses the document to implement the standard, that is, build it into the software. Standards enable two pieces of software but implemented using standard to communicate in accordance with defined in the standard. Standards enhance assurance that software products can work together [11].
Types of interface
The interface is a combination of characteristics, such as in the case of a serial port or a parallel port, which forms a physical boundary, is used for the transmission of signals between different systems and adheres to industry standards for both physical and electrical characteristics. Interface applies to both software and hardware. Three different types of interfaces are shown. The semantics of these classifications are as follows:
AUTOSAR Interface
An AUTOSAR Interface describes the data and services required or provided by a component and is specified and implemented according to the AUTOSAR Interface Definition Language. An AUTOSAR Interface is partly standardized within AUTOSAR, e.g. it may include OEM specific aspects. The use of AUTOSAR Interfaces allows software components to be distributed among several ECUs. The RTEs on the ECUs will take care of making the distribution transparent to the software components.
Standardized AUTOSAR Interface
A Standardized AUTOSAR Interface is an AUTOSAR Interface standardized within the AUTOSAR project.
Standardized Interface
A software interface is called the Standardized Interfaces if a concrete standardized API exists (e.g. OSEK COM Interface).
Classification of interfaces
The software interfaces are classified based on the use of the interface. The interface may be between two applications or between application and the user.
Application Interface
Those interfaces define the interaction with other application artifacts such as other components or applications. This interface represents the import and export relationship with other components (or the middleware) with which the component interacts. A set of exported interfaces represents the functionality that this component can provide. A set of imported interfaces represents the functionalities that this module requires from other external components which might be needed in the work progress of the component functional execution. We term these interfaces as "Horizontal Channels" as they specify the interaction with other peer components and application entities irrespective of the platform or hardware on which they run. The horizontal channel allows us to identify:
1. The structure of messages sent/received from another component.
2. Timing issues as related to requests going to/from the component
3. Incompatibilities in data format, types and message protocol
An example of application interface is Application programming interface (API)
An application programming interface (API) is a set of specifications that defines how one piece of software interacts with another, particularly an application program with an operating system. A primary purpose is to provide a set of commonly-used functions, such as to draw windows or icons on the screen, thereby saving programmers from the tedium of having to write code for everything from scratch. Application Programming Interface is a set of commands, functions, and protocols which programmers can use when building software for a specific operating system. The API allows programmers to use predefined functions to interact with the operating system, instead of writing them from the foundation. All computer operating systems, such as Windows, UNIX, and the Mac OS, provide an application program interface for programmers. APIs are also used by video game consoles and other hardware devices that can run software programs. While the API makes the programmer's job easier, it also benefits the end user, since it ensures all programs using the same API will have a similar user interface.
Developing and improving interfaces can be a challenging task. This is particularly true with regard to user interfaces, because in order to develop truly high quality user interfaces it is necessary to consider the complex topics of ergonomics (i.e., the study of human characteristics for the appropriate design of the living and working environment) and human variability.
Platform Interfaces
Those interfaces define the component interaction with the platform on which it executes. These interfaces would include operating system calls, the underlying hardware technology, and communication subsystems. For a component to run it should be supported by specific processor, memory, communication equipment and probably other hardware as well. This type of interaction is as important as interaction with other software components. It determines the portability of the component and how it runs and executes on specific hardware. This layered approach helps the designer in specifying and designing components that are independent of programming languages and operating systems. Several implementations may have different platform interfaces and yet have the same design and specifications. This interface layer is also called Vertical Channel because it identifies interactions with lower layers of hardware not with other peer components. This type of interfaces is essential for special type of applications (embedded systems for example) in which 20-30 % of safety-related errors discovered were related to these interfaces . The following are examples of platform interfaces:
1. Operating System
2. Hardware platform
3. Communication channels (and protocol stacks)
4. Compilers (if required to compile the component)
An example of platform interface is user interface.
A user interface is a linkage between a human and a computer. It consists of a display device and one or more input devices. The two main types of user interfaces are the command line interface (CLI), the display of which contains text only, and the graphical user interface (GUI), which also includes images. Most GUIs use a desktop with folders files, images, etc. that can be moved around, resized and otherwise manipulated.