ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ
ПРОЕКТИРОВАНИЕ СЛОЖНЫХ СИСТЕМ. ИНСТРУМЕНТАРИЙ
·
Математические основы объектно -
ориентированного анализа и проектирования
·
Исторический обзор развития методологии
объектно-ориентированного анализа и проектирования
·
Инструментальные средства разработки программного обеспечения
Математические основы объектно
- ориентированного анализа и проектирования
В основе многих концепций моделирования сложных систем лежат понятия теории множеств, теории графов и семантических сетей. Кратко рассмотрим основные из данных понятий.
Под множеством А понимается некоторая совокупность различимых объектов ai. Данные объекты называются элементами множества. Конечное множество обозначается следующим образом:
А = {ai, а2, аз, ..., an},
где n - количество элементов, входящих в множество, называемое мощностью множества.
Подмножеством является любая часть совокупности объектов, входящих в множество.
Отношение множеств (связь, соотношение множеств) обозначает любое подмножество кортежей, построенных из элементов исходных множеств. Под кортежем понимается набор упорядоченных элементов исходных множеств. Например, кортеж из трех элементов может обозначаться следующим образом:
<a1 , а2 , а3> .
Упорядоченность набора входящих в кортеж элементов обозначает, что каждый элемент кортежа имеет строго фиксированное место (например, первый элемент всегда идет первым, второй - вторым и т.д.). Отдельные элементы кортежа могут принадлежать как одному, так и нескольким множествам.
Последовательность элементов в кортежах фиксирована и определяется конкретной задачей. Отношение множеств характеризует способ выбора элементов из одного или нескольких множеств для создания упорядоченных кортежей.
Граф можно интерпретировать как графическое представление бинарного отношения двух множеств. Бинарное отношение состоит из кортежей, содержащих два элемента некоторого множества.
Неориентированный граф G задается двумя множествами - множеством вершин V и множеством ребер Е:
G = (V, E);
V = {V1 , V2 , ..., Vn};
E = {e1, e2 , ..., em},
где n - количество вершин графа; m - количество ребер графа.
Неориентированному графу ставится в соответствие бинарное отношение PG, состоящее из таких кортежей <Vi , Vj>, для которых вершины Vi и Vj соединяются в графе G некоторым ребром ек.
Маршрутом в неориентированном графе называется упорядоченная последовательность ребер, в которой два соседних ребра имеют общую вершину.
Ориентированный граф задается двумя множествами - множеством вершин V и множеством дуг Е. Каждая дуга ек обозначается стрелкой и имеет свое начало в некоторой вершине Vi и конец в вершине Vj. Ориентированному графу ставится в соответствие бинарное отношение PG, состоящее из таких кортежей <Vi , Vj>, для которых вершины vi и Vj соединяются в графе G некоторой дугой ек с началом в вершине vi и концом в вершине Vj.
Ориентированным маршрутом называется упорядоченная последовательность дуг, в которой две соседние дуги имеют общую вершину, являющуюся концом предыдущей и началом следующей дуги.
Частным случаем графа является дерево - граф, между любыми двумя вершинами которого существует маршрут, с неповторяющими ребрами (или дугами). Дерево может быть ориентированным и неориентированным.
Семантическая сеть - это некоторый граф Gs = (Vs, Es), в котором множество вершин Vs и множество ребер Es разделены на отдельные типы, характерные для конкретной предметной области. Вершины соответствуют сущностям предметной области и именуются соответствующими смысловыми именами. Типы ребер соответствуют видам связей между сущностями.
Для семантических сетей характерно наличие различных графических обозначений для представления отдельных типов вершин и ребер.
В основе методологии объектно-ориентированного анализа и проектирования лежат понятия теории множеств, теории графов и семантических сетей.
Исторический
обзор развития методологии объектно-ориентированного
анализа и проектирования
В 80-х гг. ХХ ст. появилось большое количество методологий и графических нотаций структурного анализа и проектирования. К ним относятся, например, методы JSP и JSD Джексона, методологии семейства IDEF, методология структурного анализа потоков данных DFD и ряд других. Многие из этих методологий реализованы в CASE-средствах.
Методологии структурного анализа и проектирования базируются на функциональной декомпозиции структуры предметной области или проектируемой системы.
Одновременно с развитием методологий структурного анализа и проектирования начали появляться отдельные языки объектно-ориентированного анализа и проектирования. Данные языки ориентированы на объектную декомпозицию структуры предметной области или проектируемой системы.
На дальнейшее развитие объектно-ориентированных языков моделирования оказали непосредственное влияние многие идеи структурного анализа и проектирования. В этой связи особо следует выделить методологии IDEF0, IDEF1, DFD, базовые принципы которых положены в основу ряда объектно- ориентированных диаграмм моделирования.
К середине 90-х гг. ХХ ст. наибольшую известность из методов объектно- ориентированного анализа и проектирования (ООАП) приобрели методы Гради Буча, Джеймса Румбаха и Айвара Джекобсона, ориентированные на поддержку различных этапов ООАП. Данные методы послужили основой Унифицированного языка моделирования UML (UnifiedModeling Language).
Первое описание языка UML появилось в 1996 г. В 1998 г. компания Rational Software Corporation разработала одно из первых CASE-средств Rational Rose 98, в котором был реализован язык UML.
В настоящее время существует большое количество CASE-средств, базирующихся на применении языка UML.
Разработаны среды визуального программирования на основе UML (Visual C++, Java, Delphi, Power Builder, Ada и др.).
На развитие объектно-ориентированных языков моделирования оказали непосредственное влияние методологии структурного анализа и проектирования IDEFO, IDEF1, DFD. Их базовые принципы положены в основу объектно- ориентированных диаграмм моделирования. Основой Унифицированного языка моделирования UML являются методы Гради Буча, Джеймса Румбаха и Айвара Джекобсона, ориентированные на поддержку различных этапов объектно- ориентированного анализа и проектирования.
Основы языка UML
Язык UML - это язык визуального моделирования, позволяющий разрабатывать концептуальные, логические и физические модели сложных систем. Он предназначен для визуализации, анализа, спецификации, проектирования и документирования предметных областей, сложных систем вообще и ПС в частности.
Язык UML основан на следующих принципах объектно-ориентированного анализа и проектирования:
• принцип абстрагирования - предписывает включать в модель только те аспекты предметной области, которые имеют непосредственное отношение к выполнению проектируемой системой своих функций; абстрагирование сводится к формированию абстракций, определяющих основные характеристики внешнего представления объектов;
• принцип инкапсуляции - предписывает разделять элементы абстракции на секции с различной видимостью, что позволяет отделить интерфейс абстракции от его реализации; обычно скрываются структура объектов и реализация их методов;
• принцип модульности - определяет возможность декомпозиции проектируемой системы на совокупность сильно связанных и слабо сцепленных модулей; определение модулей выполняется при физической разработке системы, определение классов и объектов - при логической разработке;
• принцип иерархии - означает формирование иерархической структуры абстракций; принцип предписывает выполнять иерархическое построение моделей сложных систем на различных уровнях детализации;
• принцип многомодельности - обозначает, что при моделировании предметной области необходимо разрабатывать различные модели проектируемой сложной системы, отражающие различные аспекты ее поведения или структуры.
Конкретным представлением абстракции является объект - элемент предметной области, существующий во времени и пространстве. Понятие объекта аналогично понятию экземпляра класса. Каждый объект характеризуется индивидуальностью, состоянием и поведением.
Индивидуальность - характеристики объекта, отличающие его от других объектов. Состояние - перечень свойств объекта, имеющих текущие значения. Поведение - воздействие объекта на другие объекты или его реакция на воздействия других объектов, выраженная в терминах изменения его состояний и передачи сообщений.
Между объектами существуют два основных вида отношений: связи и агрегация.
Связь - это равноправное (клиент-серверное) отношение между объектами, обозначающее физическое или логическое соединение между ними. С помощью связей перемещаются данные между объектами и вызываются операции объектов.
Агрегация - это иерархическое отношение объектов вида «целое - часть».
Класс - это описание множества объектов, имеющих общие свойства, операции, отношения и семантику. Каждый объект представляет собой экземпляр класса.
Между классами существует четыре основных вида отношений: ассоциация, зависимость, обобщение - специализация, целое - часть.
Отношение ассоциации определяет связи между экземплярами классов. Ассоциативное отношение характеризуется мощностью ассоциации. Существует три типа мощности ассоциации:
• один-к-одному;
• один-ко-многим;
• многие-ко-многим.
Отношение зависимости определяет влияние одного независимого класса на другой зависимый и обычно представляется в форме отношения использования (отношения между клиентом, запрашивающим услугу, и сервером, предоставляющим услугу).
Отношение обобщения-специализации подразделяется на две разновидности отношений - наследование и конкретизацию. Наследование - это отношение, при котором класс разделяет структуру и поведение, определенные в другом или других классах. Конкретизация - это отношение между родовым классом (шаблоном) и другими классами, наполняющими параметры шаблона.
Отношение целое-часть (отношение агрегации, реализации, включения) обеспечивается агрегацией между экземплярами классов.
Язык UML основан на принципах абстрагирования, инкапсуляции, модульности, иерархии, многомодельности. Основными понятиями языка UML являются понятия объекта, связи, агрегации, класса. Между классами существует четыре основных вида отношений: ассоциация, зависимость, обобщение- специализация, целое-часть.
Диаграммы моделирования в языке UML
Для моделирования различных аспектов предметной области или проектируемой системы в языке UML предусмотрены следующие виды диаграмм:
• диаграмма вариантов использования (Use Case Diagram);
• диаграмма классов (Class Diagram);
• диаграммы поведения (Behavior Diagram), в том числе:
• диаграмма состояний (Statechart Diagram);
• диаграмма деятельности (Activity Diagram);
• диаграммы взаимодействия (Interaction Diagram), в том числе:
• диаграмма последовательности (Sequence Diagram);
• диаграмма кооперации (Collaboration Diagram);
• диаграммы реализации (Implementation Diagram), в том числе:
• диаграмма компонентов (Component Diagram);
• диаграмма развертывания (Deployment Diagram).
Модели языка UML подразделяются на два вида:
• структурные модели (статические модели) описывают структуру сущностей предметной области или компонентов моделируемой системы, включая их классы, атрибуты, связи, интерфейсы; к данному виду моделей относятся диаграммы вариантов использования, классов, компонентов, развертывания;
• модели поведения (динамические модели) описывают функционирование сущностей предметной области или компонентов системы во времени, включая их методы, взаимодействия между ними, изменение состояний отдельных сущностей, компонентов и системы в целом; к данному виду моделей относятся диаграмма состояний, диаграмма деятельности, диаграмма последовательности, диаграмма кооперации.
Все модели языка UML подразделяются на три уровня:
• концептуальные модели представляют собой верхний, наиболее общий и абстрактный уровень описания моделируемой системы; к данному уровню относится диаграмма вариантов использования; с уровня концептуальной модели должно начинаться моделирование предметной области или проектируемой системы (программного средства);
• логические модели представляют собой второй уровень описания моделируемой системы; элементы моделей данного уровня не имеют физического воплощения и отражают логические аспекты структуры и поведения реальной предметной области или системы; логические модели должны строиться после концептуальных моделей; к данному уровню относятся диаграммы классов, состояний, деятельности, последовательности, кооперации;
• физические модели представляют собой нижний уровень описания моделируемой системы; элементы моделей данного уровня представляют собой конкретные материальные сущности физической системы; данные модели рекомендуется строить в последнюю очередь; к данному уровню относятся диаграммы компонентов и развертывания.
Процесс объектно-ориентированного анализа и проектирования, базирующийся на построении различных типов диаграмм UML, получил название рационального унифицированного процесса RUP (Rational Unified Process). Основы данного процесса разработаны одним из авторов языка UML Джекобсоном.
Диаграмма вариантов использования описывает функциональное назначение моделируемой предметной области или системы.
Диаграмма классов является основной для создания кода приложения. Она описывает внутреннюю структуру программного средства, наследование и взаимное положение классов.
Диаграмма состояний описывает возможные последовательности состояний и переходов, выполняемых в ответ на некоторые события. Данная диаграмма характеризует поведение элементов модели в течение их жизненного цикла.
Диаграмма деятельности моделирует алгоритмическую и логическую реализации выполнения операций в системе и является аналогом схем алгоритмов, предназначенным для использования в объектно-ориентированных приложениях.
Диаграмма последовательности отображает синхронные процессы, описывающие взаимодействие объектов модели во времени. Время в данной модели присутствует в явном виде.
Диаграмма кооперации описывает структурные связи между взаимодействующими объектами модели.
Диаграмма компонентов описывает физическое представление проектируемой системы и позволяет определить ее архитектуру в терминах модулей, исходных и исполняемых кодов, файлов.
Диаграмма развертывания (диаграмма размещения) отображает общую конфигурацию и топологию распределенной системы. Данная диаграмма представляет распределение программных компонентов по отдельным узлам системы и маршруты передачи информации между ними.
Диаграмма вариантов использования является первой из диаграмм, разрабатываемых при моделировании предметной области, системы или программного средства. Она является базой при разработке спецификации функциональных требований и имеет основополагающее значение с точки зрения полноты и корректности дальнейшего моделирования проектируемой системы (программного средства). С учетом этого в следующем подразделе детально рассмотрены правила построения диаграмм вариантов использования.
В языке UML предусмотрены
восемь видов диаграмм: диаграммы вариантов использования, классов, состояний,
деятельности, последовательности,
Инструментальные
средства разработки программного обеспечения
Очевидно, что большие размеры и высокая
сложность разрабатываемых ПС при ограничениях на бюджетные и временные затраты
проекта могут привести к низкому качеству конечных программных продуктов и
системы в целом. В этой связи в последнее время все большее внимание уделяется
современным технологиям и инструментальным средствам, обеспечивающим
автоматизацию процессов ЖЦ ПС (CASE-средствам). Использование таких
инструментальных средств позволяет существенно сократить длительность и
стоимость разработки систем и ПС при одновременном повышении качества процесса
разработки и, как следствие, качества разработанных ПС.
В истории развития CASE-средств обычно выделяется шесть периодов. Данные периоды различаются применяемой техникой и методами разработки ПС. Эти периоды используют в качестве инструментальных средств следующие средства.
Период 1. Ассемблеры, анализаторы.
Период 2. Компиляторы, интерпретаторы, трассировщики.
Период 3. Символические отладчики, пакеты программ.
Период 4. Системы анализа и управления исходными текстами.
Период 5. Первое поколение CASE (CASE-I). Это CASE-средства, позволяющие выполнять поддержку начальных работ процесса разработки ПС и систем (анализ требований к системе, проектирование архитектуры системы, анализ требований к программным средствам, проектирование программной архитектуры, логическое проектирование баз данных). Адресованы непосредственно системным аналитикам, проектировщикам, специалистам в предметной области. Поддерживают графические модели, экранные редакторы, словари данных. Не предназначены для поддержки полного ЖЦ ПС.
Период 6. Второе поколение CASE (CASE-II). Представляют собой, как правило, набор (линейку) инструментальных средств, каждое их которых предназначено для поддержки отдельных этапов процесса разработки или других процессов ЖЦ ПС. В совокупности обычно поддерживают практически полный ЖЦ ПС. Используют средства моделирования предметной области, графического представления требований, поддержки автоматической кодогенерации ПС. Содержат средства контроля и управления разработкой, интеграции системной информации, оценки качества результатов разработки. Поддерживают моделирование и прототипирование системы, тестирование, верификацию, анализ сгенерированных программ, генерацию документации по проекту.
В
состав CASE-средств
входят четыре основных компонента:
1. Средства централизованного хранения всей информации о проекте (репозиторий). Предназначены для хранения информации о разрабатываемом программном средстве или системе в течение всего ЖЦ разработки.
2. Средства ввода. Служат для ввода данных в репозиторий, организации взаимодействия участников проекта с CASE-средством. Должны поддерживать различные методологии анализа, проектирования, тестирования, контроля. Предназначены для использования в течение ЖЦ программного средства или системы различными категориями участников проекта (системными аналитиками, проектировщиками, программистами, тестировщиками, менеджерами, специалистами по качеству и т.д.).
3. Средства анализа и разработки. Предназначены для анализа различных видов графических и текстовых описаний и их преобразований в процессе разработки.
4. Средства вывода. Служат для кодогенерации, создания различного вида документов, управления проектом.
Все компоненты CASE-средств в совокупности обладают
следующими функциональными возможностями:
• поддержка графических моделей;
• контроль ошибок;
• поддержка репозитория;
• поддержка основных, вспомогательных и организационных процессов ЖЦ ПС.