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

Основные классы архитектур программных средств:

· цельная программа;

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

· слоистая программная система;

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

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

Комплекс автономно выполняемых программсостоит из набора программ, такого, что:

· любая из этих программ может быть активизирована (запущена) пользователем;

· при выполнении активизированной программы другие программы этого набора не могут быть активизированы до тех пор, пока не закончит выполнение активизированная программа;

· все программы этого набора применяются к одной и той же информационной среде.

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

Слоистая программная системасостоит из некоторой упорядоченной совокупности программных подсистем, называемых слоями, такой, что:

· на каждом слое ничего не известно о свойствах (и даже существовании) последующих (более высоких) слоев;

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

· каждый слой располагает определенными ресурсами, которые он либо скрывает от других слоев, либо предоставляет непосредственно последующему слою (через указанный интерфейс) некоторые их абстракции.

Таким образом, в слоистой программной системе каждый слой может реализовать некоторую абстракцию данных. Связи между слоями ограничены передачей значений параметров обращения каждого слоя к смежному снизу слою и выдачей результатов этого обращения от нижнего слоя верхнему. Недопустимо использование глобальных данных несколькими слоями.

В качестве примера рассмотрим использование такой архитектуры для построения операционной системы из четырех слоев.

На нулевом слое производится обработка всех прерываний и выделение центрального процессора программам (процессам) в пакетном режиме. Только этот уровень осведомлен о мультипрограммных аспектах системы.

На первом слое осуществляется управление страничной организацией памяти. Всем вышестоящим слоям предоставляется виртуальная непрерывная (не страничная) память.

На втором слое осуществляется связь с консолью (пультом управления) оператора.

Только этот слой знает технические характеристики консоли.

На третьем слое осуществляется буферизация входных и выходных потоков данных и реализуются так называемые абстрактные каналы ввода и вывода, так что прикладные программы не знают технических характеристик устройств ввода и вывода.

Коллектив параллельно действующих программ представляет собой набор программ, способных взаимодействовать между собой, находясь одновременно в стадии выполнения. Это означает, что такие программы, во-первых, вызваны в оперативную память, активизированы и могут попеременно разделять по времени один или несколько центральных процессоров, а во-вторых, осуществлять между собой динамические (в процессе выполнения) взаимодействия, на базе которых производиться их синхронизация. Обычно взаимодействие между такими процессами производится путём передачи друг-другу некоторых сообщений.
14. Основные модели при разработке программных систем.

Разработка модели программной системы промышленного или коммерческого уровня всегда предшествует созданию новой или обновлению старой. Это существенная часть ясного понимания большой задачи в прикладной предметной области. Продуманные модели очень важны как для взаимодействия команд, участвующих в разработке, так и для уверенности в "архитектурной согласованности" всего проекта, до того как он будет реализован в виде кода.

Мы строим модели сложных систем, потому что не можем "охватить" ни одну из таких систем во всей ее полноте и целостности. Метод объектно-ориентированного анализа позволяет справляться и нормально описывать сложности, присущие реальным системам. Но при увеличении сложности систем, возникает все большая необходимость в хорошей технологии моделирования. Конечно, существует также множество других важных факторов, приводящих к успешно выполненному проекту, но владение стандартным и точным языком моделирования один из таких существенных факторов.

Язык моделирования должен включать:

· Элементы модели - фундаментальные концепции моделирования и их семантику

· Нотацию - визуальное представление элементов модели

· Руководство – образцы и примеры использования при работе

При увеличении сложности систем, моделирование и стандартная визуализация становится важным фактором разработки таких систем. В других промышленных областях успешно существуют "стандартизированные" системы обозначений типовых элементов и компонент систем, например, электронщики понимают схемы, архитекторы - чертежи и т.д.

(СМ. ВОПРОС 1!)