Warstwa abstrakcji - Abstraction layer

W obliczeniowej An warstwa abstrakcji albo poziom abstrakcji jest sposób ukrywania szczegóły robocze podsystemu, umożliwiając oddzielenie dotyczy w celu ułatwienia współdziałania i niezależność od platformy . Przykłady modeli oprogramowania wykorzystujących warstwy abstrakcji obejmują model OSI dla protokołów sieciowych , OpenGL i innych bibliotek graficznych .

W informatyce warstwa abstrakcji to uogólnienie modelu pojęciowego lub algorytmu z dala od jakiejkolwiek konkretnej implementacji. Te uogólnienia wynikają z szerokich podobieństw, które najlepiej ujmują modele, które wyrażają podobieństwa obecne w różnych konkretnych implementacjach. Uproszczenie zapewniane przez dobrą warstwę abstrakcji pozwala na łatwe ponowne wykorzystanie poprzez destylację użytecznej koncepcji lub wzorca projektowego, dzięki czemu sytuacje, w których można je dokładnie zastosować, można szybko rozpoznać.

Uważa się, że warstwa znajduje się na wierzchu innej, jeśli to od niej zależy . Każda warstwa może istnieć bez warstw nad nią i wymaga do funkcjonowania warstw pod nią. Często warstwy abstrakcji można ułożyć w hierarchię poziomów abstrakcji. Model OSI składa się z siedmiu warstw abstrakcji. Każda warstwa modelu obejmuje i odpowiada innej części potrzeb komunikacji cyfrowej, zmniejszając w ten sposób złożoność powiązanych rozwiązań inżynieryjnych.

Słynny aforyzm z David Wheeler to „Wszystkie problemy w informatyce może być rozwiązany przez inny poziom pośredni”. Jest to często celowo błędnie cytowane, zastępując „abstrakcję” słowem „pośredni”. Czasami jest to również błędnie przypisywane Butlerowi Lampsonowi . Następstwem Kevlina Henneya jest to, że „… z wyjątkiem problemu zbyt wielu warstw pośrednich”.

Architektura komputerowa

W architekturze komputerowej system komputerowy jest zwykle przedstawiany jako składający się z kilku poziomów abstrakcji, takich jak:

Programowalna logika jest często uważana za część sprzętu, podczas gdy definicje logiczne są czasami postrzegane jako część oprogramowania urządzenia lub oprogramowania układowego. Oprogramowanie układowe może zawierać tylko oprogramowanie niskiego poziomu, ale może również obejmować całe oprogramowanie, w tym system operacyjny i aplikacje. Warstwy oprogramowania można dalej podzielić na warstwy abstrakcji sprzętu, fizyczne i logiczne sterowniki urządzeń, repozytoria, takie jak systemy plików, jądra systemu operacyjnego, oprogramowanie pośrednie, aplikacje i inne. Rozróżnia mogą być również wykonane z języków programowania niskiego poziomu, takich jak VHDL , język maszynowy , montaż języka do skompilowany języka , tłumacza i języka skryptowego .

Wejście i wyjście

W systemie operacyjnym Unix większość typów operacji wejścia i wyjścia jest uważana za strumienie bajtów odczytywane z urządzenia lub zapisywane na urządzeniu. Ten model strumienia bajtów jest używany do wejścia / wyjścia pliku, wejścia / wyjścia gniazda i wejścia / wyjścia terminala w celu zapewnienia niezależności urządzenia. W celu odczytu i zapisu na urządzeniu na poziomie aplikacji program wywołuje funkcję otwierającą urządzenie, które może być rzeczywistym urządzeniem, takim jak terminal lub urządzenie wirtualne, takie jak port sieciowy lub plik w systemie plików . Właściwości fizyczne urządzenia są zapośredniczone przez system operacyjny, który z kolei przedstawia abstrakcyjny interfejs, który umożliwia programiście odczytywanie i zapisywanie bajtów z / do urządzenia. Następnie system operacyjny dokonuje rzeczywistej transformacji potrzebnej do odczytu i zapisu strumienia bajtów na urządzeniu.

Grafika

Większość bibliotek graficznych, takich jak OpenGL, udostępnia abstrakcyjny model urządzenia graficznego jako interfejs. Biblioteka jest odpowiedzialna za tłumaczenie poleceń dostarczanych przez programistę na konkretne polecenia urządzenia potrzebne do rysowania elementów graficznych i obiektów. Konkretne polecenia urządzenia dla plotera różnią się od poleceń urządzenia dla monitora CRT , ale biblioteka graficzna ukrywa implementację i szczegóły zależne od urządzenia, udostępniając abstrakcyjny interfejs, który zapewnia zestaw prymitywów, które są ogólnie przydatne do rysowania obiektów graficznych.

Zobacz też

Bibliografia