Lecture07 (1133564), страница 2
Текст из файла (страница 2)
В итоге это привело к выходу на гораздо более низкую, чемпланировалось, орбиту, потере управления и гибели аппарата стоимостью около 130 миллионовдолларов [4].Поэтому более аккуратное решение — использовать для хранения данных числовых измеренийобъекты специального класса Quantity, в полях которого хранится не только значение величины,но и единица ее измерения.
Кроме того, весьма полезно определить операции сложения,вычитания и сравнения таких величин.Quantity+ amount : Number+ units : Unit+, -, <, >, ==Рисунок 40. Класс для представления величин, имеющих разные единицы измерения.Помимо измерений, использовать такое представление удобно и для сумм денег в финансовыхсистемах. Аналогом единиц измерения в этом случае выступают различные валюты. Отфизических величин валюты отличаются изменяемым отношением, с помощью которого ихможно переводить одну в другую. Это отношение может зависеть от времени. Кроме того,существуют единицы измерения физических величин, которые преобразуются друг в друга болеесложным, чем умножение на некоторое число, способом — например, градусы по Фаренгейту и поЦельсию.Эти примеры могут быть охвачены образцом преобразование, который позволяет представлятьв системе правила преобразования различных единиц измерения друг в друга.
Для большинствапреобразований достаточно величины отношения между единицами, быть может, зависящего отвремени, поэтому стоит выделить класс для хранения этого отношения.Quantity+ amount : Number+ units : Unit+ toUnitConversion+ from+, -, <, >, ==Ratio+ convert()0..1+ ratio : NumberРисунок 41. Представление возможных преобразований между единицами измерений.Другой тип связи между различными единицами измерения — так называемые составныеединицы, например Ньютон для измерения силы (1 Н = 1 кг*м/с2). Разрешение подобного родасоотношений может быть реализовано, если определить два подкласса класса Unit — один дляпредставления простых единиц, PrimeUnit, другой для представления составных, CompoundUnit, иопределить две связи, сопоставляющие одной составной единице два мультимножества простых— те, что участвуют в ней в положительных степенях, и те, что участвуют в отрицательных.UnitPrimeUnit0..*+ direct0..*+ inverseCompoundUnitРисунок 42.
Представление составных единиц измерений.В медицине, где хранение данных измерений имеет особое значение, измерения почти всегдасвязываются с пациентом, для которого они производились. К тому же, медицинских измерений,имеющих, например, значение длины, очень много. Для того, чтобы различать оба этих атрибутаизмерения — объект измерения и вид измерения (например, пациент Иванов Петр Сергеевич иокружность его талии), их нужно явно ввести в модель. Так возникает образец измерение.
Этотобразец становится полезным, если имеется очень много различных измерений для каждогообъекта, группируемых в достаточно много видов измеряемых явлений.Object10..*MeasurementQuantity0..*1PhenomenonTypeРисунок 43. Набор классов для представления результатов измерений.Бывает, однако, необходимо вести учет не только количественных измерений, но икачественных наблюдений, результат которых представляется не числом, а некоторым значениемперечислимого типа (группа крови II, ожог 3-й степени и пр.).
При этом наблюдения оченьпохожи на измерения: относятся к некоторому объекту и определяют некоторое значение длякакого-то вида наблюдений.Для совместного представления результатов наблюдений и измерений можно использоватьобразец наблюдение, структура классов которого показана на Рис. 44. Требуется некотораяпривычка, чтобы быстро разложить по этим классам какой-нибудь реальный пример. Например,группа крови — вид явлений, II — явление этого вида, наблюдение заключается в том, что у ПетраСергеевича Иванова была обнаружена именно такая группа крови. Эти усилия, однако, с лихвойокупаются огромным количеством фактов, которые без изменений можно уложить в эту схему.Object1Observation0..*CategoryObservation0..*Measurement1Phenomenon0..*1PhenomenonTypeQuantityРисунок 44.
Набор классов для представления результатов как измерений, так и наблюдений.Архитектурные стилиАрхитектурный стиль определяет основные правила выделения компонентов и организациивзаимодействия между ними в рамках системы или подсистемы в целом. Различныеархитектурные стили подходят для решения различных задач в плане обеспечениянефункциональных требований — различных уровней производительности, удобстваиспользования, переносимости и удобства сопровождения.
Одну и ту же функциональностьможно реализовать, используя разные стили.Работа по выделению и классификации архитектурных стилей была проведена в середине1990-х годов. Ее результаты представлены в работах [5,6]. Ниже приведена таблица некоторыхархитектурных стилей, выделенных в этих работах.Виды стилей иконкретные стилиКонтекст использования и основные решенияКонвейеробработки данных(data flow)Система выдает четко определенные выходныеданные в результате обработки четкоопределенных входных данных, при этом процессобработки не зависит от времени, применяетсямногократно, одинаково к любым данным навходе.
Обработка организуется в виде набора (необязательно последовательности) отдельныхкомпонентов-обработчиков, передающих своирезультаты на вход другим обработчикам или навыход всей системы.Важными свойствами являются четкоопределенная структура данных и возможностьинтеграции с другими системами.ПримерыОдин-единственный вывод производится наПакетнаяобработка (batch основе чтения некоторого одного набора данныхна входе, промежуточные преобразованияsequential)организуются в виде последовательности.Сборка программнойсистемы: компиляция,сборка системы, сборкадокументации,выполнение тестов.Каналы ифильтры (pipeand-filter)Нужно обеспечить преобразование непрерывныхпотоков данных.
При этом преобразованияинкрементальны и следующее может быть начатодо окончания предыдущего. Имеется, возможно,несколько входов и несколько выходов.В дальнейшем возможно добавлениедополнительных преобразований.Утилиты UNIXЗамкнутый циклуправления(closed-loopcontrol)Нужно обеспечить обработку постояннопоступающих событий в плохо предсказуемомокружении.Используется общий диспетчер событий, которыйклассифицирует событие и отдает его наасинхронную обработку обработчику событийтакого типа, после чего диспетчер снова готоввоспринимать события.Встроенные системыуправления вавтомобилях, авиации,спутниках.Обработка запросов насильно загруженныхWeb-серверах.Обработка действийпользователя в GUI.Вызов-возврат(call-return)Порядок выполнения действий четко определен,отдельные компоненты не могут выполнятьполезную работу, не получая обращения отдругих.ПроцедурнаядекомпозицияДанные неизменны, процедуры работы с нимимогут немного меняться, могут возникать новые.Выделяется набор процедур, схема передачиуправления между которыми представляет собойдерево с основной процедурой в его корне.Основная схемапостроения программдля языков C, Pascal,AdaАбстрактныетипы данных(abstract datatypes)В системе много данных, структура которыхможет меняться.
Важны возможности внесенияизменений и интеграции с другими системами.Выделяется набор абстрактных типов данных,каждый из которых предоставляет наборопераций для работы с данными такого типа.Внутреннее представление данных скрывается.Библиотеки классов икомпонентовМногоуровневаясистема (layers)Имеется естественное расслоение задач системына наборы задач, которые можно было бы решатьпоследовательно — сначала задачи первогоуровня, затем, используя полученные решения, —второго, и т.д. Важны переносимость ивозможность многократного использованияотдельных компонентов.Компоненты разделяются на несколько уровнейтаким образом, что компоненты данного уровнямогут использовать для своей работы толькососедей или компоненты предыдущего уровня.Телекоммуникационные протоколы в моделиOSI (7 уровней),реальные протоколысетей передачи данных(обычно 5 уровней илименьше).Системыавтоматизациипредприятий (уровниинтерфейсаМогут быть более слабые ограничения, например, пользователяобработки запросовкомпонентам верхних уровней разрешенохранения данных).использовать компоненты всех нижележащихуровней.Клиент-серверИнтерактивныесистемыРешаемые задачи естественно распределяютсямежду инициаторами и обработчиками запросов,возможно изменение внешнего представленияданных и способов их обработки.Необходимость достаточно быстро реагироватьна действия пользователя, изменчивостьпользовательского интерфейса.Данные–представление–обработка(model-viewcontroller, MVC)Изменения во внешнем представлениидостаточно вероятны, одна и та же информацияпредставляется по-разному в нескольких местах,система должна быстро реагировать на измененияданных.Выделяется набор компонентов, ответственных захранение данных, компоненты, ответственные заих представления для пользователей, икомпоненты, воспринимающие команды,преобразующие данные и обновляющие ихпредставления.Представление–абстракция–управление(presentationabstractioncontrol)Интерактивная система на основе агентов,имеющих собственные состояния ипользовательский интерфейс, возможнодобавление новых агентов.Отличие от предыдущей схемы в том, что длякаждого отдельного набора данных его модель,представление и управляющий компонентобъединяются в агента, ответственного за всюработу именно с этим набором данных.