Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (1158633), страница 68
Текст из файла (страница 68)
Нужно стараться вводить по крайней мере один уровень абстрагирования между приложением и любыми сервисами, предоставляемыми операционной системой или оборудованием. Добавьте уровень классов интерфейса, предоставляющих логические сервисы, и отобразите их на конкретные системно-зависимые сервисы. 14А. Разбиение системы на подсистемы 293 14.4.2. Разделы Разделы (рагг11(опз) делят систему по вертикали на несколько независимых или слабо связанных между собой подсистем, каждая из которых предоставляет сервисы одного типа.
Например, в состав компьютерной операционной системы входят файловая система, диспетчер процессов, система управления виртуальной памятью и система управления устройствами. Подсистемы могут знать о существовании остальных подсистем, но зто знание не является глубоким и не создает серьезных зависимостей на уровне проектирования. Разница между уровнями и разделами состоит в том, что уровни отличаются друг от друга уровнем абстракции.
Разделы же просто делят систему на части, находящиеся на одном и том же уровне абстракции. Еще одно отличие состоит в том, что уровни обязательно зависят друг от друга (обычно по типу клиентсервер). Разделы образуют одноранговую систему и являются относительно независимыми или взаимозависимыми. 14.4.3. Сочетание уровней и разделов Вы можете разбить систему на подсистемы, сочетая уровни и разделы. Уровни могут разбиваться на разделы, а разделы — на уровни. На рис.
14.1 показана схема типичного приложения, использующего имитацию и интерактивную графику. Крупные системы чаше всего требуют использования комбинации уровней н разделов. Рис. 14.1. Схема типичного приложения После определения подсистем высшего уровня необходимо показать информационные потоки.
Иногда все подсистемы взаимодействуют между собой, но чаше всего структура потоков оказывается более простой. Например, вычисления часто организуются в виде конвейера (примером такой структуры является компилятор). Другие системы имеют структуру звезды, в которой главная подсистема управляет всеми взаимодействиями других подсистем. Везде, где зто возможно, следует стремиться упрощать топологию и сокращать количество взаимодействий между подсистемами. Пример с банкоматом. На рис.
14.2 показана архитектура системы банкоматов. Эту систему мы разбиваем на три основных подсистемы: банкоматы, компьютер консорциума, компьютеры банков. Топология — простая звезда: компьютер 294 Глава 14 ° Проектирование системы консорциума взаимодействует со всеми банкоматами и всеми банковскими компь- ютерами (линии связи мы обозначили сотт лпк). Для обращения к банкоматам и компьютерам банков используются коды банкоматов и банков. Бенковский компьютер Компьютер консорциуме Банкометы Рмс. 14.2. Архитектура системы банкоматов 14.5.
Выделение параллелизма В аналитической модели, в реальном мире и в аппаратном обеспечении все объекты действуют параллельно друг с другом. Однако в программной реализации системы не все объекты оказываются параллельными, потому что один процессор может и не обеспечивать одновременное выполнение множества объектов. На практике вы можете реализовать несколько объектов на одном процессоре только в том случае, если эти объекты не могут быть активными одновременно. Одной из важных задач этапа проектирования системы является выделение объектов, которые должны быть активными одновременно, а также объектов, активность которых является взаимоисключающей. Объекты второй группы можно объединить в один поток управления (задачу).
14.5.1. Выделение неотъемлемой параллельности Основным средством для поиска параллелизмов является модель состояний. Два объекта являются неотъемлемо параллельными, если они могут одновременно получать информацию о событиях, не взаимодействуя друг с другом. Если события не синхронизированы друг с другом, вы не можете объединить эти объекты в один поток управления.
Например, подсистемы управления двигателем и крыльями самолета должны работать параллельно (хоть и не полностью независимо друг от друга). Конечно, лучше всего работать с независимыми подсистемами, потому что их можно распределить по разным аппаратным устройствам без всяких затрат на взаимодействие. 14.6.
Распределение подсистем 295 Не обязательно реализовывать неотъемлемо параллельные подсистемы в виде разных аппаратных устройств. Аппаратные прерывания, операционные системы и механизмы поддержки многозадачности предназначены именно для моделирования логической параллельности в однопроцессорной системе. Физически параллельные входные сигналы должны, разумеется, поставляться разными датчиками, ио если на выходной сигнал не накладывается никаких временных ограничений, многозадачная операционная система вполне может обеспечить моделирование параллельности. Чаще всего объекты, которые должны быть реализованы в виде отдельных аппаратных устройств, перечисляются в описании задачи. Пример с банкоматом.
Если бы постановка задачи из главы 11 содержала утверждение, что каждый банкомат должен иметь возможность работать автономно в случае отказа центральной системы (возможно, с некоторыми ограничениями на объем транзакций), мы должны были бы обязательно установить на каждый банкомат собственный процессор с полной программой управления.
14.5.2. Определение параллельных задач Все объекты с концептуальной точки зрения являются параллельными, однако на практике объекты часто зависят друг от друга. Изучая диаграммы состояний отдельных объектов и взаимодействие между ними, которое осуществляется посредством событий, вы можете объединять группы объектов в один поток управления. Поток управления (ГЬгеао о1 сопсго1) — это маршрут, проходящий через несколько диаграмм состояний, на котором только один объект может быть активен в конкретный момент времени. Поток остается внутри одной диаграммы состояний до тех пор, пока объект не пошлет событие другому объекту и не перейдет в состояние ожидания другого события.
Тогда поток управления переходит к получателю события и остается у него до тех пор, пока не возвратится к исходному объекту вместе с новым событием. Поток может разделиться в том случае, если объект отправит событие и продолжит свое выполнение. Только один объект может быть активен в каждом потоке управления в конкретный момент времени. Потоки управления в компьютерных системах реализуются в виде задач.
Пример с банкоматом. Пока банк проверяет счет или обрабатывает транзакцию, банкомат находится в состоянии ожидания. Если центральный компьютер непосредственно управляет банкоматом, мы можем объединить объект банкомата с объектом банковской транзакции в одну задачу. 14.6. Распределение подсистем Параллельные подсистемы должны быть распределены по аппаратным устройствам: универсальным процессорам или специализированным функциональным блокам. Вы должньс ° оценить потребности кахоюй подсистемы в вычислительных ресурсах и объем ресурсов, необходимый для удовлетворения этих потребностей; 296 Глава 14 ° Проектирование системы ° выбрать аппаратную или программную реализацию подсистемы; ° распределить программные подсистемы по процессорам с учетом требований, предъявляемых к производительности, так, чтобы минимизировать взаимодействие между процессорами; ° определить связность физических модулей, реализующих подсистемы.
14.6.1. Оценка требований к аппаратным ресурсам Решение использовать несколько процессоров или иных аппаратных модулей принимается на основании сведений о потребностях в аппаратных ресурсах, превышающих возможности одного процессора. Количество процессоров зависит от объема вычислений и скорости компьютера. Например, военный радиолокатор выдает слишком большой объем данных в короткий промежуток времени, чтобы его мог обработать один процессор, даже очень быстрый. Поэтому данные должны быть обработаны множеством параллельных компьютеров, чтобы потом на их основании можно было проанализировать степень угрозы. Проектировщик системы должен оценить требуемую могцность процессора, определив стационарную нагрузку (произведение количества транзакций в секунду на время обработки транзакции).
Приближенное значение часто оказывается неточным. Бывает полезно провести несколько экспериментов. Оценочное значение нужно несколько завысить, чтобы учесть переходные эффекты, связанные со случайными флуктуациями нагрузки и синхронизированными всплесками активности. Избыточная емкость зависит от приемлемой частоты отказов, вызванных нехваткой ресурсов. Вы должны учитывать не только стационарную (среднюю) нагрузку, но и пиковую.
Пример с банкоматом. Сам по себе банкомат относительно прост. Он должен обслуживать интерфейс пользователя и выполнять нетрудоемкие локальные вычисления. Каждому банкомату будет достаточно одного процессора. Компьютер консорциума фактически играет роль маршрутизатора: он принимает запросы банкоматов и передает их компьютерам банков. Если сеть банкоматов должна быть достаточно крупной, ее придется разбить на сегменты и установить на компьютер консорциума несколько процессоров, чтобы он не стал узким местом системы. Банковские компьютеры выполняют обработку данных и работают с простыми приложениями базы данных.
Поставщики баз данных выпускают как однопроцессорные, так и многопроцессорные версии своих продуктов. Выбор зависит от необходимой пропускной способности и надежности. 14.6.2. Выбор между аппаратным и программным обеспечением Объектно-ориентированный подход удобен для анализа аппаратных устройств. Каждое устройство — это объект, существующий параллельно с другими объектами (устройствами или программами). Вы должны распределить подсистемы по аппаратным устройствам и программным комплексам. Существует две причины, 14.б.
Распределение подсистем 297 по которым некоторая подсистема может быть реализована в виде аппаратного устройства. ° Стоимость. Существующее оборудование в точности предоставляет требуемую функциональность. В наше время проще купить математический сопроцессор, чем реализовывать его функции программными средствами. Датчики и эффекторы просто обязаны быть аппаратными устройствами. ° Производительность. Система требует более высокой производительности, чем может предоставить универсальный процессор, и при этом существует более эффективное оборудование.