Учебное пособие Чебоксары 2013


НазваниеУчебное пособие Чебоксары 2013
страница5/23
ТипУчебное пособие
filling-form.ru > Договоры > Учебное пособие
1   2   3   4   5   6   7   8   9   ...   23
Глава III. Проектирование программ

Начала унифицированного языка моделирования UML

Прежде чем начинать разработку хоть сколько-нибудь слож­ных приложений, нужно хорошо проработать план действий. Если у вас нет тщательно продуманного сценария, команда раз­работчиков напрасно потратит время и деньги и, что хуже всего, конечный результат может совершенно не отве­чать предъявляемым требованиям. Тогда применяется унифицированный язык моделирования UML (Unified Modeling Language). Технология UML, одобренная консорциумом Object Management Group, яв­ляется мощным средством описания бизнес-процессов и пред­ставления их в той форме, которая устраивает как разработчи­ков, так и пользователей.

Язык UML предлагает набор инструментальных средств, по­зволяющих проводить всесторонний анализ сложных проектов как с технической точки зрения, так и с точки зрения потребно­стей бизнеса. Данный язык упрощает процесс проектирования, снижает его стоимость и повышает эффективность. Концепция UML позволяет разработчикам определять методы технически сложных приложений, которые будут выполняться в многоуров­невой распределенной среде.

Достоинства: стандартная методология; интуитивно понят­ные обозначения, мощные описательные средства языка; автоматическая генерация кода [12].

Модель – упрощенное представление реальности. С точки зрения программирования модель – это чертеж системы. Моде­лирование необходимо для решения следующих задач:

  1. визуализации системы:

  2. определения ее структуры и повеления:

  3. получения шаблона, позволяющего затем сконструировать систему;

  4. документирования принимаемых решений, используя по­лученные модели.

Перечислим принципы моделирования.

  1. Выбор модели оказывает определяющее влияние на под­ход к решению проблемы.

  2. Каждая модель может быть воплощена с разной степенью абстактности.

  3. Лучшие модели те, которые ближе к реальности.

  4. Нельзя ограничиваться одной моделью.

Унифицированный язык моделирования является графиче­ским языком для визуализации, специфицирования, конструи­рования и документирования систем, в которых большая роль принадлежит программному обеспечению. С помощью UML можно разработать детальный план создаваемой системы, ото­бражающий не только концептуальные элементы, такие, как системные функции и бизнес-процессы, но и конкретные осо­бенности реализации, в том числе классы, написанные на спе­циальных языках программирования, схемы баз данных и про­граммные компоненты многократного использования [2].

Язык UML состоит из словаря и правил, позволяющих ком­бинировать входящие в него слова и получать осмысленные кон­струкции. Язык моделирования, подобный UML, является стан­дартным средством для составления чертежей программною обеспечения.

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

Проблемы, решаемые с помощью UML.

  1. Обмен мнениями между программистами возможен только тогда, когда все говорят на одном языке.

  2. Становится возможным понять структуру системы, что нельзя сделать, просматривая код. Графически описанная система легко поддается восприятию.

  3. Информация о разрабатываемой модели не будет утеряна со временем.

Строительные блоки UML:

  • сущности:

  • отношения;

  • диаграммы.

Сущности – это абстракции, являющиеся основными эле­ментами модели. Сущности бывают четырех типов: структурные, поведенческие, группирующие и аннотационные.

Различают следующие структурные сущности: Класс (Class) – это описание совокупности объектов с общи­ми атрибутами, операциями, отношениями и семантикой. Гра­фически класс изображается в виде прямоугольника, в котором обычно записаны его имя, атрибуты и операции (рис. 3.1).

WINDOW

Width

Heigth

Close ()

Open ()

Рис.3.1. Графическая итерация класса
Интерфейс (Interface) – это совокупность операций, кото­рые определяют сервис (набор услуг), предоставляемый классом или компонентом. Таким образом, интерфейс описывает видимое извне поведение элемента. Графически интерфейс изображается в виде круга, под которым пишется его имя (рис. 3.2).



ISpelling

Рис. 3.2. Графическая интерпретация класса
Кооперация (Collaboration) определяет взаимодействие: она представляет собой совокупность ролей и других элементов (в частности, классов), которые, работая совместно, производят некоторый общий эффект. Изображается в виде эллипса, ограниченного пунктирной линией, а в центре – имя.

Прецедент (Use case) – это описание последовательности выполняемых системой действий, которая производит наблю­даемый результат, значимый для какого-то определенного актера, (Actor). Изображается в виде эллипса, ограниченного сплошной линией, а в центре – имя (рис. 3.3).



Цепочка ответственности

Разместить заказ

Рис. 3.3. Графическая интерпретация прецедента
Активным классом (Active class) называется класс, объекты которого вовлечены в один или несколько процессов, или нитей (Threads), и поэтому могут инициировать управляющее воздействие. Активный класс во всем подобен обычному классу, за исключением того, что его объекты представляют собой элементы, деятельность которых осуществляется одновременно с деятельностью других элементов. Графически активный класс изображается так же, как простой класс, но ограничивающий прямоугольник рисуется жирной линией, обычно включает имя, атрибуты и операции.

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

Узел (Node) – это элемент реальной (физической) системы, который существует во время функционирования программного комплекса и представляет собой вычислительный ресурс, обыч­но обладающий, как минимум, некоторым объемом памяти, а часто еще и способностью обработки. Совокупность компонен­тов может размещаться в узле, а также мигрировать с одного узла на другой. Графически узел изображается в виде куба, обычно содержащего только имя (рис. 3.4).

Перечислим теперь поведенческие сущности.

Взаимодействие (Interaction) – это поведение, суть которого заключается в обмене сообщениями (Messages) между объектами в рамках конкретного контекста для достижения определенной цели. С помощью взаимодействия можно описать как отдельную операцию, так и поведение совокупности объектов. Взаимодей­ствие предполагает ряд других элементов, таких, как сообщения, последовательности действий (поведение, инициированное со­общением) и связи (между объектами). Графически сообщения изображаются в виде стрелки, над которой почти всегда пишется имя соответствующей операции.



Сервер

Рис. 3.4. Графическая интерпретация узла
Автомат (State machine) – это алгоритм поведения, опреде­ляющий последовательность состояний, через которые объект или взаимодействие проходят на протяжении своего жизненного цикла в ответ на различные события, а также реакции на эти со­бытия. С помощью автомата можно описать поведение отдельно­го класса или кооперации классов. С автоматом связан ряд дру­гих элементов: состояния, переходы (из одного состояния в дру­гое), события (сущности, инициирующие переходы) и виды действий (реакция на переход). Графически состояние изобража­ется в виде прямоугольника с закругленными углами (рис. 3.5).



Рис. 3.5. Графическая интерпретация класса
Классы. Класс изображается в виде прямоугольника, поделенного на несколько частей. В самой крупной абстракции указывается только имя класса (рис. 3.6).

Custome

Rectangle

Рис. 3.6. Графическая интерпретация абстракции
При более детальном описании класса нужно указать атрибуты и операции, выполняемые классом (рис. 3.7).


Rectangle

Width

Heigth

Add ()

Move ()

Рис. 3.5. Летальное описание класса
Существуют также обязанности класса – это то, что должен делать класс, для чего его создают.

Если в проект входит нечто большее, нежели пара несложных классов, следует позаботиться о сбалансированном распределении обязанностей. Это значит, что надо избегать слиш­ком больших или, наоборот, чересчур маленьких классов. Каж­дый класс должен хорошо делать что-то одно.

Если абстрактные классы будут слишком велики, то модель будет трудно модифи­цировать и повторно использовать. Если они слишком малы, то придется иметь дело с таким большим количеством абстрак­ций, что ни понять, ни управлять ими будет невозможно. Язык UML способен помочь в визуализации и специфицировании ба­ланса обязанностей [2].

Моделирование распределения обязанностей в системе вклю­чает следующие этапы:

  1. Идентификация совокупности классов, совместно отве­чающих за некоторое поведение.

  2. Определение обязанностей каждого класса.

  3. Разбиение классов, у которых слишком много обязанно­стей, на подклассы и наоборот, объединение крошечных классов с элементар­ными обязанностями в более крупные.

  4. Перераспределение обязанностей так, чтобы каждая абст­ракция стала в разумной степени автономной.

  5. Анализ кооперируемых классов друг с другом и перерас­пределение обязанностей с таким расчетом, чтобы ни один класс в рамках кооперации не делал слишком много или слишком мало.


Непрограммные сущности

Моделируемые сущности могут не иметь аналогов в про­граммном обеспечении. Например, частью рабочего процесса в модели предприятия розничной торговли могут быть люди, от­правляющие накладные, и роботы, которые автоматически упа­ковывают заказанные товары для доставки со склада к месту назначения. В вашем приложении совсем не обязательно окажутся компоненты для представления этих сущностей [21].

Отношением называется связь между элементами. В объектно-ориентированном моделировании тремя самыми важными отношениями являются зависимости, обобщения и ассоциации. Графически отношение представлено линией, тип которой зависит oт вида отношения.

Зависимостью (Dependency) называют отношение использования, согласно которому изменение в спецификации одного элемента (например, класса Event) может повлиять на другой элемент, его использующий (в данном случае -– класс Window), причем обратное не обязательно. Графически зависимость изо­бражается пунктирной линией со стрелкой, направленной от данного элемента на тот, от которого он зависит. Используйте зависимости, когда хотите показать, что один элемент использу­ет другой.

Чаще всего зависимости применяются при работе с классами, чтобы отразить в сигнатуре операции тот факт, что один I класс использует другой в качестве аргумента.

Обобщение (Generalization) – это отношение между общей сущностью (суперклассом, или родителем) и ее конкретным во­площением (субклассом, или потомком). Обобщения иногда на­зывают отношениями типа «является», имея в виду, что одна сущность (например, класс BayWindow) является частным выра­жением другой, более общей (например, класса Window). Другими словами, потомок может быть подставлен вместо родителя. При этом он наследует свойства родителя, в частности, его атрибуты и операции. Часто, хотя и не всегда, у потомков есть свои собственные атрибуты и операции, помимо тех, что существуют у родителя. Операция потомка с той же сигнатурой, что и у родителя, замещает операцию родителя; это свойство на­зывают полиморфизмом (Polymorphism). Графически отношение обобщения изображается в виде линии с большой незакрашен­ной стрелкой, направленной на родителя. Применяйте обобще­ния, когда хотите показать отношения типа «родитель/потомок» (рис. 3.6).



Рис. 3.6. Обобщение

Ассоциацией (Association) называется структурное отношение, показывающее, что объекты одного типа неким образом связаны с объектами другого типа. Если между двумя классами определе­на ассоциация, то можно перемещаться от объектов одного класса к объектам другого. Вполне допустимы случаи, когда оба конца ассоциации относятся к одному и тому же классу. Ассоциация, связывающая дна класса, называется бинарной. Можно, хотя это редко бывает необходимым, создавать ассоциации, связывающие сразу несколь­ко классов; они называются парными. Графически ассоциация изображается в виде линии, соединяющей класс сам с собой или с другими классами. Используйте ассоциации, когда хотите показать структурные отношения.

Помимо описанной базовой формы существуют четыре на­полнения, применимых к ассоциациям.

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

Роль. Класс, участвующий в ассоциации, играет в ней неко­торую роль. По существу, это «лицо», которым класс, находящийся на одной стороне ассоциации, обращен к классу с другой ее стороны. Вы можете явно обозначить роль, которую класс иг­рает в ассоциации.

Кратность. Ассоциации отражают структурные отношения между объектами. Часто при моделировании бывает важно указать, сколько объектов может быть связано посредством одного экземпляра ассоциации. Это число называется кратностью (Multiplicity) роли ассоциации и записывается как выраже­ние, значением которого является диапазон значений. Каждому объекту на одном конце ассоциации должно соответствовать такое же количество объектов на другом конце. Кратность можно задать равной единице (I), можно указать диапазон: «ноль или единица (0..I). Разрешается также указывать определенное число (например, 3).

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

Правила UML позволяют определить [2]:

  • имена, которые можно давать сущностям, отношениям, диаграммам;

  • область действия (контекст, где имя имеет значение);

  • видимость (когда имена видны и могут использоваться другими элементами);

  • целостность (как элементы должны соотносится друг с другом);

  • выполнение (как элементы выполняют или имитируют некоторую динамическую модель).

Различают хорошо оформленные и не хорошо оформленные модели. Ко второму типу относятся модели:

  • содержащие скрытые элементы (для удобства восприятия);

  • неполные (отдельные элементы пропущены);

  • несогласованные (целостность модели не гарантируется).


Диаграммы UML

Диаграмма в UML – это графическое представление набора элементов, изображаемое чаше всего в виде связного графа с вершинами (сущностями) и ребрами (отношениями). Диаграм­мы рисуют для визуализации системы с разных точек зрения. Диаграмма – в некотором смысле одна из проекций системы. Как правило, за исключением наиболее тривиальных случаев, диаграммы предлагалают свернутое представление элементов, из которых составлена система. Один и тот же элемент может присутство­вать во всех диаграммах или только в нескольких (самый рас­пространенный вариант) или не присутствовать ни в одной (очень редко). Теоретически диаграммы могут содержать любые комбинации сущностей и отношений [2]. Таким образом, в UML выделяют девять типов диаграмм:

  • классы;

  • объекты;

  • прецеденты;

  • последовательности;

  • кооперации;

  • состояния;

  • действия;

  • компоненты;

  • развертывания.

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

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

  1. Надо помнить, что цель создания диаграмм на языке UML – не рисование красивых картинок, а визуализация, специфицирование, конструирование и документирование. Диаграммы – это только одно из средств, помогающих привести разработку программной системы к успешному завершению. Иногда стоит создавать их «на лету» – путем опроса элементов модели и использовать для анализа системы по мере построения. Многие диаграммы такого рода можно будет удалить после того, как они выполнят свое назначение (хотя семантика, лежащая в их основе, остается частью модели).

  2. Следует избегать избыточных диаграмм, они только загромождают модель.

  3. Каждая диаграмма должна содержать только необходимые детали. Лишняя информация отвлекает внимание от более важ­ных элементов модели.

  4. Диаграммы не должны быть слишком краткими, только если объект не требует представления на очень высоком уров­не абстракции. Чрезмерное упрощение может скрыть детали, важные для понимания модели; необходимо поддерживать ба­ланс между структурными диаграммами и диаграммами поведения. Лишь очень немногие системы являются только статическими или только динамическими.

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

  6. У каждой диаграммы должно быть осмысленное имя, ясно отражающее ее назначение.

  7. Организация диаграмм осуществляется путем группировки в пакеты в соответствии с представлением.

  8. Для форматирования диаграммы необходимо использовать соответствующие инструменты.

Хорошо структурированная диаграмма обладает следующей функциональностью:

    • заостряет внимание на одном аспекте некоторого представ­ления системы и содержит элементы, существенные для понимания только этого аспекта;

    • содержит детали, соответствующие выбранному уровню абстракции (не загромождена деталями, без которых можно обойтись);

    • не настолько лаконична, чтобы ввести разработчика в за­блуждение относительно важных аспектов семантики. При изображении диаграммы следует воспользоваться ниже­приведенными рекомендациями, в частности:

    • присвоить диаграмме имя, соответствующее ее назначе­нию;

    • расположить элементы так, чтобы свести к минимуму число пересечений;

    • пространственно организовать элементы так, чтобы семантические сущности располагались на диаграмме рядом.

    • использовать примечания и цвет, чтобы привлечь внимание читателя к важным особенностям диаграммы.

Диаграммы классов

С помощью диаграммы классов показывают классы, интер­фейсы, объекты и кооперации, а также их отношения. При моделировании объектно-ориентированных систем чаще всего используют этот тип диаграмм. Диаграммы классов соответствуют статическому виду системы с точки зрения проектирования Диаграммы классов, которые включают активные классы, соот­ветствуют статическому виду системы с точки зрения процессов.

Диаграммы классов обычно содержат следующие сущности:

  • классы;

  • интерфейсы;

  • кооперации;

  • отношения зависимости, обобщения и ассоциации.


Диаграммы объектов

В языке UML статические аспекты строительных блоков сис­темы визуализируют с помощью диаграмм классов. Диаграммы взаимодействия позволяют увидеть динамические аспекты системы, включая экземпляры этих строительных блоков, и сообще­ния, которыми они обмениваются. Диаграмма объектов содер­жит множество экземпляров сущностей, представленных на диа­грамме классов. Таким образом, диаграммы объектов выражают статическую составляющую взаимодействия и состоят из сотрудничающих объектов, однако сообщения на них не показаны. Диаграмма объектов отражает состояние системы и фикси­рованный момент времени [2].

На диаграмме объектов представлены объекты и отношения между ними. Они являются статическими «фотографиями» экземпляров сущностей, показанных на диаграммах классов. Диа­граммы объектов, как и диаграммы классов, относятся к стати­ческому виду системы с точки зрения проектирования или про­цессов, но с расчетом на настоящую или макетную реализацию.
Диаграммы прецедентов

На диаграмме прецедентов представлены преце­денты и актеры (частный случай классов), а также отношения между ними. Диаграммы прецедентов относятся к статическому виду системы с точки зрения прецедентов использования. Они особенно важны при организации и моделировании поведения системы [2].

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

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

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

Предположим, что вы получили по почте загадочное устройство, с одной стороны которого находятся несколько кнопок и маленький жидкокристаллический дисплей. Помимо этого в нем нет ничего примечательного и нет даже намека на то; как его использовать. Можно, конечно, использовать метод проб и ошибок: произвольно нажимать на кнопки и смотреть, что полу­чится, но таким путем на изучение устройства вам придется потратить много времени.

Программные системы часто выглядят столь же непривычно. Вам как пользователю могут передать некоторое приложение и посоветовать поработать с ним. Если приложение следует при­нятым соглашениям используемой вами операционной системы, то, может быть, после нескольких попыток вы добьетесь ка­ких-то полезных результатов, но понять более сложные и тонкие аспекты поведения программы вам никогда не удастся. Если вы разработчик, то вам могут передать на со­провождение унаследованное приложение или набор компонен­тов и сказать, что их надо применить в работе. Вряд ли вы су­меете постичь, как нужно с ними обращаться, пока не сформи­руете концептуальную модель их работы.

В языке UML диаграммы прецедентов как раз и позволяют визуализировать поведение системы, подсистемы или класса, чтобы пользователи могли понять, как их использовать, а разра­ботчики – реализовать соответствующий элемент.
Диаграммы взаимодействий

Диаграммы последовательностей и кооперации (и те и дру­гие называются диаграммами взаимодействий) относятся к чис­лу пяти видов диаграмм, применяемых в UML для моделирова­ния динамических аспектов. На диаграммах взаимодействий по­казывают связи, включающие множество объектов и отношений между ними, в том числе сообщения, которыми объекты обме­ниваются. При этом диаграмма последовательностей акцентиру­ет внимание на временной упорядоченности сообщений, а диа­грамма кооперации – на структурной организации посылающих и принимающих сообщения объектов [4].

Диаграммы взаимодействий используются для моделирова­ния динамических аспектов системы. Сюда входит моделирова­ние конкретных и прототипических экземпляров классов, ин­терфейсов, компонентов и узлов, а также сообщений, которыми они обмениваются, – и все это в контексте сценария, иллюст­рирующего данное поведение. Диаграммы взаимодействий мо­гут существовать автономно и служить для визуализации, спе­цифицирования, конструирования и документирования динами­ки конкретного сообщества объектов, а могут использоваться для моделирования отдельного потока управления в составе прецедента.

Диаграммы взаимодействий важны не только для моделиро­вания динамических аспектов системы, но и для создания ис­полняемых систем посредством прямого и обратного проектиро­вания.

Так, когда человек смотрит фильм в кинотеатре или по телевизо­ру, восприятие его обманывает. На самом деле он видит не не­прерывный процесс, как в жизни, а последовательность статич­ных изображений, меняющихся так быстро, что создастся иллю­зия движения.

При планировании съемок фильма режиссеры и аниматоры используют ту же технику, но с меньшим разрешением. Выделяя основные кадры, они строят модель сцены, уровень детализации которой достаточен для того, чтобы определить роли всех участ­ников съемочной команды. Фактически создание сценария – это ключевой момент кинематографического процесса, посколь­ку он помогает визуализировать, специфицировать, конструиро­вать и документировать фильм.

При моделировании программной системы возникает похо­жая проблема: как лучше смоделировать ее динамические аспек­ты. Вообразите на минуту, что вы способны визуализировать ра­ботающую систему. Если бы вы подключили к ней интерактив­ный отладчик, то могли бы сосредоточить внимание на любом участке памяти и наблюдать, как он изменяется. Можно было бы даже наблюдать за работой нескольких интересующих вас объектов. Вы увидели бы, как с течением времени объекты соз­даются, изменяют значения атрибутов и уничтожаются.

Однако ценность такой визуализации будет весьма ограничена, особенно если речь идет о распределенной системе с не­сколькими параллельными потоками управления. Это напоминает попытку понять кровеносную систему человека, изучая кровоток через одно из сечений его артерии. В данном случае лучше разработать несколько сценариев, описывающих взаимодействие определенных объектов и сообщения, которыми они обмениваются.

В UML это достигается с помощью диаграмм взаимодейст­вий, которые описывают взаимодействия, состоящие из множества, объектов и отношений между ними, включая сообщения, которыми они обмениваются. Диаграммой последовательностей (Sequence diagram) начинается диаграмма взаимодействий, акцентирующая внимание на вре­менной упорядоченности сообщений. Графически такая диа­грамма представляет собой таблицу, объекты в которой распола­гаются вдоль оси X, а сообщения в порядке возрастания време­ни – вдоль оси Y. Диаграммой кооперации (Collaboration diagram) называется диаграмма взаимодействий, основное вни­мание в которой уделяется структурной организации объектов, принимающих и отправляющих сообщения. Графически такая диаграмма представляет собой граф из вершин и ребер.

Как правило, диаграммы взаимодействий содержат:

  • объекты;

  • связи:

  • сообщения.


Диаграммы деятельности

Диаграммы деятельности – это один из пяти видов диа­грамм, применяемых в UML для моделирования динамических аспектов поведения системы. Диаграмма деятельности – это, по существу, блок-схема, которая показывает, как поток управле­ния переходит от одной деятельности к другой [2].

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

Деятельность (Activity) – это некоторый относительно про­должительный этап выполнения в автомате. В конечном итоге деятельность сводится к некоторому действию, которое состав­лено из атомарных вычислений, приводящих к изменению со­стояния системы или возврату значения.

Диаграммы деятельности важны не только для моделирова­ния динамических аспектов поведения системы, но и для по­строения выполняемых систем посредством прямого и обратно­го проектирования.

Динамику поведения можно моделировать с помощью диаграмм деятельности, в которых внимание сосредоточено прежде всего на содержании деятельности, в которой принимают участие объекты. Диа­грамму деятельности можно представить как вывернутую наизнанку диаграмму взаимодействий. Диаграмма взаимодейст­вий – это взгляд на объекты, которые передают друг другу сооб­щения, а диаграмма деятельности – взгляд на операции, кото­рые передаются от одного объекта другому.

Диаграмма деятельности (Activity diagram) показывает поток переходов от одной деятельности к другой. Деятель­ность (Activity) – это продолжающийся во времени неатомар­ный шаг вычислений в автомате; в конечном счете деятельно­сть приводит к выполнению некоего действия, составленного из выполняемых атомарных вычислений, каждое из которых либо изменяет состояние системы, либо возвращает какое-то значе­ние.

Действие может заключаться в вызове другой операции, посылке сигнала, создании или уничтожении объекта либо в простом вычислении, например, значения выражения. Графически диаграмма деятельности представлена в виде графа, имеющего вершины и ребра и в общем случае состоит:

  • из состояний деятельности и состояний действия;

  • из переходов:

  • из объектов.


Диаграммы состояний

Диаграммы состояний – это один из пяти видов диаграмм в языке UML, используемых для моделирования динамических аспектов. Ее частной разновидностью является диаграмма деятельности, в которой все или большая часть состояний – это состояния деятельности, а вес или большая часть переходов инициируются в результате за­вершения деятельности в исходном состоянии. Таким образом, при моделировании жизненного цикла объекта полезны как диа­граммы деятельности, так и диаграммы состояний. Однако если диаграмма деятельности показывает поток управления от деятельности к деятельности, то на диаграмме состояний представлен по­ток управления от состояния к состоянию [2].

Диаграммы состояний используются для моделирования динамических аспектов системы. По большей части под этим подразумевается моделирование поведения реактивных объектов. Реактивным называется объект, поведение которого лучше всего характеризуется его реакцией на события, произошедшие вне его собственного контекста. У реактивного объекта есть четко выраженный жизненный цикл, когда текущее поведение обу­словлено прошлым. Диаграммы состояния можно присоединять к классам, прецедентам или системе в целом для визуализации, специфицирования, конструирования и документирования ди­намики отдельного объекта.

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

В UML для моделирования поведения объекта с точки зре­ния порядка возникновения событий используются диаграммы состояний.

Диаграмма состояний (Slatechart diagram) показывает автомат, фокусируя внимание на потоке управления от состояния к со­стоянию. Автомат (State machine) – это описание последова­тельности состояний, через которые проходит объект на протя­жении своего жизненною цикла, реагируя на события, в том числе описание реакций на эти события. Состояние (State) – это ситуация в жизни объекта, на протяжении которой он удов­летворяет некоторому условию, осуществляет определенную дея­тельность или ожидает какое-то событие. Событие (Event) – это спецификация существенного факта, который происходит во времени и пространстве. В контексте автоматов событие – это стимул, способный вызвать срабатывание перехода.

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

Деятельность (Activity) – это продолжающееся неатомарное вычисление внутри автомата.

Действие (Action) – это атомарное вычисление, которое при­водит к смене состояния или возврату значения. Диаграмма со­стояний изображается в виде графа с вершинами и ребрами.

Обычно диаграмма состояний включает в себя:

  • простые и составные состояния;

  • переходы вместе с ассоциированными событиями и дейст­виями.

На диаграмме компонентов представлена организация сово­купности компонентов, существующие между ними зависимо­сти. Диаграммы компонентов относятся с точки зрения реализации к статическому виду системы. Они могут быть соотнесены с диаграммами классов, так как компонент обычно отображается на один или несколько классов, интерфейсов или коопераций.

На диаграмме развертывания представлена конфигурация обрабатывающих узлов системы и размещенных в них компо­нентов. Диаграммы развертывания с точки зрения развертывания относятся к статическому виду архитектуры системы. Они связаны с диаграммами компонентов, поскольку в узле обычно размещаются один или несколько компонентов.
Архитектура

Для визуализации, специфицирования, конструирования и документирования программных систем необходимо рассматри­вать их с различных точек зрения. Все, кто имеет отношение к проекту: конечные пользователи, аналитики, разработчики, сис­темные интеграторы, тестировщики, технические писатели и ме­неджеры проектов, – преследуют собственные интересы, и каж­дый смотрит на создаваемую систему по-разному в различные моменты ее жизни. Системная архитектура является наиболее важным артефактом, который используется для управ­ления всевозможными точками зрения и тем самым способствует итеративной и инкрементной разработке системы на всем протяжении ее жизненного цикла.

Архитектура – это совокупность существенных решений в отношении:

  • организации программной системы;

  • выбора структурных элементов, составляющих систему, и их интерфейсов;

  • поведения этих элементов, специфицированного в коопе­рациях с другими элементами;

  • составления из этих структурных и поведенческих элемен­тов все более и более крупных подсистем;

  • архитектурного стиля, направляющего и определяющего всю организацию системы; статические и динамические элементы, их интерфейсы, кооперации и способ их объе­динения.

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

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

Вид с точки зрения прецедентов (Use case view) охватывает прецеденты, которые описывают поведение системы, наблюдае­мое конечными пользователями, аналитиками и тестировшиками. Этот вид специфицирует не истинную организацию программной системы, а те движущие силы, от которых зависит формирование системной архитектуры. В языке UML статические аспекты этого вида передаются диаграммами прецедентов, а динамические диаграммами взаимодействия, состояний и действий.

Вид с точки зрения проектирования (Design view) охватывает классы, интерфейсы и кооперации, формирующие словарь зада­чи и ее решения. Этот вид поддерживает, прежде всего, функцио­нальные требования, предъявляемые к системе, т.е. те услуги, которые она должна предоставлять конечным пользователям. С помощью языка UML статические аспекты этого вида можно передавать диаграммами классов и объектов, а динамические диаграммами взаимодействия, состояний и действий.

Вид с точки зрения процессов (Process view) охватывает нити и процессы, формирующие механизмы параллелизма и синхро­низации в системе. Этот вид описывает главным образом произ­водительность, масштабируемость и пропускную способность системы. В UML его статические и динамические аспекты ви­зуализируются теми же диаграммами, что и для вида с точки зрения проектирования, но особое внимание при этом уделяется активным классам, которые представляют соответствующие нити и процессы.

Вид с точки зрения реализации (Implementation view) охва­тывает компоненты и файлы, используемые для сборки и выпус­ка конечного программного продукта. Этот вид предназначен в первую очередь для управления конфигурацией версий системы, составляемых из независимых (до некоторой степени) компо­нентов и файлов, которые могут по-разному объединяться меж­ду собой. В языке UML статические аспекты этого вида переда­ют с помощью диаграмм компонентов, а динамические – с по­мощью диаграмм взаимодействия, состояний и действий.

Вид с точки зрения развертывания (Deployment view) охваты­вает узлы, формирующие топологию аппаратных средств систе­мы, на которой она выполняется. В первую очередь он связан с распределением, поставкой и установкой частей, составляющих физическую систему. Его статические аспекты описываются диаграммами развертывания, а динамические – диаграммами взаимодействия, состояний и действий.

Каждый из перечисленных видов может считаться вполне са­мостоятельным, вследствие этого лица, имеющие отношение к разработке системы, могут сосредоточиться на изучении только тех аспек­тов архитектуры, которые непосредственно их касаются. UML позволяет отобразить каждый из пяти перечисленных видов и их взаимодействия [2].
Контрольные вопросы

  1. Каковы задачи моделирования?

  2. Перечислите задачи UML.

  3. Из каких строительных блоков состоит UML?

  4. Что такое сущность? Каковы типы сущностей в UML?

  5. Перечислите и дайте определение основных структурных сущностей.

  6. Какие сущности описывают поведение системы?

  7. Как обозначаются классы в UML?

  8. Что такое отношения в UML?

  9. Дайте характеристику следующим отношениям: зависимость, обобщение, ассоциация.

  10. Приведите примеры атрибутов ассоциаций.

  11. Что такое кратность ассоциации?

  12. Что определяют правила UML?

  13. Перечислите виды диаграмм UML.

  14. Перечислите принципы создания диаграмм.

  15. Какие сущности обычно содержат диаграммы классов?

  16. Какие диаграммы относятся к статическому виду, а какие – к динамическому?

  17. Объясните назначение каждого вида диаграммы.

  18. Какой вид диаграмм делится на диаграммы последовательностей и диаграммы коопераций?

  19. В какой диаграмме используется понятие «автомат»?

  20. Что такое архитектура систем?

  21. Какие аспекты разработки ПО охватывает архитектура?

  22. Что включает в себя вид с точки зрения развертывания и вид и точки зрения процессов?

1   2   3   4   5   6   7   8   9   ...   23

Похожие:

Учебное пособие Чебоксары 2013 iconУчебное пособие Москва Российский университет дружбы народов 2013...
Б 90 Основы риторики и коммуникации. Нормативный и коммуникативный аспекты современной риторики [Текст] : учебное пособие / М. Б....

Учебное пособие Чебоксары 2013 iconУчебное пособие Тюмень
Деловой английский язык. Часть I. Business English. Part I : учебное пособие / Ю. А. Вишневецкая, Л. М. Калянова. — Тюмень : Тюмгнгу,...

Учебное пособие Чебоксары 2013 iconУчебное пособие Учебное пособие Владимир 2016 г. Учебное пособие...
«Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича Столетовых»

Учебное пособие Чебоксары 2013 iconУчебное пособие 2013 Министерство образования и науки Российской...
Юрьева О. А. Бухгалтерский учет на предприятиях сферы услуг. Учебное пособие. Дгту: Ростов-на-Дону. 2008

Учебное пособие Чебоксары 2013 iconУчебное пособие для бакалавров направления подготовки 230700. 62...
Учебное пособие для бакалавров направления подготовки 230700. 62 «Прикладная информатика в области экономики»

Учебное пособие Чебоксары 2013 iconУчебное пособие тема: «профилактика пролежней»
Учебное пособие пм 04 Выполнение работ по профессии Младшая медицинская сестра по уходу за больными

Учебное пособие Чебоксары 2013 iconУчебное пособие Иркутск 2006
Учебное пособие предназначено для студентов III v курсов специальности «Технология художественной обработки материалов»

Учебное пособие Чебоксары 2013 iconУчебное пособие Коллектив авторов: Е. Я. Букина
Хрестоматия по культурологии: учебное пособие / Под ред. Е. Я. Буки­ной. Новосибирск: Изд-во нгту, 2008

Учебное пособие Чебоксары 2013 iconУчебное пособие для студентов специальностей: 061133 «Управление проектом»
Адамов Н. А., Амучиева Г. А. Бухгалтерский учет в строительстве: Учебное пособие / гуу. – М., 2004. – с. 128

Учебное пособие Чебоксары 2013 iconУчебное пособие 2003 г
Учебное пособие предназначено для студентов имтп, а также может быть использовано при самостоятельном освоении современного программного...

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск