Глава 5. RATIONAL ROSE.
 

5.1. Общая характеристика Rational Rose
Rational Rose-это программный пакет для визуального объектно-ориентированного моделирования систем на основе классов и их взаимодействия, а проще  это визуальный редактор, позволяющий моделировать программные системы любой сложности на основе графических диаграмм языка UML (UnifiedModelingLanguage).
Язык UML кардинально отличается от таких языков про­граммирования как, например, Visual C++ или Visual Basic и предназначен для описания моделей; причем для работы с этим языком используется специальные редакторы диаграмм, такие как Rational Rose. Этот язык слишком сложен, чтобы оперировать им вручную. К счастью, пользователь пакета Rational Rose пол­ностью огражден от ручного ведения кода, и Rational Rose сам создает и сохраняет по визуальным диаграммам все, что необходимо.
UML не зависит от объектно-ориентированных языков программирования и может поддерживать любой из них. Этот язык также не зависит от используемой методологии разработки проекта, и созданные на UML диаграммы выразительны и понятны для всех разработчиков, вовлеченных в проект, причем, что немаловажно, не только в момент разработки, но и много месяцев спустя. UML является открытым и обладает средствами расширения базового ядра. На UML можно содержательно описывать классы, объекты и компоненты в различных предметных областях, часто сильно отличающихся друг от друга. Однако пакет Rational Rose поддерживает не только UML, но и другие нотации создания диаграмм, такие как ОМТ или Booch.
Мощный толчок CASE-средства получили в пору внедрения объектно-ориентированной технологии разработки программного обеспечения. Старые технологии разработки программ «сверху им из» уже не могли справиться с все усложняющимися и труднообозримыми программными комплексами.
Сегодня Rational Rose лидирует среди других CASE-средств, и это не случайно. То, что этот пакет позволяет создавать сложные программные системы от замысла до создания исходного кода, привлекает не только проектировщиков систем, но и программистов-разработчиков. За рубежом изза сильной конкуренции между фирмами-разработчиками программ ни один, даже небольшой программный проект, не обходится без применения CASE-средств. Уже более 50 тысяч больших и малых компаний по всему миру используют Rational Rose для разработки программных систем.

5.2. Возможности Rational Rose
Инструменты компании Rational Software как нельзя лучше подходят для объектно-ориентированной разработки программ от замысла до реализации в коде. Rational Rose в соединении с другими программными пакетами приобретает свою неповторимую мощь: в сочетании со средствами документирования (Rational SoDA) он может давать полное представление о проекте.
Полностью интегрируясь с Microsoft Visual Studio, этот пакет пет возможность получать исходный код взаимодействующих классов и строить визуальные модели по уже написанному исходному коду.
Открытая архитектура Rational Rose позволяет включать в нею поддержку языков программирования, которые не предусмотрены стандартной поставкой, например, языка Assembler, для чего достаточно написать лишь собственный модуль.
Главное отличие Rational Rose от других CASE-средств в том, что он полезен не только проектировщику систем, но и разработчику программного кода.
Для проектировщика преимущества использования CASE-средств не вызывают сомнений, но для разработчика кода использование Rational Rose дает такие же преимущества, как при смене велосипеда на самолет.
На первый взгляд управление кажется сложным, но постепенно к нему привыкаешь. Имея такой инструмент, достижение целей становится проще и быстрее, а вся работа может быть окинута одним взглядом.
Однако нужно понимать, что Rational Rose не всемогущ. Диаграммы не появляются сами по себе. Это результат кропотливого проектирования системы, который лишь отражается на диаграммах, т.е. проектировать всетаки придется, но с этим пакетом данный процесс будет идти значительно проще и нагляднее.
К процессу проектирования можно и нужно привлекать заказчиков системы, чтобы они еще до написания исходного кода могли видеть процессы, происходящие в системе, поняли бы ее возможности и ограничения и могли дать свои замечания и поже­лания, которые «имелись в виду», но по каким-то причинам не были отражены в проектном задании. И самое главное, Rational Rose не создает готовый исходный код. Пакет сможет создать основу для системы, заготовки классов вместе с их взаимодействием, а наполнять методы содержанием должен все-таки программист. Однако исправив что-либо даже в структуре классов, программист всегда может получить визуальное отражение этих изменений в Rational Rose.
Преимущества от применения Rational Rose значительны и состоят в:

  1. сокращении цикла разработки приложения «заказчик программист  заказчик»;
  2. увеличении продуктивности работы программистов: меньше ручного кодирования  меньше ошибок, меньше ошибок меньше отладки, меньше отладки  больше продуктивность;
  3. улучшении потребительских качеств создаваемых программ за счет ориентации на пользователей и бизнес;
  4. способности вести большие проекты и группы проектов;
  5. возможности повторного использования уже созданного ПО за счет упора на разбор их архитектуры и компонентов;
  6. язык UML служит универсальным «мостиком» между разработчиками из разных отделов.

5.3. Главное окно Rational Rose
После запуска открывается главное окно программы. В верхней части экрана, как и у большинства редакторов в стиле Windows, находится меню и строка инструментов (ToolBar), ко­торую, впрочем, как и в других программах, можно «перетащить» мышкой в любое удобное место.
Набор инструментов можно настроить, скрывая менее используемые или активизируя те, которые в текущий момент нужны. Все окна и строки инструментов можно расположить в зависимости от предпочтений пользователя, и такое положение при запуске не является обязательным.
Не следует изменять место положение элементов, по крайней мере, на первых порах работы с пакетом, по той причине, что затем можно долго искать «отбуксированные» в неизвестном направлении или скрытые панели инструментов. Если все-таки какие-то панели «потерялись», нужно заглянуть в пункт меню View.
Слева находится окно Browser для быстрого доступа к диаграммам, позволяющее легко перемещаться по дереву диаграмм, буксировать диаграммы мышкой и изменять структуру модели по своему усмотрению.
Как и во многих пакетах, здесь есть возможность буксировки диаграмм не только в пределах окна Browser, но и непосредственно на рабочий стол RationalRose.
Под окном Browserнаходится окно Documentation(документация), в котором появляется описание, введенное разработчиком для выделенного в текущий момент элемента.
Документирование элементов непосредственно в момент разработки является неплохой возможностью, для того чтобы не забыть назначение создаваемых объектов.
В правой части экрана находятся те диаграммы, которые открыты в текущий момент; обычно это поле называется рабочим столом Rational Rose. При создании новой модели на рабочем столе открывается ClassDiagram(диаграмма классов).
Присмотревшись, можно заметить маленькую «ладошку» в правом нижнем углу окна диаграммы классов. Как в последствии можно убедиться, этот значок присутствует во всех окнах создаваемых диаграмм. Если на него нажать и удерживать, то появится окно Overview, которое в уменьшенном масштабе покажет содержимое текущего окна. При этом все перемещения мыши будут приводить к перемещению по диаграмме. Как только вы отпустите мышь, окно Overviewбудет закрыто, и диаграмма будет отображена в том месте, в которое вы переместились с помощью курсора мыши. Окно Overviewпозволяет легко перемещаться по диаграмме, не меняя ее масштаба, без труда, одним щелчком мыши, «перебрасывать» окно в любую часть диаграммы.
Между окном Browserи окном Diagramнаходится строка инструментов, которая изменяется в зависимости от выбранной диаграммы.
В этом пакете огромную роль играет контекстное меню, которое активизируется при помощи правой кнопки мыши. Каждый объект в Rational Rose имеет свое контекстное меню, через которое можно изменить свойства объекта. Также посредством этого меню можно получить доступ к дополнительным возможностям, связанным с конкретным объектом, так что не надо пренебрегать пользованием правой кнопкой мыши в течение работы, так как это может оказаться удобнее, чем перебирать пункты верхнего меню.
Внизу рабочего стола находится обычно свернутое окно Log(протокол), в котором Rational Rose постоянно фиксирует все действия, произведенные над диаграммами. Программа помещает туда также и сообщения об ошибках, которые произошли в ходе работы. Все сообщения помещаются в окно независимо от того, свернуто ли оно или совсем закрыто.

5.4. Диаграммы Rational Rose
В распоряжение проектировщика системы Rational Rose пре­доставляет следующие типы диаграмм, последовательное создание которых позволяет получить полное представление о всей проектируемой системе и об отдельных ее компонентах:

  • Use case diagram (диаграммы сценариев);
  • Deployment diagram (диаграммы топологии);
  • Statechart diagram (диаграммы состояний);
  • Activity diagram (диаграммы активности);
    'Interaction diagram (диаграммы взаимодействия);
  • Sequencediagram(диаграммы последовательностей действий);
  • Collaboration diagram (диаграммы сотрудничества);
  • Class diagram (диаграммы классов);
  • Component diagram (диаграммы компонент).

Use case diagram (диаграммы сценариев)
Этот вид диаграмм позволяет создать список операций, которые выполняет система. Часто этот вид диаграмм называют диаграммой функций, потому что на основе набора таких диаграмм создается список требований к системе и определяется множество выполняемых системой функций.
Каждая такая диаграмма или, как ее обычно называют, каждый Usecaseэто описание сценария поведения, которому следуют действующие лица (Actors). Данный тип диаграмм используется при описании бизнес-процессов автоматизируемой предметной области, определений требований к будущей программной системе. Отражает объекты как системы, так и предметной области, и задачи, ими выполняемые.

Deployment diagram (диаграммы топологии)
Этот вид диаграмм предназначен для анализа аппаратной части системы. В прямом переводе с английского Deploymentозначает «развертывание», но термин «топология» точнее отражает сущность этого типа диаграмм. Для каждой модели создается только одна такая диаграмма, отображающая процессоры (Processor), устройства (Device) и их соединения.
Обычно этот тип диаграмм используется в самом начале проектирования системы для анализа аппаратных средств, на которых она будет эксплуатироваться.

State Machine diagram (диаграммы состояний)
Каждый объект системы, обладающий определенным поведением, может находиться в определенных состояниях, переходить из состояния в состояние, совершая определенные действия в процессе реализации сценария поведения объекта. Поведение большинства объектов реальных систем можно представить с точки зрения теории конечных автоматов, т.е. поведение объекта отражается в его состояниях, и данный тип диаграмм позволяет отразить это графически. Для этого используется два вида диаграмм: Statechartdiagram(диаграмма состояний) и Activitydiagram(диаграмма активности).

Statechart diagram (диаграмма состояний)
Диаграмма состояний (Statechart) предназначена для отображения состояний объектов системы, имеющих сложную модель поведения. Это одна из двух диаграмм StateMachine, доступ к которой осуществляется из одного пункта меню.

Activity diagram (диаграммы активности)
Это дальнейшее развитие диаграммы состояний. Фактически данный тип диаграмм может использоваться и для отражения состояний моделируемого объекта, однако, основное назначение Activitydiagramв том, чтобы отражать бизнес-процессы объекта. Этот тип диаграмм позволяет показать не только последовательность процессов, но и ветвление и даже синхронизацию процессов, а также проектировать алгоритмы поведения объектов любой сложности, в том числе может использоваться для составления блок-схем.

Interaction diagram (диаграммы взаимодействия)
Этот тип диаграмм включает в себя Sequencediagram(диаграммы последовательностей действий) и Collaborationdiagram(диаграммы сотрудничества), позволяющие с разных точек зрения рассмотреть взаимодействие объектов в создаваемой системе.

Sequence diagram (диаграммы последовательностей действий)
Взаимодействие объектов в системе происходит посредством приема и передачи сообщений объектами-клиентами и обработки этих сообщений объектам и серверами. При этом в разных ситуациях одни и те же объекты могут выступать и в качестве клиентов, и в качестве серверов.
Данный тип диаграмм позволяет отразить последовательность передачи сообщений между объектами, и кроме этого не акцентирует внимание на конкретном взаимодействии; главный акцент уделяется последовательности приема/передачи сообщений. Для того чтобы окинуть взглядом все взаимосвязи объектов, служит Collaborationdiagram.

Collaboration diagram (диаграммы сотрудничества)
Этот тип диаграмм позволяет описать взаимодействия объектов, абстрагируясь от последовательности передачи сообщений. На этом типе диаграмм в компактном виде отражаются все принимаемые и передаваемые сообщения конкретного объекта, и типы этих сообщений. По причине того, что диаграммы Sequenceи Collaborationявляются разными взглядами на одни и те же процессы, Rational Rose позволяет создавать из Sequenceдиаграммы диаграмму Collaborationи наоборот, а также производит автоматическую синхронизацию этих диаграмм.

Class diagram (диаграммы классов)
Этот тип диаграмм позволяет создавать логическое представление системы, на основе которого создается исходный код описанных классов.
Значки диаграммы позволяют отображать сложную иерархию систем, взаимосвязи классов (Classes) и интерфейсов (Interfaces). Данный тип диаграмм противоположен по содержа­нию диаграмме Collaboration, на которой отображаются объекты системы. Rational Rose позволяет создавать классы при помощи данного типа диаграмм в различных нотациях.

Component diagram (диаграммы компонентов)
Этот тип диаграмм предназначен для распределения классов и объектов по компонентам при физическом проектировании системы. Часто данный тип диаграмм называют диаграммами модулей.
При проектировании больших систем может оказаться, что система должна быть разложена на несколько сотен или даже тысяч компонентов, и этот тип диаграмм позволяет не потеряться в обилии модулей и их связей.
Для создания систем различных предметных областей общий порядок работы может несколько отличаться от приведенного, поэтому при разработке другой системы необходимо внести в него соответствующие изменения.
Для создания программной системы нашего класса будем использовать описанный ниже порядок работы.
В первую очередь произведем анализ списка операций, которые будет выполнять система, и определим список объектов системы, которые данные функции выполняют. Таким образом, определим требования к системе и границы предметной области. Для этого будем использовать диаграммы Usecase.
Затем, еще до окончательной детализации сценариев поведения, произведем анализ аппаратной части системы при помощи Deploymentдиаграммы. Это скорее задача системного анализа, чем практическая. В общем случае она позволит определиться в таких вопросах как технологичность и стоимость системы, а также определить набор аппаратных средств, на которых предстоит эксплуатировать систему.
Возможно, именно аппаратные средства внесут свои коррективы, ограничения или дополнительные требования к создаваемому программному обеспечению.
Затем определим список классов, которые должны присутствовать в системе, пока без конкретной детализации и подробного описания действий. Для этого будем использовать диаграмму классов (Classdiagram).
После заведения в системе необходимых классов определим поведение конкретных классов при помощи диаграмм Statechartdiagram(диаграмма состояний) и Activitydiagram(диаграммы активности).
Дальнейшая детализация взаимодействия классов будет производиться при помощи Sequencediagram(диаграммы последо­вательностей действий), Collaborationdiagram(диаграммы сотрудничества).
На основании производимых классами действий создадим окончательную иерархию классов системы при помощи диаграммы классов (Classdiagram) и определим компоненты, в которые эти классы необходимо включить при помощи диаграммы компонентов (Componentdiagram).

Разработка  это итерационный процесс. Нельзя за один раз создать полный проект системы. Придется многократно возвращаться к уже созданным диаграммам и вносить в них изменения.

5.5. Определения требований системе при помощи Use Case
Для создания системы необходимо четко представить работу всего механизма, с которым будет иметь дело программная система. Задача проектировщика системы  получить от заказчика нею необходимую информацию еще на этапе проектирования, до того как в создание кода вложены значительные ресурсы. И в этом не последнюю роль может сыграть Rational Rose. Достаточно создавать диаграммы с описанием поведения объектов системы и последовательно уточнять их у заказчика.
В компании Rational разработано программное средство для управления требованиями  RationalRequisitePro, где есть возможность записать требование и сопоставить ему диаграмму UseCase.
Как уже отмечалось выше, данный тип диаграммы предназначен для создания списка операций, которые выполняет система, и часто его называют диаграммой функций, потому что на основе набора таких диаграмм строится набор функций, выполняемых системой и описываются сценарии поведения объектов, которые взаимодействуют с системой.
Запустите Rational Rose и создайте новую пустую модель. Для этого нажмите кнопку Cancelв окне мастера создания модели. Это будет рабочая модель, в которой и должны будут отраже­ны все нюансы системы. Перейдите на диаграмму UseCase.
Rational Rose предоставляет несколько способов создания новых элементов в модели:

  1. можно создавать элементы, пользуясь контекстным меню;
  2. можно создать элементы при помощи Menu: Tools=> Create;
  3. можно создать элементы при помощи строки инструментов.

В первом случае элемент создается непосредственно в модели, но его значок не включается ни в одну диаграмму. После создания элемента таким образом необходимо поместить его на выбранную диаграмму.
Во втором и третьем случае вместе с созданием элемента его значок помещается на текущую диаграмму автоматически, что исключает один промежуточный шаг.
При создании элементов посредством меню Tools программа предоставляет возможность создавать все элементы, которые можно включить в текущую диаграмму, тогда как при создании средствами строки инструментов пользователь ограничен созданием элементов согласно включенным в данную строку значкам.
Для моделирования бизнес-процессов Rational Rose предоставляет дополнительные элементы UseCase, которые можно активизировать при помощи режима настройки инструментов.
Для того чтобы увеличить размер значков, выберите Toulbox=> KCIick => UseLargeButtons. По умолчанию строка инструментов состоит из десяти значков. Некоторые доступны только на данной диаграмме, но есть и такие, которые могут присутствовать на разных диаграммах, выполняя при этом одинаковые функции.

Selection Tool (инструмент выбора)
это основной инструмент, который позволяет выбирать элементы диаграммы для того чтобы производить с ними дальнейшие действия. При создании нового элемента диаграммы необходимо выбрать нужный инструмент в строке инструментов (кнопка «залипает»), а после создания необходимо опять перейти в SelectionTool. Переход в режим выбора происходит автоматически сразу после создания элемента, если не установлен флажок Menu: Todlsi=> Optionsi=>Toolbaris=> Lockselection.

Text Box (текст)
Данный инструмент позволяет создать произвольную надпись на диаграмме, не привязанную ни к какому элементу. Эта надпись не является полноценным элементом модели и не отображается в окне Browse, а используется как комментарий в конкретной диаграмме.
Для создания надписи необходимо нажать кнопку TextBox, при этом курсор примет вид вертикальной стрелки, и щелкнуть на том месте диаграммы, где необходимо создать надпись. В обозначенном квадратными точками в углах окне можно вводить надпись. Для того чтобы изменить введенную надпись, нужно активизировать редактирование двойным щелчком мыши. Для того чтобы изменить шрифт или его размер, воспользуйтесь контекстным меню.

Note (замечание)
Данный инструмент создает элемент замечания, позволяющий вписать в него принятые во время анализа решения. Заметки могут содержать простой текст, фрагменты мода или ссылки на другие документы. Обычно окно Noteсоединяют с другими эле­ментами диаграммы при помощи инструмента AnchorNote, для того чтобы показать к какому элементу диаграммы относится замечание. В этом отличие от элемента TextBox, который распола­гается на диаграмме без присоединения к другим элементам.
Данный элемент не имеет ограничения на количество вводимых символов, и окно Noteможет быть растянуто для того чтобы вместить необходимый текст. При активизации этого инструмента курсор принимает форму креста. Контекстное меню для значка Noteпозволяет кроме установки шрифта устанавливать цвет линий и заливки.
Курсор принимает форму креста при создании элементов диаграммы, являющихся объектами, и форму стрелки при создании связей.

Note Anchor (якорь для замечания)
Данный инструмент позволяет соединить элемент Noteс любым элементом на диаграмме, в том числе и с другим элементом Note.
Нельзя соединить между собой два элемента NoteAnchor.
Для того чтобы присоединить замечание к элементу диа­граммы, необходимо выбрать инструмент NoteAnchor, при этом курсор приобретает форму вертикальной стрелки, щелкнуть по значку Noteи, не отпуская кнопки мыши, «тянуть» линию до нужного значка, по достижении которого кнопку мыши отпустить.
Аналогично происходит соединение при помощи других инструментов для установки связей.

Package(пакет)
Данный инструмент позволяет создавать пакеты, которые могут включать в себя группы элементов UseCaseи в данной диаграмме может использоваться для определения более крупных сценариев поведения объектов с дальнейшей детализацией. При чем пакеты могут включать в себя другие пакеты, что позволяет создавать значительный уровень вложенности детализации.

Use Case (сценарии поведения)
Данный инструмент позволяет создавать простые формы сценариев поведения объектов системы. Это представление работы системы с точки зрения исполнителей (Actors), т.е. объектов, выполняющих в системе определенные функции.
Use Case могут отображать:

  1. образцы поведения для отдельных объектов системы;
  2. последовательность связанных транзакций, представляемых объектами или системой;
  3. получение некоторой информации объектами.

Создание UseCase необходимо для формализации требований к системе, организации взаимодействия с будущими пользователями системы и экспертами предметной области и тестирования системы.

Actor (актер)
Данный инструмент используется для создания действующих лиц в системе. На диаграмме UseCaseзначком Actor часто обозначают пользователей системы, для того чтобы определить задачи, выполняемые пользователями и их взаимодействие.
Обычно значком Actor обозначают объект, который:

  1. взаимодействует с системой или использует систему;
  2. передает или принимает информацию в/из системы;
  3. является внешним по отношению к системе.

Actorпозволяют узнать кто пользуется системой, кто отвечает за ее сопровождение, внешнее аппаратное обеспечение, которое используется системой, другие системы, которые должны взаимодействовать с данной системой.

Unidirectional Association (однонаправленная связь)
Данный инструмент позволяет обозначать связи между эле­ментами. На диаграмме UseCaseэти связи могут быть определены между usecaseи actor.

5.6. Использование Deployment диаграммы для анализа устройств
Диаграмма Deployment(топология) предназначена для анализа аппаратной части системы. При помощи данной диаграммы проектировщик может произвести анализ необходимой аппаратной конфигурации, на которой будут работать отдельные процессы системы, и описать их взаимодействие между собой и другими аппаратными устройствами.
Этот тип диаграмм также позволяет анализировать взаимодействие процессов, работающих на разных компьютерах сети. Для каждой модели такая диаграмма может быть только одна.

Processor (процессор)
Процессор  это устройство, способное выполнять программы. Процессор обязательно должен иметь свое имя, которое, однако, никак не связано с другими диаграммами модели по причине того, что процессор обозначает не программное обеспечение, а аппаратуру.
Контекстное меню для значка Processor:

  1. OpenSpecificationоткрытие окна спецификаций элемента;
  2. SelectinBrowserпозволяет быстро найти элемент в окне Browser;
  3. ShowShedulingпозволяет включать или выключать показ порядка выполнения процессов;
  4. ShowProcessesпозволяет включать или выключать показ процессов на диаграмме;
  5. StereotypeDisplayпозволяет изменить х-показ стереотипа, но обычно для данного типа диаграмм стереотипы не используются;
  6. Formatпозволяет изменять формат элемента.

Спецификации процессора
При выборе пункта контекстного меню Specification активизируется диалоговое окно установки спецификаций процессора, состоящее из двух вкладок. При активизации пользователь попа­дает во вкладку General(главная), на которой предоставляется возможность изменить название элемента и ввести дополнительное описание для элемента в поле Documentation. Кроме стан­дартных кнопок сохранения и отказа, внизу окна есть кнопка Browse, которая активизирует подменю, предоставляющие дополнительные функции просмотра.
Вкладка Detail(детализация) более насыщена. Здесь пользователю предоставляется возможность ввести дополнительные данные, характеризующие процессор.
Поле Characteristics(характеристики) предназначено для указания физических характеристик используемого аппаратного обеспечения, таких как изготовитель, модель, объем дисковой и оперативной памяти и т.д. Эта информация не будет отображаться на диаграммах, но поможет определить общие требования системы к аппаратному обеспечению.
Возможна установка следующих вариантов планирования выполнения процессов:

  • Preemptive(вытесняющий)  процесс с более высоким приоритетом вытесняет процессы с более низким приоритетом. Система распределяет процессорное время таким образом, чтобы
    процессы с более высоким приоритетом выполнялись в первую очередь, и может в любой момент прервать выполнение процесса с низким приоритетом для выполнения более приоритетного процесса. При этом процессы с одинаковым приоритетом полу­чают от системы примерно одинаковое процессорное время, по истечению которого выполнение передается следующему процессу. Так, например, работает система Microsoft Windows 95 и выше. Этот пункт установлен по умолчанию;
  • Nonpreemptive(невытесняющий)  процесс, запущенный на процессоре, осуществляет над ним полный контроль до тех пор, пока сам не передаст управление другому процессу. Так, например, работала система Microsoft Windows 3.11;
  • Cyclic(циклический)  всем процессам выделяется равное количество процессорного времени;
  • Executive(диспетчер)  переключение между процессами осуществляется при помощи специальной программы-диспетчера, которая по своему алгоритму осуществляет управление процессами;
  • Manual(ручное) процессами управляет оператор.

Device (устройство)
Данный инструмент позволяет создавать на диаграмме объект устройства, неспособного выполнять программы. Каждое такое устройство также относится к аппаратному обеспечению и должно иметь общее для данного вида имя, такое как «модем» или «терминал».
Пользователь может создать диаграмму Statechartили Activityустройства из контекстного меню.

Connection (соединение)
Данный инструмент позволяет связать между собой устройства и процессоры. Connectionпредставляет собой некоторый тип кабельного или другого соединения, например, соединение при помощи сетевых карт, последовательных или параллельных портов или даже связь «Земля  спутник». В отличие от реального соединения, на диаграмме не может быть показано направление перемещения информации посредством соединения, и считается, что оно всегда двунаправлено.

5.7. Создание модели поведения системы при помощи диаграммы Statechart
Диаграмма Statechart(диаграмма состояний) предназначена для описания состояний объекта и условий перехода между ними. Описание состояний позволяет точно описать модель поведения объекта при получении различных сообщений и взаимодействии с другими объектами.
Единственным недостатком этой диаграммы является то, что пока ее содержание никак не отражается на получаемом коде программы. Это может создать у программиста ошибочное мне­ние, что без модели поведения можно обойтись. Но это не так. Модель поведения позволяет взглянуть на получаемый программный объект со стороны, ведь основное назначение объектно-ориентированного программирования  создавать объекты, наделенные определенным поведением, которые в дальнейшем и будут производить работу в программном коде. А данный тип диаграмм позволяет четко представить все поведение полученного программного объекта в виде графических значков состояний. Согласно теории конечных автоматов практически любую сложную машину можно разложить на простые автоматы, имеющие определенные состояния, поэтому в программных системах этот подход действительно оправдан.
Для того чтобы начать создавать модель поведения, необходимо добавить в модель классы, на основе которых впоследствии эти объекты будут создаваться.
Для добавления класса в модель необходимо перейти в окно Browserи на строке LogicalViewпроделать RClick=> New=> Class.
Измените название NewClassна необходимое, и первый класс готов. Аналогично добавляются остальные классы, и можно начинать создавать модель поведения.
Для создания диаграммы есть несколько путей:

  1. создать посредством меню Menu: Browse => State Machine Diagram;
  2. создать посредством строки инструментов при помощи значка Statechart;
  3. выбрать пункт NewStatechartDiagramиз контекстного меню класса.


После активизации диаграммы становятся доступны следующие инструменты:

  1. SelectionToolвыбор объекта, с которым будет производиться дальнейшая работа;
  2. TextBoxсоздание отвлеченной надписи на диаграмме;
  3. Note создание надписи к значку состояния State;
  4. AnchorNote соединение значка Noteи State.

State (состояние)
Инструмент Stateпозволяет отразить состояние или ситуа­цию в течение жизни объекта, которая отвечает некоторому положению объекта или ожиданиям некоторого события. Каждое состояние представляет собой совокупную историю поведения объекта. Его имя должно быть уникально внутри класса, так как состояния с одинаковыми именами считаются представлением и тех же состояний. В текущем значке Stateмогут быть отражены действия по входу, выходу из состояния, действия не связанные с событиями или реакция на события.

Start State (начало)
Инструмент StartStateпозволяет создать значок начала работы. Для диаграммы Statechartон обозначает событие, которое переводит объект в первое состояние на диаграмме.
Все диаграммы состояний начинаются со значка StartStateи должны заканчиваться, значком EndState. При этом значок нача­ла работы может быть только один, а значков окончания может быть сколько угодно. За этим Rational Rose следит самостоятельно.

End State (завершение)
Инструмент EndStateпозволяет создать значок окончания работы. Направление перехода может быть установлено только в данный значок, однако никаких ограничений на количество пере ходов в EndState, а также на количество таких элементов на диа­грамме не налагается.

State Transition (состояние перехода)
Инструмент StateTransitionпозволяет создать значок состояния перехода, который означает, что объект переходит из одного состояния в другое в случае наступления определенного события или по изменению определенных условий.
Пользователь может указать несколько переходов из одного состояния в другое в случае, если каждый такой переход осуществляется при наступлении разных событий или при соблюдении разных условий.

Transition to Self (переход на себя)
Инструмент TransitiontoSelfпозволяет создать значок перехода, в то же состояние, из которого осуществляется переход.

Данный переход похож на State Transition, однако он не осуществляет переход в другое состояние при наступлении некоторого события. Таким образом, при наступлении события оно обрабатывается, и после обработки объект возвращается в то состояние, в котором он находился до наступления события.

5.8. Создание диаграммы
Первым шагом для создания диаграммы будет создание точки начала работы. Создайте ее при помощи кнопки StartState.
Для добавления в диаграмму новых элементов можно воспользоваться Menu: Tools=> Create.
Обычно первым состоянием системы после начала работы будет ожидание наступления событий.
Можно переключаться между действием (Action) и посылкой сообщения (SendEvent). Разница между этими пунктами в том, что действие осуществляется самим классом, для которого мы создаем диаграмму состояния, т.е. здесь вызывается метод этого класса, а посылка сообщения направлена на объект другого класса, метод которого вызывается при помощи этого сообщения. Этот объект задается в строке SendTarget. Также можно задать имя вызываемого метода класса в строке SendEventи аргументы в строке Arguments.
Можно настроить момент времени, в который происходит отмеченное действие. Здесь предоставляется выбор из четырех состояний:

  1. Onentryпоказывает, что указанное действие необходимо производить при входе в состояние до выполнения остальных действий;
  2. Onexitпоказывает, что действие должно быть выполнено перед самым выходом из указанного состояния;
  3. Doдействия производимые в течение состояния до выхода. Если таких действий набирается несколько, то почти наверняка их можно выделить в отдельную диаграмму состояния;
  4. OnEvent действия в ответ на определенные события, обрабатываемые в текущем состоянии. При выборе этого пункта открывается возможность заполнить события (Event), параметры (Arguments) и условия, когда это действие обрабатывается (Condition), т.е. может случиться так, что событие произошло, а условие его обработки еще не выполнено. Этот пункт удобно использовать при обработке события, которое не приводит к переходу в другие состояния и отражается значком TransitiontoSelf.

Нужно заметить, что при изменении этих параметров изменяется и надпись на значке состояния.
События отражаются при помощи символа Л, расположенного перед ним. Действия: при входе  entry:, при выходе  exit:, в течение работы  do:, действия по сообщению  on:. Условие обработки показывается выражением в квадратных скобках. Данная нотация довольно удобна и позволяет, не активизируя окно свойств, взглядом оценить сделанное.
Если для каждой части используется свой процессор, то можно было бы создать автономные классы для управления состояниями.
Rational Rose предоставляет возможность создания вложенных диаграмм состояния, что удобно для большей детализации каждого состояния. Перед добавлением значок будет выделен рамкой, а после добавления будет автоматически раздвинут, чтобы в него уместился добавленный элемент.
Для того чтобы создать ломаную стрелку, нужно «потянуть» мышкой за ее середину.
Rational Rose позволяет скрыть ненужные в данный момент вложенные состояния. Для этого следует выделить состояние, а затем выбрать Menu: View => ShowNestedElements. При этом в правом нижнем углу состояния появится многоточие.
Часто удобнее пользоваться не вложенными диаграммами, а создавать подпрограммы (Subdiagram) из контекстного меню состояния.

States History (история состояний)
Включение настройки StatesHistory(на вкладке General) позволяет показать, что в следующий раз, когда система попадает в указанное состояние, она должна не начинать с начала состояний, а сразу перейти на последнее состояние, из которого вышла, т.е. при первом входе в некоторое состояние производятся единичные действия, которые при следующем входе проделывать уже не нужно.

Создание диаграммы активности
Этот тип диаграмм может использоваться для моделирования различных типов действий.
ActivityDiagram это специальная разновидность диаграммы состояний. В этом типе диаграмм большинство используемых знаков  это знаки активности, переходы между которыми вызва­ны завершением одних действий и началом других.

Отличие между Activity и Statechart
Главное отличие между Activityи Statechart diagram в том, что в первом случае основное  действия, а во втором  статичное состояние. При этом Activitydiagramбольше подходит для моделирования последовательности действий, a Statechartдля моделирования дискретных состояний объекта.

Создание диаграммы активности
Выберем пункт Browse=> StateMachineDiagramи создадим новую диаграмму.

Строка инструментов
После того как диаграмма будет активизирована, появится строка инструментов.

Activity (активность)
Значок Activityобозначает выполняемые задачи или выполнение определенных действий в течение жизни объекта. Этот значок в общем похож на предыдущий, но если значок Stateобычно обозначает ожидание какого-либо события, то значок Activityобозначает непосредственное действие.

State Transition (переход состояния)
StateTransition переход из одного состояния в другое или по завершении выполнения определенного действия в начало другого. Этот значок также может характеризовать получение объектом некоторого сообщения с дальнейшей его обработкой. State Transition может осуществляться как между Action  Action и State  State, так и между State Action и Action State.
Возможна также установка нескольких переходов между двумя состояниями или действиями, каждый из которых уникален и показывает реакцию объекта на определенное сообщение. Таким образом, нельзя создать несколько переходов между двумя состояниями с указанием одного и того же сообщения.

Synchronizations (синхронизация)
Значок Synchronizationsпозволяет определить независимо выполняемые действия. При этом действия разделяются на несколько выполняемых независимо, и только по завершении всех действий объект продолжает работу. Этот значок представляет собой горизонтальную или вертикальную черту, обозначающую синхронизацию выполняемых работ.

Decision (решение)
Decisionпозволяет показать зависимость дальнейшей работы от внешних условий или решений. Этот значок аналогичен командам языка программирования ifили caseи может иметь больше двух выходов, но обычно используют выбор из двух переходов, определенных Булевым выражением.

Swimlanes (плавательные дорожки)
Swimlanes позволяет моделировать последовательность действий различных объектов и связи между ними. При помощи этого элемента можно моделировать бизнес-процессы организации, отражая на диаграмме различные подразделения и объекты, играющие важные роли в модели бизнеса.
Swimlanes позволяет показать, кто выполняет те или иные роли в процессе. Для этого необходимо переместить соответствующие значки активности или состояний в зону определенного подразделения, отделенного от остальных Swimlanes.
Чтобы не вводить значки повторно, можно выделить их на уже созданной диаграмме Statechartи перенести во вновь созданную. Для выделения нескольких элементов диаграммы необходимо, удерживая клавишу Ctrl, отметить мышкой поочередно каж­дый выделяемый элемент.
Для значка активности доступно окно изменения свойств. Изменим наименование и откроем вкладку Actionsи добавим новое действие RClick => Insert. Перейдем в окно свойств действия и получим новое окно.
Если выбрано действие в ответ на определенное событие, то открываются поля ввода аргументов этого события.
В поле ввода типа можно указать, какой тип активности предполагается использовать. Это может быть Action(действие) или SendEvent(посылка сообщения).
Actionможет использоваться для того, чтобы показать, что данный тип активности не взаимодействует с другим объектом, и действие происходит внутри объекта.
SendEvent показывает, что происходит взаимодействие с другими объектами и посредством посылки сообщений. Здесь можно ввести имя сообщения, его аргументы и адресат сообще­ния, как сделано в нашем случае.
Вкладка Transition показывает все входы и выходы из значка активности.
Здесь можно подробно рассмотреть все входящие и выходящие события из данного состояния и изменять их спецификации прямо из этого окна.
Вкладка Swimlanes показывает, с какими Swimlanes значок Activityили Stateвзаимодействует.
Значок активности можно преобразовать в значок состояний при помощи RClick=> ChangeIntoState.

Синхронизация процессов
Линия синхронизации обычно включается в том случае, когда имеются независимые процессоры, которые выполняют задачи параллельно.
Обычно линии синхронизации используются при проектировании процессов клиент  сервер, когда клиенты выдают запросы сразу нескольким серверам и ожидают от них ответа, или при проектировании бизнес-процессов, происходящих в нескольких структурных подразделениях одного офиса, где, например, различные документы обрабатываются в подразделениях, а затем, по завершении создания всех документов, происходит их группировка в один отчет.
В окончательном варианте на диаграмме получается полный алгоритм работы.
Вложенные диаграммы можно создать для каждого значка состояния или активности при помощи нескольких щелчков мыши. Эта возможность позволяет не загромождать саму диаграмму, а создавать сколько угодно вложенных, что не только скрывает ненужные детали, но и позволяет легко разделить проект для работы команды программистов и также легко собрать проект воедино.
Создание алгоритма  работа творческая и у каждого проектировщика алгоритм может несколько отличаться в деталях. Но самое главное, Rational Rose позволяет создавать такие диаграммы, которые дают возможность сделать алгоритм работы программы четким, легко читаемым, понятным даже тому, кто видит его впервые.
Для создания вложенной диаграммы выберем соответствующий значок и проделаем RClick=> Subdiagram=> Newactivitydiagram. При этом откроется новая диаграмма.
Здесь нет чрезвычайно необходимой возможности переноса стрелок с диаграммы верхнего уровня во вновь созданную. Таким образом, разработчик сам должен следить за тем, чтобы эти диаграммы не входили в противоречие между собой по входным и выходным переходам состояний и действий.
Но в этом есть и некоторые положительные моменты. Такой подход позволяет не уделять много внимания синтаксически правильной стыковке диаграмм различных уровней, а сосредото­читься на логике процесса. Но все же необходима дополнительная проверка, которая позволит избежать трудно обнаруживаемых впоследствии логических ошибок, с возможностью включения и выключение такой проверки по необходимости.
Вложенная диаграмма может быть проста, однако в других системах такие диаграммы могут быть сложны настолько, что потребуется создание еще более глубокой вложенности. А ее соз­дание в Rational Rose не составит никакого труда. Таким образом, можно детализировать алгоритм программы, начиная с выполнения крупных задач и постепенно разбивая их на более мелкие, вплоть до выполнения отдельных операторов выбранного языка.

5.9. Описание взаимодействия при помощи Sequence Diagram
Кроме сценария поведения каждого объекта системы необходимо точно представлять взаимодействие этих объектов между собой, определение клиентов и серверов и порядка обмена сообщений между ними.
Обмен сообщений происходит в определенной последовательности, и SequenceDiagramпозволяют получить отражение этого обмена во времени.
В течение работы сложной системы объекты, являющиеся клиентами, посылают друг другу различные сообщения, а объекты, являющиеся серверами, обрабатывают их. В простейшем случае можно рассматривать сообщение как вызов метода какого-либо класса, в более сложных случаях сервер имеет обработчик очереди сообщений и сообщения обрабатываются им асинхронно, т. е. сервер накапливает несколько сообщений в очереди, если не может обработать их сразу.
На основе приема-передачи сообщений основана многоза­дачность Windows, а в нашем случае для простоты будем считать, что сообщения обрабатываются немедленно в той последовательности, в которой они выдаются клиентами.
Создадим InteractionDiagram при помощи Menu: Browse > InteractionDiagram=> New или значка в строке инструментов. При этом активизируется окно создания диаграммы.
Здесь можно выбирать из двух типов диаграмм, показывающие взаимодействие объектов с разных сторон. Collaboration показывает взаимодействие объектов независимо от времени, Sequenceпредставляет собой разворот взаимодействия во времени и отражает последовательность выдачи сообщений клиентам при переходе в эту диаграмму панель инструментов сменяется на новую, в которой доступны значки TextBox, Note, AnchortoItem, Object, Message, MessagetoSelf.

Object (объект)
Значок Object позволяет включить новый объект в диаграмму. Каждый объект является реализацией класса, поэтому в нем можно указать класс, на основе которого он создан.

Message (сообщение)
Значок Messageпозволяет создать сообщение, передаваемое от одного объекта к другому. Так как все взаимодействие в объектно-ориентированных системах осуществляется при помощи сообщений между объектами, то классы должны позволять отправку или прием сообщений.

Message to Self (сообщение самому себе)
Данный значок позволяет показать, что отправитель сообще­ния является одновременно и его получателем.
При обмене сообщениями одни классы являются клиентами и принимают сообщения, а другие  серверами и отправляют сообщения. В том случае, когда объект отправляет сообщение са­мому себе, он одновременно является и сервером и клиентом, что
и отражает данный значок.

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

Destruction Marker (маркер уничтожения)
Данный значок позволяет показать, что происходит уничтожение программного объекта.
Зайдем в окно свойств объекта, перейдем в поле Class и нажмем клавишу «стрелка вверх». При этом сразу открывается окно свойств класса. Здесь нужно ввести только имя. Теперь по своему усмотрению можно скрыть или показать наименование класса на значке объекта.
Перейдем непосредственно к сообщениям. Выберем стрелку Objectmessageи соединим пунктирные линии объектов. Затем проделаем то же еще раз, но в обратном направлении ниже первого сообщения. В данном случае мы подразумеваем, что самым первым сообщением будет указание таймеру времени, через которое происходит активизация и передача адреса обратного вызова таймером. Вторым сообщением будет сообщение от таймера, что указанный промежуток времени истек.
В PC совместимых компьютерах системные часы дают возможность устанавливать минимальное время таймера 1/60 секунды. Однако позволяя устанавливать промежуток времени произвольно, можно, во-первых, придать системе большую гибкость и, во-вторых, что немаловажно, оставить «лазейку» для отладки системы. Можно установить заведомо большее или меньшее время для ускоренного тестирования процесса. Выделим первое сообщение и вызовем контекстное меню (RC-lick). Здесь мы увидим пункт OpenSpecificationи пункт NewOperation. При помощи последнего можно добавить новую операцию (метод) к классу, из которого создан объект.
Выберем этот пункт и введем имя операции, а затем нажмем ОК. Вопреки ожиданиям мы попали обратно в нашу диаграмму и на ней ничего не изменилось. Но это только на первый взгляд. Если еще раз вызвать контекстное меню, то в нем, кроме описанных выше пунктов, будет присутствовать новый пункт, после выбора которого над стрелкой сообщения появляется название метода.
Теперь разберемся со свойствами только что введенного сообщения. При вызове Имя метода —> RC-lick=> Detailмы попа­даем в диалоговое окно, где видим две группы радио-кнопок (кнопок с зависимой фиксацией):Synchronization определяет порядок обмена сообщениями
и может быть выбрана из следующих вариантов:

  1. Simple простая посылка сообщения;
  2. Synchronous операция происходит только в том случае, когда клиент посылает сообщение, а сервер может принять сообщение клиента;
  3. Balking операция происходит только в том случае, когда сервер готов немедленно принять сообщение, если сервер не готов к приему, клиент не выдает сообщение;
  4. Timeout клиент отказывается от выдачи сообщения, если сервер в течение определенного времени не может его принять;
  5. ProcedureCall клиент вызывает процедуру сервера и полностью передает ему управление;
  6. Return определяет, что происходит возврат из процедуры;
  7. Asynchronous клиент выдает сообщение, и, не ожидая ответа сервера, продолжает выполнение своего программного кода.

Для каждого вида операций стрелка сообщения изменяется.
2.Frequencyопределяет частоту обмена сообщениями:
•  Periodic сообщения поступают от клиента с заданной периодичностью;
•  Aperiodicсообщения поступают от клиента нерегулярно.
В этом и заключается процесс визуального проектирования,
когда система получает все большую детализацию в процессе добавления диаграмм и детализации взаимодействия между ними.

5.10. Описание взаимодействия с помощью Collaboration Diagram
Второй, уже упоминавшийся тип диаграмм взаимодействия,  это CollaborationDiagram. С английского языка этот термин переводится как «сотрудничество». Действительно, эта диаграмма отличается от предыдущей тем, что она не акцентирует внимание на последовательности передачи сообщений, а отражает наличие взаимосвязей вообще, т.е. на этой диаграмме отражается наличие сообщений от клиентов к серверам. Так как временная шкала не участвует в демонстрации сообщений, то эта диаграмма получается компактней и как нельзя лучше подходит для того чтобы окинуть одним взглядом взаимодействие всех объектов.
Однако необходимо понимать, что диаграмма показывает взаимодействие между объектами, а не классами, т.е. является мгновенным снимком объектов системы в некотором состоянии. Ведь объекты, в отличие от созданных на этапе проектирования классов, создаются и уничтожаются на всем протяжении работы программы. И в каждый момент имеется конкретная группа объектов, с которыми осуществляется работа. В связи с этим появляются такие понятия, как время жизни и область видимости объектов, которые будут рассмотрены далее.
Разработчики Rational Rose заложили удобную возможность создания на основе диаграммы Sequenceдиаграммы Collaborationи наоборот. А так как диаграмма Sequenceу нас уже есть, то создадим на ее основе Collaboration. Для этого, находясь в диаграмме, сделаем следующее: Menu: Browse=> CreateCollaborationdiagram. Также можно создать диаграмму, нажав значок Interactiondiagram. При этом для создания необходимого типа диаграммы в диалоговом окне выберите тип диаграммы Collaboration.
Взаимодействия между объектами изображаются линиями с добавленными стрелками, аналогичными тем, которые изображаются на SequenceDiagram. Однако нетрудно заметить, что все сообщения одного направления собираются вместе и даются как подпись к одной стрелке, таким образом получаем полную картину взаимодействия.

Строка инструментов

Object(объект)
Objectпозволяет создавать объекты, которые имеют состояния, поведение и индивидуальны. Каждый объект на диаграмме показывает реализацию некоторого класса.

ClassInstance(реализация класса)
ClassInstanceпозволяет добавлять абстрактные реализации класса в диаграмму.
При добавлении значка на диаграмму, внешне эти значки не отличаются. Отличие состоит в их внутреннем содержании. Объект подразумевает настройку его времени жизни и других свойств, присущих только конкретному объекту. Абстрактная реализация класса не позволяет изменять эти свойства и предназначена только для показа взаимодействия.

ObjectLink(связь объекта)
Взаимодействия объектов отражается посредством показа их связей. Существование связей между двумя классами символизирует взаимодействие между их реализациями (объектами, созданными на основе этих классов). При этом один объект может посылать сообщение другому объекту.

LinkToSelf(связь с самим собой)
Так как объекты могут посылать сообщения самим себе, то данный значок показывает, что объект имеет обратную связь с самим собой.

LinkMessage(передача сообщения)
LinkMessageпозволяет отразить связь, которая подразумевает обязательную передачу сообщения.

ReverseLinkMessage(обратная передача сообщения)
ReverseLinkMessage позволяет отразить связь, которая под­разумевает обязательную передачу сообщения аналогично предыдущему пункту, но в обратном направлении.

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

ReverseDataFlow(обратный поток данных)
Как и предыдущий значок, позволяет отразить связь, показывающую, что происходит передача данных от одного объекта к другому, но в обратном направлении.
Создать объект нужного класса можно при помощи «буксировки» мышкой этого класса из окна Browseв окно текущей диаграммы, конечно, после этого ему необходимо присвоить имя.
После добавления можно посмотреть, что нам предлагает контекстное меню. Коротко перечислим возможности, предоставляемые посредством данного меню:

  1. OpenSpecificationредактирование спецификаций объекта;
  2. EditCompartmentактивизирует диалоговое окно показа дополнительной информации об объекте. Содержание такой информации зависит от типа объекта;
  3. AutomaticResizeпозволяет устанавливать автоматическую настройку размера объекта по длине содержащегося в нем текста;
  4. ShowConcurrencyпозволяет включить показ на данном значке типа согласования при создании много-потоковой программы. Данный тип определен в классе;
  5. ShowPersistenceпозволяет показать на диаграмме время жизни объекта;
  6. ShowClassпозволяет показать на диаграмме имя класса.


Соединим новый объект с существующим объектом линией
ObjectLink. Для того чтобы показать, что будут поступать сообщения, нажмем LinkMessage. После того как курсор приобретет вид креста, укажем на линию. Рядом с ней появится стрелка сообщения, для которой можно ввести свойства, аналогичные свойствам сообщения на SequenceDiagram, при помощи контекстного меню.
Для того чтобы показать, что возвращает данные по запросам, создадим указатель ReverseDataFlow. Для этого нажмем на указанный значок, и после того как курсор примет форму креста, укажем на стрелку сообщения, но не на линию LinkMessage.
Указание передачи данных является справочной информацией и показывает нам, что как минимум одно из сообщений должно возвращать значение.
Rational Rose автоматически переносит введенные изменения в диаграмму Sequence, тем самым избавляя нас от монотонного труда по переносу данных из одной диаграммы в другую. Однако необходимо расставить сообщения в нужном порядке, о котором программа, естественно, не догадывается и имеет в виду, что в каком порядке сообщения введены, в таком порядке они и вы­полняются.
Для того чтобы задать область видимости, перейдем в RC-lick=> OpenSpecificationи попадем в диалоговое окно.
Для задания области видимости объекта-сервера служит блок Suppliervisibility, клиента  Clientvisibility.
В этих блоках доступны значения для выбора:

  1. Unspecified не определено, это значение присваивается по умолчанию;
  2. Field объект включен в другой объект;
  3. Parameter объект передается параметром в другой объект;
  4. Localобъект локально определен в границах другого объекта;
  5. Global объект глобален по отношению к другому объекту.


При изменении области видимости на концах соединяющей
линии появляется квадратик с указанной областью видимости. Здесь же можно установить флажок, показывающий, что объект используется совместно (Shared).
Область видимости можно изменить из контекстного меню, причем, изменяется та сторона Linkлинии, к которой был ближе курсор мыши при активизации контекстного меню.
Закладка Messagesпозволяет изменять свойства сообщений для выбранной связи. Причем можно добавлять методы прямо из этого окна как для клиента, так и для сервера.

Однако нужно помнить, что добавление методов в этом окне не добавит их в соответствующие классы. Это, с одной стороны, не совсем удобно, так как нужно добавлять методы непосредственно в классе, но становится просто необходимо, если методы наследуются из базовых классов и добавлять их в дочерние вы не собираетесь.

5.11. Диаграмма компонентов
Componentdiagram(диаграмма компонентов) позволяет создать физическое отражение текущей модели. Диаграмма компонентов показывает организацию и взаимосвязи программных компонентов, представленных в исходном коде, двоичных или выполняемых файлах. Связи в данном типе диаграммы представляют зависимости одного компонента от другого и имеют специальное отображение через значок «зависимости».
Также данный тип диаграммы позволяет получить представление о поведении компонентов по предоставляемому ими интерфейсу. Интерфейс показывает взаимодействие компонентов, и хотя значки интерфейса принадлежат логическому представлению системы, они могут присутствовать и на диаграмме компонентов.
В текущей модели может быть создано несколько диаграмм компонентов для отражения пакетов, компонентов верхнего уровня или описания содержимого каждого пакета компонентов. В последнем случае диаграмма компонентов принадлежит тому пакету, для которого отражено содержимое.
На всем протяжении проектирования системы, вплоть до выхода готового программного продукта, в диаграммы будут вно­ситься изменения. Некоторые принятые во время проектирования системы решения могут не совпадать с полученным в конце кодом. Это нормально. Во время разработки необходимо просто отразить эти изменения на созданных ранее диаграммах, что можно сделать самостоятельно.
В Rational Rose заложена прекрасная возможность работы с программными библиотеками. Причем можно как разрабатывать библиотеки, так и пользоваться уже готовыми. Для этого необходимо лишь указать, какие классы в каких компонентах будут находиться.
При разработке программного проекта разделение классов по компонентам является серьезной задачей. Для того чтобы обес­печить минимальные трудозатраты на разработку и сопровождение, тесно связанные между собой классы, собираются в библиотеки DLL, OCX и т.п. Этим обычно занимаются системные аналитики, которые проектируют структуру программного обеспечения. Rational Rose предоставляет все возможности для такого проектирования.
Для создания диаграммы используйте меню Browse=> Componentdiagramили воспользуйтесь значком Componentdiagramна панели инструментов.
При этом будет активизировано диалоговое окно выбора диаграммы, посредством которого пользователь может создавать, удалять, переименовывать диаграммы.
При активизации диаграммы появляется некоторые новые инструменты.

Component (компонент)
Значок Componentпозволяет показать создание компонента. Компонент представляет собой модуль программного обеспечения, такой как исходный код, двоичный файл, выполняемый файл, динамически подключаемые библиотеки и т.д.
Взаимодействие элементов представляется на диаграмме одним или несколькими значками интерфейса.
Компоненты также могут использоваться для показа взаимосвязи модулей на этапе компиляции или выполнения программы, а также показывать, какие классы используются для создания определенных компонентов.
В связи с тем, что система может состоять из модулей различного типа, пользователь может использовать стереотипы для определения этих различий, причем изменение стереотипа часто ведет к изменению графического отображения компонента на диаграмме.
В отличие от других диаграмм, при создании элементов диаграммы компонентов в модель всегда добавляется один тип элементов  Component, который отличается только стереотипом. Например, при создании элемента Subprogrambody(тело подпрограммы) в модель добавляется компонент, который имеет стереотип Subprogrambody, и который в любой момент можно изменить, что повлечет изменение графического отображения компонента.
Обычно имя компонента совпадает с именем файла, представляющего компонент, и для каждого компонента должен быть назначен язык программирования.

Package(пакет)
Значок Packageпозволяет отобразить пакет, который объединяет группу компонентов в модели. Для того чтобы перенести созданный компонент в пакет, в окне Browseперетяните нужный компонент мышкой на значок пакета.

Dependency(зависимость)
Пользователь может установить связи данного типа между компонентами, которые изображаются как пунктирная стрелка от одного компонента к другому. Этот тип связей показывает, что классы, содержащиеся в компоненте-клиенте, наследуются, содержат элементы, используют или каким-либо другим образом зависят от классов, которые экспортируются из компонента-сервера.
Пользователь может отобразить связь компонента и интерфейса другого компонента и это означает, что компонент-клиент использует операции другого компонента. Если в этом случае связь будет направлена в другую сторону, то это означает, что компонент-клиент предоставляет операции компоненту-серверу.

Mainprogram(главная программа)
Позволяет добавить компонент, обозначающий главную программу.

Subprogrambody(тело подпрограммы)
Значок Subprogrambodyпозволяет добавить в модель компонент, обозначающий тело подпрограммы и используется также для необъектно-ориентированных компонентов.

Packagespecification / body
Значки Packagespecification/ bodyпозволяют отобразить определения пакета (Packagespecification) и описание пакета {Packagebody), которые обычно связаны между собой. Для языка C++ Packagespecificationэто заголовочный файл с расширением.h, а Packagebodyфайл с расширением .сер.

Taskspecification / body
Значки позволяют отобразить независимые потоки в многопотоковой системе.

Свойства компонента

General
После создания элемента перейдите на вкладку General его спецификаций при помощи RClick => Specification=> General. Здесь доступно изменение имени компонента, дан список стерео­типов, доступных для выбора, есть возможность заполнения документации. Также предоставляется возможность выбора языка программирования для компонентов.

СОМ
Вкладка предназначена для установки свойств СОМ-объектов. На ней отображается список свойств объекта, которые можно изменить:

  1. Generate устанавливает необходимость генерации;
  2. Filenameустанавливает полный путь к файлу компонента;
  3. Library устанавливает имя библиотеки;
  4. Uuidустанавливает идентификатор для СОМ объекта;
  5. Version устанавливает версию компонента;
  6. Helpstringустанавливает строку, которая используется для описания компонента;
  7. Helpfileустанавливает имя файла, в котором содержится справочная система по компоненту;
  8. Helpcontextустанавливает ID темы справки, описывающий данный компонент и находящийся в файле, установленном как Helpfile;
  9. Lcid устанавливает локальный идентификатор;
  10. Attributesустанавливает атрибуты, которые впоследствии определяют СОМ-компонент или класс.

Вкладка VC+
Предназначена для свойств объекта, ассоциированного с языком VC++, однако эти свойства не предназначены для уста­новки пользователем.

Вкладка Detail
Показывает описание определений для компонента, таких как имя класса, переменные и другие конструкции, зависящие от конкретной реализации языка программирования.
Вкладка Realized
Позволяет показать включенные в компонент классы, а также включить или исключить такие классы из компонента, при этом классы, включенные в компонент, отмечены значком. Флажок ShowAllClasses(показать все классы) позволяет показать только включенные в данный компонент классы или все классы, которые имеются в модели.
Вкладка Files

Здесь представлен список файлов, которые присоединены или добавлены в компонент. Данная возможность используется для управления связями с дополнительными документами. Из этого окна возможно открытие и просмотр связанных документов путем двойного нажатия мышкой на строке документа или контекстного меню.

Ссылки

http://www.iteam.ru

http://www.atemsoft.net

http://www.info-system.ru

Начало | Глава 4 | Глава 6 

 
Copyright ©2009 | powered by coFFIN & Dr.Lector
free credit reports
debt help Student Loan make money at home mortgage interest rate bad credit loans mortage loan bankrupt personal bankruptcy mortages
 

  

 


make money at homebankrupt make money at homebankrupt interest calculatordebt settlement make money at homebankrupt interest calculatordebt settlement make money at homebankrupt interest calculatordebt settlement make money at homebankrupt interest calculatordebt settlement interest calculatordebt settlement
 

  

Хостинг от uCoz