Моделирование компонентов
Проектирование технического обеспечения системы. Уточнение состава перифирийной техники, аппаратной платформы и операционной среды ИС. Моделирование технической и программной системы на основе диаграмм компонентов и размещения.
А.14.1 Цель работы -
Спроектировать техническое обеспечение системы. Определить состав перифирийной техники, аппаратной платформы и операционной среды ИС, а также основные компоненты программного обеспечения.
А.14.2 Предмет и содержание работы
Предметом работы является проектирование технического обеспечения системы; уточнение состава перифирийной техники, аппаратной платформы и операционной среды ИС; моделирование технической и программной системы на основе диаграмм компонентов и размещения.
При этом изучаются методы и средства построения диаграмм реализации – диаграмм компонентов и диаграмм размещения UML.
Статические и динамические модели описывают логическую организацию системы, отражают логический мир программного приложения. Модели реализации обеспечивают представление системы в физическом мире, рассматривая вопросы упаковки логических элементов в компоненты и размещения компонентов в аппаратных узлах.
Теоретические сведения содержатся в лекциях и литературе.
А.14.3 Оборудование и технические средства
Техническими средствами для выполнения работы являются средства лаборатории «Электронный офис», обеспечивающие доступ к сетевому серверу кафедры.
А.14.4 Содержание и последовательность работы
1) Выполнить анализ архитектуры АИС с целью определения:
- типа АИС;
- состава комплекса технических средств (КТС-перифирийной техники и аппаратной платформы);
- системного и прикладного ПО.
2) Выполнить описание технического и программного (в т.ч. системного и инструментального) обеспечения.
3) Выполнить следующие работы технического проектирования:
- П11 Уточнение состава периферийной техники;
- П12 Уточнение состава аппаратной платформы проекта.
4) Выявить компоненты технического и программного обеспечения АИС.
5) Построить диаграмму компонентов UML.
6) Построить диаграмму размещения компонентов UML.
А.14.5 Требования к оформлению работы
1) Описание технического и программного (в т.ч. системного и инструментального) обеспечения (архитектуры и конкретных наименований и параметров технических и программных средств);
2) Диаграмма компонентов;
3) Диаграмма размещения.
Отчет оформляется в виде принтерной распечатки с соблюдением требований ГОСТ 2.105 на листах формата A4.
А.14.6 Методические указания к выполнению работы
Статические и динамические модели описывают логическую организацию системы, отражают логический мир программного приложения. Модели реализации обеспечивают представление системы в физическом мире, рассматривая вопросы упаковки логических элементов в компоненты и размещения компонентов в аппаратных узлах.
Компонентные диаграммы
Компонентная диаграмма — первая из двух разновидностей диаграмм реализации, моделирующих физические аспекты объектно-ориентированных систем. Компонентная диаграмма показывает организацию набора компонентов и зависимости между компонентами.
Элементами компонентных диаграмм являются компоненты и интерфейсы, а также отношения зависимости и реализации. Как и другие диаграммы, компонентные диаграммы могут включать примечания и ограничения. Кроме того, компонентные диаграммы могут содержать пакеты или подсистемы, используемые для группировки элементов модели в крупные фрагменты.
Компоненты
По своей сути компонент является физическим фрагментом реализации системы, который заключает в себе программный код (исходный, двоичный, исполняемый), сценарные описания или наборы команд операционной системз (имеются в виду командные файлы). Язык UML дает следующее определение.
Компонент — физическая и заменяемая часть системы, которая соответствует набору интерфейсов и обеспечивает реализацию этого набора интерфейсов.
Интерфейс — очень важная часть понятия «компонент». Графически компонент изображается как прямоугольник с вкладками, обычно включающий имя (рисунок А.14.1).
Рисунок А.14.1 - Обозначение компонента
Компонент — базисный строительный блок физического представления ПО, поэтому интересно сравнить его с базисным строительным блоком логического представления ПО — классом.
Сходные характеристики компонента и класса:
1) наличие имени;
2) реализация набора интерфейсов;
3) участие в отношениях зависимости;
4) возможность быть вложенным;
5) наличие экземпляров (экземпляры компонентов можно использовать только в диаграммах размещения).
Различия между компонентом и классом:
1) Классы — логические абстракции, компоненты — физические предметы, которые живут в мире битов. В частности, компоненты могут «жить» в физических узлах, а классы лишены такой возможности.
2) Компоненты являются физическими упаковками, контейнерами, инкапсулирующими в себе различные логические элементы. Они — элементы абстракций другого уровня.
3) Классы имеют свойства и операции. Компоненты имеют только операции, которые доступны через их интерфейсы.
Рисунок А.14.2 - Классы в компоненте
Интерфейсы
Интерфейс — список операций, которые определяют услуги класса или компонента. С помощью интерфейсных разъемов компоненты стыкуются друг с другом, объединяясь в систему.
Очень важна взаимосвязь между компонентом и интерфейсом. Возможны два способа отображения взаимосвязи между компонентом и его интерфейсами. В первом, свернутом способе, как показано на рисунке А.14.3, интерфейс изображается в форме пиктограммы. Компонент Образ.java, который реализует интерфейс, соединяется со значком интерфейса (кружком) НаблюдательОбраза простой линией. Компонент РыцарьПечальногоОбраза.jауа, который использует интерфейс, связан с ним отношением зависимости.
Рисунок А.14.3 - Представление интерфейса в форме пиктограммы
Второй способ представления интерфейса иллюстрирует рисунок А.14.4. Здесь используется развернутая форма изображения интерфейса, в которой могут показываться его операции. Компонент, который реализует интерфейс, подключается к нему отношением реализации. Компонент, который получает доступ к услугам другого компонента через интерфейс, по-прежнему подключается к интерфейсу отношением зависимости.
Рисунок А.14.4 - Развернутая форма представления интерфейса
По способу связи компонента с интерфейсом различают:
1) экспортируемый интерфейс — тот, который компонент реализует и предлагает как услугу клиентам;
2) импортируемый интерфейс — тот, который компонент использует как услугу другого компонента.
У одного компонента может быть несколько экспортируемых и несколько импортируемых интерфейсов.
Тот факт, что между двумя компонентами всегда находится интерфейс, устраняет их прямую зависимость. Компонент, использующий интерфейс, будет функционировать правильно вне зависимости от того, какой компонент реализует этот интерфейс. Это очень важно и обеспечивает гибкую замену компонентов в интересах развития системы.
Компоновка системы
За последние полвека разработчики аппаратуры прошли путь от компьютеров размером с комнату до крошечных «ноутбуков», обеспечивших возросшие функциональные возможности. За те же полвека разработчики программного обеспечения прошли путь от больших систем на Ассемблере и Фортране до еще больших систем на C++ и Java.
Разработчик аппаратуры создает систему из готовых аппаратных компонентов (микросхем), выполняющих определенные функции и предоставляющих набор услуг через ясные интерфейсы. Задача конструкторов упрощается за счет повторного использования результатов, полученных другими.
Повторное использование — магистральный путь развития программного инструментария. Создание нового ПО из существующих, работоспособных программных компонентов приводит к более надежному и дешевому коду. При этом сроки разработки существенно сокращаются.
Основная цель программных компонентов — допускать сборку системы из двоичных заменяемых частей. Они должны обеспечить начальное создание системы из компонентов, а затем и ее развитие — добавление новых компонентов и замену некоторых старых компонентов без перестройки системы в целом. Ключ к воплощению такой возможности — интерфейсы. После того как интерфейс определен, к выполняемой системе можно подключить любой компонент, который удовлетворяет ему или обеспечивает этот интерфейс. Для расширения системы производятся компоненты, которые обеспечивают дополнительные услуги через новые интерфейсы. Такой подход основывается на особенностях компонента:
1) Компонент физичен. Он живет в мире битов, а не логических понятий и не зависит от языка программирования.
2) Компонент — заменяемый элемент. Свойство заменяемости позволяет заменить один компонент другим компонентом, который удовлетворяет тем же интерфейсам. Механизм замены оговорен современными компонентными моделями (COM, COM+, CORBA, Java Beans), требующими незначительных преобразований или предоставляющими утилиты, которые автоматизируют механизм.
3) Компонент является частью системы, он редко автономен. Чаще компонент сотрудничает с другими компонентами и существует в архитектурной или технологической среде, предназначенной для его использования. Компонент связан и физически, и логически, он обозначает фрагмент большой системы.
4) Компонент соответствует набору интерфейсов и обеспечивает реализацию этого набора интерфейсов.
Вывод: компоненты — базисные строительные блоки, из которых может проектироваться и составляться система. Компонент может появляться на различных уровнях иерархии представления сложной системы. Система на одном уровне абстракции может стать простым компонентом на более высоком уровне абстракции.
Разновидности компонентов
Мир современных компонентов достаточно широк и разнообразен. В языке UML для обозначения новых разновидностей компонентов используют механизм стереотипов. Стандартные стереотипы, предусмотренные в UML для компонентов:
«executable» - Компонент, который может выполняться в физическом узле (имеет расширение.ехе)
«library» - Статическая или динамическая объектная библиотека (имеет расширение.dll)
«file» - Компонент, который представляет файл, содержащий исходный код или данные (имеет расширение.ini)
«table» - Компонент, который представляет таблицу базы данных (имеет расширение.tbl,.fdb,.gdb,.dbf)
«document» - Компонент, который представляет документ (имеет расширение.hlp)
В языке UML не определены пиктограммы для перечисленных стереотипов, применяемые на практике пиктограммы компонентов показаны на рисунке А.14.5.
Рисунок А.14.5 – Пиктограммы компонентов, используемые на практике