Existem diferentes tipos de interface entre os componentes de programa e, consequentemente, diferentes tipos de erros de interface que podem ocorrer:
1. Interfaces de parâmetro. São as interfaces nas quais as referências de dados ou, às vezes, de função, são passadas de um componente para outro. Métodos de um objeto têm uma interface de parâmetro.
2. Interfaces de memória compartilhada. São as interfaces nas quais um bloco de memória é compartilhado entre os componentes. Os dados são colocados na memória por um subsistema e recuperados a partir daí por outros subsistemas. Esse tipo de interface é frequentemente usado em sistemas embutidos, em que os sensores criam dados que são recuperados e processados por outros componentes do sistema.
3. Interfaces de procedimento. São as interfaces nas quais um componente encapsula um conjunto de procedimentos que podem ser chamados por outros componentes. Objetos e componentes reusáveis têm esse tipo de interface.
4. Interface de passagem de mensagem. São as interfaces nas quais um componente solicita um serviço de outro componente, passando-lhe uma mensagem. Uma mensagem de retorno inclui os resultados da execução do serviço. Alguns sistemas orientados a objetos têm esse tipo de interface, como nos sistemas cliente-servidor. Erros de interface são uma das formas mais comuns de erros em sistemas complexos
(erros) Classificados em: [ MUITO IMPORTANTE CAIU 2X FCC]
• Mau uso de interface. Um componente chamador chama outro componente e comete um erro no uso de sua interface. Esse tipo de erro é comum com interfaces de parâmetro, em que os parâmetros podem ser de tipo errado ou ser passados na ordem errada, ou o número errado de parâmetros pode ser passado.
• Mau-entendimento de interface. Um componente chamador desconhece a especificação da interface do componente chamado e faz suposições sobre seu comportamento. O componente chamado não se comporta conforme o esperado, causando um comportamento inesperado no componente de chamada.
Por exemplo, um método de busca binária pode ser chamado com um parâmetro que é um vetor não ordenado. A busca então falharia.
*• Erros de timing.* Eles ocorrem em sistemas em tempo real que usam uma memória compartilhada ou uma interface de passagem de mensagens. O produtor e o consumidor de dados podem operar em velocidades diferentes. A menos que se tome um cuidado especial no projeto da interface, o consumidor pode acessar uma informação desatualizada, porque o produtor da informação não atualizou as informações da interface compartilhada.
Fonte: Sommerville 9ª edição.