Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по ТРПО.doc
Скачиваний:
13
Добавлен:
23.04.2019
Размер:
469.5 Кб
Скачать

Основные классы архитектур.

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

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

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

Пример: архитектура ОС системы THE (предложенная Дейкстрой):

0: обработка всех прерываний и выделение центрального процессора программам в пакетном режиме. Только этот уровень осведомлен о мультипрограммных аспектах системы.

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

2: связь с консолью оператора. Только этот слой знает технические характеристики консоли.

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

  1. Коллектив параллельно действующих программ. Набор программ, способных взаимодействовать между собой, находясь одновременно в стадии выполнения, т. е. программы, вызванные в оперативную память, активизированы и могут попеременно разделять по времени один или несколько центральных процессоров, а также осуществлять между собой динамические взаимодействия. Разновидностью такой архитектуры является конвейер (ОС Unix). Конвейер представляет собой последовательность программ, в которой стандартный вывод каждой программы связан со стандартным входом следующей.

Конвейер обрабатывает некоторый поток сообщений. Каждая программа конвейера, получив сообщение, обрабатывает его, передает следующей программе и приступает к обработке нового сообщения. В общем случае коллектив параллельно действующих программ может быть организован в системе с портами сообщений. Порт сообщений представляет собой подсистему, которая обслуживает некоторую очередь сообщений. Сообщение, переданное порту, не принадлежит никакой программе до тех пор, пока не будет передано какой-либо программе по ее запросу.

Контроль архитектуры осуществляется:

- метод смежного контроля.

- метод ручной имитации.

Методы проектирования архитектуры:

    1. Объектно-ориентированная методология.

а) Метод проектирования предметных областей заключается в выделении предметной области системы с точки зрения пользователя. Предметная область – отдельный реальный, гипотетический или абстрактный мир, определяемый отчетливым набором объектов, которые ведут себя с характерными для домена правилами и линиями поведения.

б) Метод поведения мостов. Одна предметная область использует механизмы и возможности, обеспечиваемые другой предметной областью. Мост между 2-мя предметными областями представляет набор предложений с точки зрения пользователя и набор требований с точки зрения исполнителя.

    1. Структурная методология.

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

б) восходящего проектирования. Разработка архитектуры начинается с определения вспомогательных модулей для проектирования программы.

    1. Метод расширения ядра. Основное внимание уделяется выделению множества вспомогательных функций и модулей.

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

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

- размер

- прочность

- сцепление с другими модулями

- рутинность модуля.

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

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

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

  2. функционально прочный;

  3. Информационно прочный модуль – выполняет операции над одной и той же структурой данных (наивысшая степень прочности).

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

  1. Худший вариант – сцепление по содержимому (один модуль имеет прямые ссылки на содержание другого модуля).

  2. Сцепление по общей области (памяти).

  3. Наилучшим видом сцепления является параметрическое сцепление (сцепление по данным).

Рутинность – независимость модуля от предыстории обращения к нему. Модуль называют рутинным, если результат обращения к нему зависит только от значений параметров.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]