ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОЕКТИРОВАНИЕ СЛОЖНЫХ СИСТЕМ. ИНСТРУМЕНТАРИЙ

·        Математические основы объектно - ориентированного анализа и проектирования

·        Исторический обзор развития методологии объектно-ориентированного анализа и проектирования

·        Основы языка UML

·        Инструментальные средства разработки программного обеспечения

 

Математические основы объектно - ориентированного анализа и проектирования

 

В основе многих концепций моделирования сложных систем лежат поня­тия теории множеств, теории графов и семантических сетей. Кратко рас­смотрим основные из данных понятий.

Под множеством А понимается некоторая совокупность различимых объектов 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-средств в совокупности обладают следующими функциональными возможностями:

     поддержка графических моделей;

      контроль ошибок;

      поддержка репозитория;

      поддержка основных, вспомогательных и организационных процессов ЖЦ ПС.