Camada de abstração
De Wikipedia, a enciclopédia encyclopedia
Na computação, uma camada de abstração ou nível de abstração é uma forma de ocultar os detalhes de trabalho de um subsistema, permitindo a separação de interesses para facilitar a interoperabilidade e a independência da plataforma. Exemplos de modelos de software que usam camadas de abstração incluem o modelo OSI para protocolos de rede, OpenGL e outras bibliotecas gráficas.
Na ciência da computação, uma camada de abstração é uma generalização de um modelo conceitual ou algoritmo, longe de qualquer implementação específica. Essas generalizações surgem de grandes semelhanças que são melhor encapsuladas por modelos que expressam semelhanças presentes em várias implementações específicas. A simplificação fornecida por uma boa camada de abstração permite uma fácil reutilização, destilando um conceito útil ou padrão de design para que as situações, onde ele pode ser aplicado com precisão, possam ser rapidamente reconhecidas.
Uma camada é considerada sobreposta a outra se depender dela. Cada camada pode existir sem as camadas acima dela e requer que as camadas abaixo funcionem. Frequentemente, as camadas de abstração podem ser compostas em uma hierarquia de níveis de abstração. O modelo OSI compreende sete camadas de abstração. Cada camada do modelo encapsula e aborda uma parte diferente das necessidades de comunicação digital, reduzindo assim a complexidade das soluções de engenharia associadas.
Um famoso aforismo de David Wheeler é "Todos os problemas da ciência da computação podem ser resolvidos por outro nível de indireção".[1] Isso é muitas vezes mal citado deliberadamente com "abstração" substituída por "indireção". Às vezes, também é atribuído incorretamente a Butler Lampson. O corolário de Kevlin Henney para isso é, "... exceto pelo problema de muitas camadas de indireção."[2]