Absztrakciós réteg (programozás)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2020. február 26-án felülvizsgált verziótól ; az ellenőrzések 3 szerkesztést igényelnek .

Az absztrakciós réteg  az egyik módja annak, hogy elrejtse egy adott funkciókészlet megvalósítási részleteit. A megtervezett rendszer összetettségének szabályozására szolgál a dekompozíció során, amikor a rendszert absztrakciós szintek hierarchiájaként ábrázolják .

Példák

Az absztrakciós rétegeket használó szoftvermodellek közé tartozik például a hétrétegű OSI modell a számítógépes hálózati kommunikációs protokollokhoz , az OpenGL grafikus primitív könyvtár, az MS DOS -ban, Linuxban és sok más modern operációs rendszerben használt Unix byte stream I/O modell . .

A Unix operációs rendszerben az I/O műveletek legtöbb típusát az eszközről olvasott vagy arra írt bájtfolyamként kezelik . Ezt a bájtfolyam-modellt fájlokhoz , socketekhez és számítógépes terminálok I/O-hoz használják, hogy eszközfüggetlenséget biztosítsanak az I/O számára. Alkalmazásszintű eszközről való olvasáshoz és íráshoz a program egy eszközmegnyitási függvényt hív meg, amely megfelelhet egy valós eszköznek, például terminálnak, vagy egy virtuális eszköznek , például egy hálózati portnak vagy egy fájlrendszerben lévő fájlnak . . Az eszköz fizikai jellemzőit átadják az operációs rendszernek, amely viszont egy absztrakt felületet biztosít, amely lehetővé teszi a programozó számára, hogy bájtokat olvasson és írjon az eszközre. Az operációs rendszer ezután elvégzi az adott eszközzel való munkához szükséges műveleteket.

A legtöbb grafikus könyvtár , például az OpenGL, absztrakt grafikus modellt biztosít interfészként. A könyvtár feladata a programparancsok speciális eszközparancsokká fordítása, amelyek grafikus elemek és objektumok rajzolásához szükségesek. A plotter - specifikus parancsok eltérnek a monitor parancsoktól , de a grafikus könyvtár elrejti az eszköz-specifikus megvalósítási részleteket azáltal, hogy egy absztrakt felületet biztosít, amely a grafikus objektumok rajzolásához általánosan használt primitíveket tartalmaz.

A tartomány-orientált tervezésben egy nagyméretű struktúra (tárgyterület) használhatja a felelősségi rétegek mintáját .  Például egy tartománymodell felosztható szintekre (fentről lefelé) "Döntéstámogatás", "Műveletek" és "Termelési képességek", amelyekben a magasabb szintű entitások alacsonyabb szintű entitásokra támaszkodnak, de az alsó szint nem. a felsőtől függ [1 ] .

David Wheeler egy híres aforizmája ezt mondja: A számítástechnikában minden probléma más szinten is megoldható körforgalommal ; [2] ezt gyakran tévesen idézik úgy, hogy a "kitérő" helyett az "absztrakció" áll. Kevlin Henney folytatása így szól: "... kivéve a nagyfokú közvetettséggel kapcsolatos problémákat."

Szinthierarchia

Az absztrakciós szintek gyakran absztrakciós szintek hierarchiájába szerveződnek. Az OSI hálózati modell hét absztrakciós szintet tartalmaz. Az ISO OSI modell minden rétege a kommunikációs követelmények egy külön részét veszi figyelembe, így csökkentve a kapcsolódó mérnöki döntések bonyolultságát.

Szivárgó absztrakciók

Ideális esetben az absztrakció teljesen megvédi a felső réteget az alsó réteg megvalósítási részleteitől. Mindazonáltal többé-kevésbé bonyolult esetekben szinte lehetetlen elérni azt az ideálist, amelyet Joel Spolsky a szivárgó absztrakciók törvénye formájában fejez ki.[3] [4] :

Minden nem triviális absztrakció tele van lyukakkal.

Számítógép architektúra

A számítógép-architektúra szempontjából a rendszert gyakran öt absztrakciós szint modelljeként ábrázolják: számítógépes hardver (lásd hardver absztrakciós réteg ), firmware , assembly nyelv , operációs rendszer kernel és alkalmazások . [5]

Jegyzetek

  1. Evans E. Felelősségi rétegek // Domain-vezérelt tervezés – A komplexitás kezelése a szoftver szívében. - Addison-Wesley, 2003. - ISBN 978-0-321-12521-7 .
  2. Diomidis Spinellis. Újabb szintű közvetett Archiválás : 2011. október 26. a Wayback Machine -nél . Andy Oram és Greg Wilson szerkesztők: Beautiful Code: Leading Programmers Explain How They Think , 17. fejezet, 279-291. oldal. O'Reilly and Associates, Sebastopol, CA, 2007.
  3. Spolsky, Joel A szivárgó absztrakciók törvénye (2002). Hozzáférés dátuma: 2010. szeptember 22. Az eredetiből archiválva : 2016. november 20.
  4. Spolsky, Joel A szivárgó absztrakciók törvénye (a link elérhetetlen) . Letöltve: 2014. szeptember 15. Az eredetiből archiválva : 2014. szeptember 28.. 
  5. Andrew S. Tanenbaum . Strukturált számítógépes szervezet  (neopr.) . - Englewood Cliffs, New Jersey: Prentice-Hall , 1979. - ISBN 0-13-148521-0 .

Linkek