Рівень абстракції (програмування)
Приклади моделей програмного забезпечення, що використовують рівні абстракції, включають в себе семиуровневую модель OSI для протоколів передачі даних комп'ютерних мереж. бібліотеку графічних примітивів OpenGL. модель введення-виведення на основі потоків байтів з Unix. адаптовану MS DOS. Linux і більшістю інших сучасних операційних систем.
В операційній системі Unix більшість типів операцій введення-виведення розглядаються як потоки байтів, що зчитуються або записуються на пристрій. Ця модель потоку байтів використовується для введення-виведення в файл. сокет і комп'ютерний термінал. щоб забезпечити незалежність від пристрою введення-виведення. Для читання і запису в пристрій на рівні додатку програма викликає функцію відкриття пристрою, який може відповідати реальному пристрою, наприклад, терміналу або віртуальному пристрою. наприклад, порту або файлу в файлової системі. Фізичні характеристики пристрою передаються операційній системі, яка, в свою чергу, надає абстрактний інтерфейс. дозволяє програмісту зчитувати і записувати байти в пристрій. Операційна система потім виконує дії, необхідні для роботи з конкретним пристроєм.
Більшість графічних бібліотек. наприклад, OpenGL, надають в якості інтерфейсу абстрактну графічну модель. Бібліотека відповідає за трансляцію команд програми в спеціальні команди пристрої, необхідні для промальовування графічних елементів і об'єктів. Спеціальні команди для графопостроителя відрізняються від команд для монітора. але графічна бібліотека приховує залежать від пристрою деталі реалізації, надаючи абстрактний інтерфейс, який містить набір примітивів. загальновживаним для малювання графічних об'єктів.
У проблемно-орієнтованому проектуванні великомасштабна структура (предметної області) може використовувати шаблон рівні відповідальності (англ. Responsibility layers). Наприклад, модель предметної області може бути розділена на рівні (зверху вниз) «Підтримка прийняття рішень», «Операції» і «Виробничі можливості», при якому сутності більш високого рівня спираються на сутності нижчого, але нижній рівень не залежить від верхнього [1 ].
Відомий афоризм Девіда Уїлера говорить: Всі проблеми в інформатиці можна вирішити на іншому рівні обхідним шляхом; [2] це часто невірно цитується з заміною «окольного шляху» на «абстракцію». Продовження від Кевліна Хенні говорить «... за винятком проблем з великим рівнем непрямих.»
Часто рівні абстракції організовуються в ієрархію рівнів абстракції. Мережева модель OSI містить сім рівнів абстракції. Кожен рівень моделі OSI ISO розглядає окрему частину вимог по організації зв'язку, скорочуючи таким чином складність відповідних інженерних рішень.
В ідеалі абстракція повністю захищає вищерозміщений рівень від деталей реалізації нижчого. Проте, в більш-менш складних випадках домогтися ідеалу майже неможливо, що і висловив Джоел Спольскі у вигляді закону дірявих абстракцій (англ.) Рос. [3] [4]:
Все нетривіальні абстракції діряві.