Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

АрхитектураИС_Семестр3_МетодПособие8-9

.pdf
Скачиваний:
18
Добавлен:
05.06.2015
Размер:
603.53 Кб
Скачать

Федеральное агентство по образованию Омский государственный институт сервиса

И .В. Червенчук

Информационные системы и процессы, моделирование и управление

МОДЕЛИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ С ПОМОЩЬЮ UML

Учебное пособие

Омск 2006

2

УДК 004.3 Ч 45

Червенчук И.В.

Информационные системы и процессы, моделирование и управление. Моделирование информационных систем с помощью UML: Учебное пособие. – Омск: Омский государственный институт сервиса, 2006. 48с.

Рассмотрены основы унифицированного языка моделирования UML, даются рекомендации по использованию средств данного языка при моделировании программного обеспечения, приводятся примеры разработки моделей информационных систем. Учебное пособие составлено в соответствии с Государственным образовательным стандартом высшего профессионального образования по специальности«Прикладная информатика (в сфере сервиса)».

Учебное пособие предназначено для студентов специальности «Прикладная информатика (в сфере сервиса)» очной и заочной формы обучения. Содержит материал для самостоятельной проработки студентами лекций по курсу «Информационные системы и процессы, моделирование и управление», может использоваться при подготовке к экзаменам и выполнении курсовой работы.

Рецензент: канд. техн. наук, доцент О.П. Шафеева (Омский государственный технический университет)

3

ОГЛАВЛЕНИЕ

Предисловие…………………………………………………………… 4 ВВЕДЕНИЕ………..…….…………………………………………… 5

1.ОБЗОР UML ………..………...…………………………………… 8

1.1.Строительные блоки UML ………..………………………. 12

1.2.Правила языка UML……………………………………… 19

1.3.

Общие механизмы языа UML……………………………

20

1.4.

Архитектура программной системы……………………

24

Выводы………………………………………………………….

27

Контрольные вопросы……………………………………………

27

Упражнения …………………………………………………….

28

2. КЛАССЫ……...........……………………………………………… 29

2.1.

Термины и понятия …………………….…………………..

30

2.2.

Типичные приемы моделирования. Словарь системы…

35

2.3. Непрограммные сущности ………………….……………… 38

2.4. Примитивне типы.……………………….……………….……

39

2.5. Рекомендации к моделированию классов ……….……….

40

Выводы………………………………………………………….

41

Контрольные вопросы……..……………………………………..

41

Упражнения ………………..……………………………………

42

3.ПРИМЕРЫ МОДЕЛИРОВАНИЯ…………….………………… 43

3.1.Диаграмма прецедентов …….……………….…………….. 43

3.2.Диаграмма классов ……….……………….…….………….. 45

3.3.Диаграммы взаимодействия……………………………… 47

3.4.Реализация информационной системы…………………. 49

Выводы…………………………………………………………. 52

Контрольные вопросы…………………………………………….. 53 Упражнения ……………………………………………………… 54

ЗАКЛЮЧЕНИЕ...………………………………………………………….. 56

БИБЛИОГРАФИЧЕСКИЙ СПИСОК…………..……………….. 57

Словарь терминов и определений………………………………………… 58

4

 

 

Предисловие

 

 

 

Данное учебное пособие знакомит читателя с возможностями унифициро-

 

ванного

языка моделированияUML (Unified Modeling Language), который по-

 

степенно

становится

стандартом

де-факто

при

описании-

объектн

ориентированных систем. Язык UML является мощным современным средством

 

моделирования программного обеспечения и его изучению уделяется особое

внимание в курсе«Информационные системы и процессы. Моделирование и

 

управление». Программные

средства, основанные на UML: «Rational Rose» и

 

«Visual Paradigm» являются основными программными средствами, используе-

 

мыми в

рамках данного курса. С использованием указанных программных

 

средств

проводятся практические занятия

и выполняется курсовая работа

по

курсу «Информационные системы и процессы. Моделирование и управление». Кроме того, средства UML рекомендуется использовать при работе над дипломным проектом, особенно если тематика дипломного проекта связана с разработкой модели информационной системы.

Воснову данного пособия положена значительная, при этом самая существенная, часть курса «Информационные системы и процессы. Моделирование и управление» читаемого автором студентам Омского государственного института сервиса, связанная с моделированием программных средств.

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

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

Втретьем разделе учебного пособия приводится пример подробно разработанной модели справочно-информационной системы музыки наCD. Иллюстрируются возможности применения различных диаграмм UML для моделирования различных аспектов информационно-справочной системы. Материал данного раздела может использоваться студентами при выполнении курсовой работы по курсу «Информационные системы и процессы. Моделирование и управление» и дипломного проекта.

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

5

ВВЕДЕНИЕ

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

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

вующая система графических обозначений была зафиксирована в ГОСТ 19.701-90, который регламентировал использование условных обозначений в схемах алгоритмов, программ, данных и систем. Данные средства с успехом использовались, был организован специальный фонд алгоритмов и программ, где хранилась и куда поступала документация наиболее интересных и используемых вычислительных алгоритмов.

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

6

мирования, ее естественное развитие привело к методологии структурного программирования [4]. Основой данной методологии является процедурная декомпозиция программной системы и организация отдельных модулей в виде совокупности выполняемых процедур. Хорошим тоном стало программирование без использования оператора безусловного перехода (goto), при этом языками программирования стали поддерживаться конструкции ветвления с несколькими условиями (if… else, case…), циклы с предусловием (while…) и постусловием (do…until) и пр. В рамках методологии структурного программирования получило развитие нисходящее проектирование программ или программирование "сверху-вниз". Период наибольшей популярности идей структурного программирования приходится на конец 70-х—начало 80-х годов. В арсенал блок схем были введен элемент «процедура», были дополнительно введены такие элементы как «цикл с пред условием», «цикл с постусловием», однако интерес к их использованию резко падал. Программисты стали отдавать предпочтению непосредственно тексту программы, при этом было рекомендовано использование отступов в начале каждой строки, которые должны выделять вложенные циклы и условные операторы, использовалась так называемая венгерская нотация, позволяющая по имени легко определить тип переменной или константы, хотя при жесткой необходимости продолжали использовать блок-схемы. В этот период основным показателем сложности разработки программ считали размер ее исходного кода.

Примерно во второй половине80-х годов стало очевидным, что традиционные методы процедурного программирования не способны справиться ни с растущей сложностью программ и их разработки, ни с необходимостью повышения их надежности. Возникла необходимость новой методологии программирования. Такой методологией стало объектно-ориентированное программирование(ООП). Базовыми понятиями ООП являются понятия класса и объекта. При этом под классом понимают некоторую абстракцию совокупности объектов, которые имеют общий набор свойств и обладают одинаковым поведением. Каждый объект в этом случае рассматривается как экземпляр соответствующего класса. Принцип инкапсуляции (заключение в некоторой программной единице – классе некоторого логически законченного программного элемента с соответствующими ему данными и функциями) становится одним из фундаментальных принципов программирования. Применение принципов наследования и полиморфизма позволило в значительной степени оптимизировать программу,

7

повысить ее надежность.

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

дологии объектно-ориентированнного анализа и проектирования (ООАП). В рамках этого подхода возникало много направлений, период конца 80-х и начало 90-х годов принято называть «войной методов», завершение которой (хотя споры продолжаются) связано с появлением языка UML.

Унифицированный язык моделирования (UML, Unified Modeling Language) является преемником методов объектно-ориентированного анализа и проектирования, он непосредственно унифицирует методы ведущих специалистов в этой области Буча, Рамбо и Джекобсона, однако обладает большими возможностями [1]. Язык UML прошел процесс стандартизации в рамках консорциума OMG (Object Management Group) и с 1997 года является стандартом OMG.

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

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

8

1. ОБЗОР UML

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

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

UML - это язык для визуализации, специфицирования, конструирования и документирования артефактов программных систем.

UML - это язык

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

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

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

UML - это язык визуализации

9

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

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

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

Использование UML позволяет решить третью проблему: явная модель облегчает общение.

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

UML - это не просто набор графических символов. За каждым из них стоит хорошо определенная семантика (см. "The Unified Modeling Language Reference Manual"). Это значит, что модель, написанная одним разработчиком, может быть однозначно интерпретирована другим - или даже инструментальной программой. Так решается первая из перечисленных выше проблем.

UML - это язык специфицирования

В данном контексте специфицирование означает построение точных,

10

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

UML - это язык конструирования.

UML не является языком визуального программирования, но модели, созданные с его помощью, могут быть непосредственно переведены на различные языки программирования. Иными словами, UMLмодель можно отобразить на такие языки, как Java, C++, Visual Basic, и даже на таблицы реляционной базы данных или устойчивые объекты объектно-ориентированной базы данных. Те понятия, которые

предпочтительно передавать графически, так и представляются в UML; те же, которые лучше описывать в текстовом виде, выражаются

с помощью языка программирования.

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

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

UML - это язык документирования

Компания, выпускающая программные средства, помимо исполняемого кода производит и другие артефакты, в том числе следующие:

требования к системе;

архитектуру;

проект;

исходный код;

проектные планы;

- тесты;