Основні класи архітектури програмних засобів.

Розрізняють наступні основні класи архітектури програмних засобів:

· цілісна програма;

· комплекс автономно виконуваних програм;

· шарувата програмна система;

· колектив паралельно виконуваних програм.

Цілісна програма представляє вироджений випадок архітектури ПС : до складу ПС входить тільки одна програма. Таку архітектуру вибирають зазвичай у тому випадку, коли ПС повинне виконувати одну яку-небудь яскраво виражену функцію і її реалізація не представляється занадто складною. Природно, що така архітектура не вимагає якого-небудь опису (окрім фіксації класу архітектури), оскільки відображення зовнішніх функцій на цю програму тривіально, а визначати спосіб взаємодії не вимагається (через відсутність якої-небудь зовнішньої взаємодії програми, окрім як взаємодії її з користувачем, а останнє описується в документації по застосуванню ПС).

Комплекс автономно виконуваних програм складається з набору програм, такого, що:

· будь-яка з цих програм може бути активізована (запущена) користувачем;

· при виконанні активізованої програми інші програми цього набору не можуть бути активізовані до тих пір, поки не закінчить виконання активізована програма;

· усі програми цього набору застосуються до одного і того ж інформаційного середовища.

Таким чином, програми цього набору по управлінню ніяк не взаємодіють - взаємодія між ними здійснюється тільки через загальне інформаційне середовище.

Шарувата програмна система складається з деякої впорядкованої сукупності програмних підсистем, званих шарами, такий, що:

· на кожному шарі нічого не відомо про властивості (і навіть існуванні) наступних (вищих) шарів;

· кожен шар може взаємодіяти по управлінню (звертатися до компонент) з безпосередньо попереднім (нижчим) шаром через заздалегідь визначений інтерфейс, нічого не знаючи про внутрішню будову усіх попередніх шарів;

· кожен шар має в розпорядженні певні ресурси, які він або приховує від інших шарів, або надає безпосередньо наступному шару (через вказаний інтерфейс) деякі їх абстракції.

Таким чином, в шаруватій програмній системі кожен шар може реалізувати деяку абстракцію даних. Зв'язки між шарами обмежені передачею значень параметрів звернення кожного шару до суміжного знизу шарую і видачею результатів цього звернення від нижнього шару верхньому. Неприпустимо використання глобальних даних декількома шарами.

Як приклад розглянемо використання такої архітектури для побудови операційної системи. Таку архітектуру застосував Дейкстра при побудові операційної системи THE.

Ця операційна система складається з чотирьох шарів. На нульовому шарі здійснюється обробка усіх переривань і виділення центрального процесора програмам (процесам) в пакетному режимі. Тільки цей рівень обізнаний про мультипрограмні аспекти системи. На першому шарі здійснюється управління сторінковою організацією пам'яті. Усім вищестоящим шарам надається віртуальна безперервна (не сторінкова) пам'ять. На другому шарі здійснюється зв'язок з консоллю (пультом управління) оператора. Тільки цей шар знає технічні характеристики консолі. На третьому шарі здійснюється буферизація вхідних і вихідних потоків даних і реалізуються так звані абстрактні канали введення і виводу, так що прикладні програми не знають технічних характеристик пристроїв введення і виводу.