Abstraktní vrstva je jedním ze způsobů, jak skrýt detaily implementace konkrétní sady funkcí. Slouží ke kontrole složitosti navrženého systému během dekompozice , kdy je systém reprezentován jako hierarchie úrovní abstrakce.
Příklady softwarových modelů, které používají abstraktní vrstvy, zahrnují sedmivrstvý model OSI pro komunikační protokoly počítačové sítě , grafickou primitivní knihovnu OpenGL , model Unix byte stream I/O používaný v MS DOS , Linuxu a mnoha dalších moderních operačních systémech. .
V operačním systému Unix se s většinou typů I/O operací zachází jako s proudy bajtů čtených nebo zapsaných do zařízení . Tento model bajtového toku se používá pro I/O souboru , soketu a počítačového terminálu k zajištění nezávislosti I/O na zařízení. Pro čtení a zápis do zařízení na úrovni aplikace volá program funkci otevření zařízení, která může odpovídat skutečnému zařízení, jako je terminál, nebo virtuální zařízení , jako je síťový port nebo soubor v systému souborů . . Fyzické vlastnosti zařízení jsou předány operačnímu systému, který zase poskytuje abstraktní rozhraní , které umožňuje programátorovi číst a zapisovat bajty do zařízení. Operační systém pak provede akce nezbytné pro práci s konkrétním zařízením.
Většina grafických knihoven , jako je OpenGL, poskytuje abstraktní grafický model jako rozhraní. Knihovna je zodpovědná za převod programových příkazů do speciálních příkazů zařízení nezbytných pro kreslení grafických prvků a objektů. Příkazy specifické pro plotr se liší od příkazů monitoru , ale grafická knihovna skrývá detaily implementace specifické pro zařízení tím, že poskytuje abstraktní rozhraní obsahující sadu primitiv běžně používaných pro kreslení grafických objektů.
V doménově orientovaném designu může rozsáhlá struktura (předmětová oblast) používat vzor vrstev odpovědnosti . Doménový model lze například rozdělit na úrovně (shora dolů) „Podpora rozhodování“, „Operace“ a „Produkční schopnosti“, ve kterých entity vyšší úrovně spoléhají na entity nižší úrovně, ale nižší úroveň nikoli. závisí na horním [1] .
Slavný aforismus Davida Wheelera říká: Všechny problémy v informatice lze vyřešit na jiné úrovni kruhovým objezdem ; [2] toto je často chybně citováno s „objížďkou“ nahrazenou „abstrakce“. Pokračování od Kevlin Henney zní "... kromě problémů s velkou mírou nepřímosti."
Úrovně abstrakce jsou často organizovány do hierarchie úrovní abstrakce. Model sítě OSI obsahuje sedm úrovní abstrakce. Každá vrstva modelu ISO OSI zohledňuje samostatnou část požadavků na komunikaci, čímž se snižuje složitost souvisejících technických rozhodnutí.
V ideálním případě abstrakce zcela odstíní horní vrstvu od implementačních detailů spodní vrstvy. Přesto je ve více či méně složitých případech téměř nemožné dosáhnout ideálu, který Joel Spolsky vyjádřil v podobě zákona děravých abstrakcí[3] [4] :
Všechny netriviální abstrakce jsou plné děr.
Z hlediska architektury počítače je systém často reprezentován jako model pěti úrovní abstrakce: počítačový hardware (viz vrstva abstrakce hardwaru ), firmware , jazyk symbolických instrukcí , jádro operačního systému a aplikace . [5]