Распределение модулей и подсистем по процессорам
При распределении модулей и подсистем по процессорам следует иметь в виду следующее:
- некоторые задачи нужно выполнять на определённых устройствах; например, обработку банковской карточки следует выполнять на ATM;
- время ответа или скорость информационного потока превышает пропускную способность канала между процессором и программой; например, высокоскоростные графические устройства требуют спаренных контроллеров;
- скорости вычислений слишком высоки для одного процессора, и задачи нужно разместить на нескольких процессорах; подсистемы, которые часто взаимодействуют, нужно поместить на одном процессоре.
Управление хранилищами данных
Внутренние и внешние хранилища данных являются чёткими точками раздела между подсистемами с хорошо определёнными интерфейсами. В качестве хранилищ данных могут использоваться базы данных, файлы и другие структуры данных, размещённые во внешней или основной памяти. Выбор вида хранилища данных зависит от ситуации.
В базах данных обычно размещают данные, удовлетворяющие одному из следующих условий:
- данные, для которых требуется доступ на высоком уровне детализации со стороны многих пользователей;
- данные, которые могут эффективно управляться командами СУБД;
- данные, которые должны переноситься на многие платформы;
- данные, для которых требуется доступ со стороны нескольких прикладных программ.
В файлах удобно размещать данные, удовлетворяющие одному из следующих условий:
- данные, которых много, но которые плохо поддаются структуризации;
- данные с низкой информационной плотностью (например, дампы);
- «сырые» данные, подготавливаемые для баз данных;
- «летучие» данные, которые хранятся короткое время, а потом удаляются.
Управление глобальными ресурсами
Необходимо определить глобальные ресурсы и разработать механизмы управления доступом к ним. Глобальными ресурсами могут быть: процессоры, устройства внешней памяти, экран рабочей станции, логические имена (идентификаторы объектов, имена файлов, имена классов), доступ к базам данных и т.п.
Реализация управления программным обеспечением
Во время анализа все взаимодействия представляются в виде событий. Управление аппаратурой соответствует этой модели, но необходимо выбрать метод управления программным обеспечением системы. Существует два класса методов управления программным обеспечением: методы внешнего управления и методы внутреннего управления.
Известны три метода внешнего управления:
1) последовательное управление процедурами,
2) последовательное управление событиями,
3) параллельное асинхронное управление.
При последовательном управлении процедурами в каждый момент времени действует одна из процедур; это наиболее легко реализуемый способ управления. При последовательном управлении событиями управлением занимается монитор (диспетчер). При параллельном асинхронном управлении этим заведует несколько управляющих объектов (мониторов).
Внутреннее управление связано с потоками управления в процессах. Оно существует только в реализации и потому не является только последовательным или параллельным. В отличие от внешних событий, внутренние передачи управления, как, например, вызовы процедур или обращения к параллельным задачам, контролируются программой и могут быть структурированы в случае необходимости.
Здесь мы рассматриваем в основном процедурное программирование, но, конечно, возможны и другие парадигмы, как, например, логические программные системы, функциональные программные системы и другие виды непроцедурных программных систем. В этом курсе такие системы не рассматриваются.
Пограничные ситуации
Необходимо предусмотреть поведение каждого объекта и всей системы в пограничных ситуациях: инициализации, терминации и обвале.
Инициализация. Перед тем как начать работать, система (объект) должна быть приведена в фиксированное начальное состояние: должны быть проинициализированы все константы, начальные значения глобальных переменных и параметров, задачи и, возможно, сама иерархия классов. Во время инициализации, как правило, бывает доступна лишь часть возможностей системы.
Терминация. Терминация состоит в освобождении всех внешних ресурсов, занятых задачами системы.
Обвал. Обвал – это незапланированная терминация системы. Обвал может возникнуть в результате ошибок пользователя, нехватки ресурсов или внешней аварии. Причиной обвала могут быть и ошибки в программном обеспечении системы.