39017

Модели методов разработки программного обеспечения информационных систем

Лекция

Информатика, кибернетика и программирование

По определению одного из создателей языка UML Unified Modelling Lnguge Гради Буча: Объектноориентированное программирование ООП это методология программирования основанная на представлении программы в виде совокупности объектов каждый из которых является экземпляром определенного класса а классы образуют иерархию наследования. Леоненкова Самоучитель UML . Методы ООП и ООАП базируются на стандартном языке визуального моделирования UML. Применение методов ООП ООАП и...

Русский

2013-09-30

158.5 KB

30 чел.

                            КУРС ЛЕКЦИЙ

            "Модели методов разработки программного

               обеспечения информационных систем"

                       ЛЕКЦИЯ 1. Обзор Курса

                       1.1 Содержание Курса

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

    Сегодня программное обеспечение разрабатывается с помощью типовых технологий.  Они называются методологиями программирования или  просто методами  программирования.  С  точки  зрения задач,  решаемых в нашем Курсе, наибольший интерес представляет метод объектно-ориентированного программирования   (ООП),  по  английски  object-oriented  programming (ООР).   С   его   помощью   создаются   программы,   написанные    на объектно-ориентированных языках программирования,  таких как С++, Java и др.

    Программное обеспечение  -  это важная,  но не единственная часть проектируемой компьютерной информационной системы.  Другой  ее  частью является  предметная  область.  Поэтому  для разработки информационных систем,   наряду   с   методом   ООП,   используются    также    метод объектно-ориентированного проектирования (object-oriented design, OOD) и метод объектно-ориентированного анализа  (object-oriented  analysis, OOA).  С  помощью  методов  ООА  и ООD моделируются предметные области информационных систем,  которые  у  нас  в  России ,  иногда, называют объектами автоматизации. Примером объекта автоматизации может служить, например, Система   регистрации   учебных   курсов,   которая    будет рассмотрена в Лекции 4.

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

    По определению  одного из создателей языка UML (Unified Modelling Language) Гради Буча:

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

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

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

    Как соотносятся  ООА,  ООD и ООП?  На результатах ООА формируются модели, на которых  основывается  ООD.  В  свою  очередь  OOD  создает фундамент для  окончательной   реализации   компьютерной   системы   с использованием  методологии  ООП.

    Следует сказать,  что   в   нашей   стране   иногда   применяется интегральное  понятие  -  метод  объектно-ориентированного  анализа  и проектирования (ООАП), объединяющий методы ООА и ООD. Например, термин ООАП используется в книге А. Леоненкова "Самоучитель UML".

    Методы ООП и ООАП базируются  на  стандартном  языке  визуального моделирования UML.  Он будет кратко рассмотрен в Лекции 3.  Применение методов ООП/ООАП и языка UML иллюстрируется  в  Лекции  5  на  примере  автоматизированной системы регистрации учебных курсов.

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

    Наряду с   веб-системами   мы   будем   изучать  веб-документы  и веб-книги.   Веб-документы   проще,   чем    веб-системы.    Примерами веб-документов  являются веб-страницы и другие документы,  размеченные HTML и XML тегами и распространяемые  по  Интернет/Веб.  Веб-документы бывают  автономными  или они входят в веб-системы как составные части. Примерами   веб-книг   являются   учебные   веб-курсы.    Веб-системы, веб-документы  и веб-книги появились после того как возникла Всемирная паутина.

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

    В нашем  курсе  лекций  мы  построим  наглядные  и математические модели веб-систем и веб-курсов.  Модели веб-курсов будут  применены  к моделированию и разработке веб-курса наших лекций.  Во втором семестре этого учебного года вы разработаете  в  Курсовом  проекте  веб-курс  с названием   -   "Создание   веб-курса:   Модели   методов   разработки mпрограммного обеспечения информационных систем".  Этот веб-курс  будет представлять собой  12  лекции  первого  семестра,  размеченные тегами HTML,  которые можно читать на экранах ваших  домашних  компьютеров  с помощью браузера Мicrosoft Explorer . Очевидно, что наш веб-курс может быть помещен на сайте кафедры МОВС.

    Курс состоит из 12 лекций.  Первая лекция обзорная,  остальные 11 лекций разделены на три части.

    Первая часть  Курса  (лекции   2,3,4,5)   посвящена   технологиям программирования, методам ООП, ООАП и языку UML. Следует отметить, что в течение последнего десятилетия в области технологий программирования произошли существенные изменения. Они обусловлены появлением:

 1) Объектно-ориентированных  языков  программирования  (С++,  Java и  др.).

 2) Метода  объектно-ориентированного   программирования.

 3) Метода объектно-ориентированного анализа и проектирования

 4) Языка UML, позволяющего моделировать и документировать предметные области  информационных   систем   и   коды   объектно-ориентированных программ.

 5) Инструментальных компьютерных программ,  помогающих создавать UML диаграммы. Одной  из  таких  инструментальных  программ является пакет Rational Rose 2000 фирмы Rational Software Corporation.

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

    В Лекции    2    рассказана    история    развития     технологий программирования,  методов ООА и ООD,  а также языка UML. Исторический экскурс  позволит  нам  увидеть   современное   состояние   технологий программирования  на  фоне  прошлого  и  задуматься  о перспективах их дальнейшего развития.

    Лекция 3  посвящена  языку  UML.  К  сожалению, в  рамках  одного семестра  невозможно  рассказать  о всех деталях языка UML.  Поэтому в нашем Курсе он рассмотрен очень кратко.

    Практическое использование  языка  UML рассматривается в Курсе на примере его применения к системе регистрации учебных  курсов.  В  этой связи  в  Лекции  4  изложена сущность американской автоматизированной системы  регистрации  учебных  курсов  для  университетов.  При   этом американская система регистрации платных учебных курсов сопоставляется с системой регистрации бесплатных курсов, действующей в МИРЭА.

    В Лекции  5  приведен  пример  конкретного применения языка UML к описанию и проектированию  американской  системы  регистрации  учебных курсов университета Истерн.

    Вторая часть  Курса  (лекции 6,7,8,9,10) посвящена теории графов, семантическим  графовым  сетям  и  новому  виду  семантических  сетей, которые называются паттерновыми (модульными) сетями.

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

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

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

    Лекции 7,8,9 дают представление о паттерновых сетях,  позволяющих формально и  в  виде  наглядных схем описывать открытые информационные mсистемы,  состоящие из  модулей  с  попарно  соединенными  выходами  и входами. Паттерновые сети это новый вид семантических  сетей,  которые обладают  модульными  свойствами.  В Курсе лекций они использованы для моделирования и проектирования веб-курсов.

    В Лекции 10 рассматриваются области применения паттерновых  сетей и   приводятся   примеры   их   использования   для   моделирования  и проектирования веб-курсов   и   большой  территориальной  веб-системы, называемой Консолидированный бюджет Российской Федерации.

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

    Третья часть  нашего Курса (лекции 11,12) посвящена моделированию и проектированию веб-курса  "Модели  методов  разработки  программного обеспечения  информационных  систем".  В Лекциях 11,12 будут затронуты также проблемы классификации и  стандартизации  веб-курсов.  Материалы двух   последних  лекций  понадобятся  вам  для  выполнения  курсового проекта.

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

                      1.2 Оглавление Курса

     ЛЕКЦИЯ 1. Обзор Курса лекций

         ЧАСТЬ 1. ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ,

                  МЕТОДЫ ООА/ООD, ЯЗЫК UML

     ЛЕКЦИЯ 2. История технологий программирования,

               методов ООА/ООD и языка UML

     ЛЕКЦИЯ 3. Язык UML

     ЛЕКЦИЯ 4. Системы регистрации учебных курсов

     ЛЕКЦИЯ 5. Пример применения языка UML

         ЧАСТЬ 2. ГРАФОВЫЕ И ПАТТЕРНОВЫЕ СЕТИ

     ЛЕКЦИЯ 6. Теория графов и графовые сети

     ЛЕКЦИЯ 7.  Теория паттернов и паттерновые сети

     ЛЕКЦИЯ 8. Образующие

     ЛЕКЦИЯ 9. Паттерновые сети

     ЛЕКЦИЯ 10. Применение паттерновых сетей

         ЧАСТЬ 3. ВЕБ-КУРСЫ

     ЛЕКЦИЯ 11. Наш веб-курс

     ЛЕКЦИЯ 12. Классификация и стандартизация веб-курсов

          ВОПРОСЫ К ЭКЗАМЕНУ

    Во втором  семестре  учебного года вы выполните курсовой проект с названием "Создание Веб-курса:  Модели методов разработки программного обеспечения информационных систем".  Приведенное выше Оглавление Курса лекций станет первым кадром веб-курса, который вы создадите в курсовом проекте.

         ЧАСТЬ 1. ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ,

                  МЕТОДЫ ООП И ООАП, ЯЗЫК UML

     ЛЕКЦИЯ 2. История технологий программирования, методов ООА, ООD и языка UML

    Разделы Лекции 1: 1.1 Содержание Курса, 1.2 Оглавление Курса.

    Пояснение. Каждая  последующая лекция Курса,  также как Лекция 2, будет начинаться с перечня названий разделов предыдущей лекции.  Когда вы  будете  выполнять курсовой проект,  то в начале каждой последующей лекции разметите тэгами языка HTML  наименования  разделов  предыдущей лекции,  таким   образом,   чтобы   наименования   стали  ссылками  на соответствующие им разделы предыдущей лекции.  Тем самым вы отобразите в веб-курсе 11 "взглядов" на его содержание, которые мы будем называть взглядами типа "повторение - мать учения".  Как видите наш Курс лекций имеет оригинальную структуру,  придуманную для повышения эффективности усвоения Курса студентами, изучающими его по веб-курсу.

            2.1 История  технологий программирования

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

    Известно, что     по     мере     совершенствования    технологий программирования   постоянно   повышалась   производительность   труда программистов.  На  заре  программирования  программы  составлялись на языках машинных кодов и производительность  труда  программистов  была крайне низкой. Затем в 1950-1970 годах появились алгоритмические языки программирования (ALGOL-58,  FORNRAN  I  и  др.),  процедурные  языки,

функциональные языки (ПРОЛОГ) и языки других видов. Производительность труда программистов в этот  период  значительно  увеличилась,  но,  по современным  меркам,  оставалась  невысокой.  Чтобы  убедиться  в этом достаточно вспомнить,  что  в  те  далекие  времена  результаты  труда программистов оценивались и оплачивались по числу написанных ими строк или команд.  Сегодня производительность труда программистов неизмеримо возросла.  Ныне,  как  вы  знаете,  даже новичок программист с помощью современных программных инструментов (например  используя,  MS  Visual C++   или   Interprise/Borland   Delphi)  нажатием  нескольких  клавиш диалогового меню может создать сотни строк программного кода.

    Вегнер в статье, посвященной языку АДА, сгруппировал некоторые из наиболее  известных  языков  программирования высокого уровня в четыре поколения в зависимости от их назначений:

    * Первое поколение (1954-1958)

        FORTRAN I    Математические формулы

        ALGOL-58              "

        Flowmetic             "

    * Второе поколение (1959-1961)

        FORTRAN II   Подпрограммы, раздельная компиляция

        ALGOL-60     Блочная структура, типы данных

        COBOL        Описание данных, работа с файлами

        Lisp         Обработка списков, указатели, сборка мусора

    * Третье поколение (1962-1970)

        PL/1         FORTRAN+ALGOL+COBOL

        ALGOL-68     Более строгий приемник ALGOL-60

        Pascal       Более простой приемник ALGOL-60

        Simula       Классы, абстрактные данные

    * Четвертое, потерянное поколение (1970-1980)

        Создано много языков (около 2000), но мало выживших  (например, Ada, Smaltalk)

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

                    2.2 История методов ООА и ООD

    Методы объектно-ориентированного  анализа и проектирования (ООА и ООD),  основанные на использовании графических  языков  моделирования, появились  сравнительно  недавно,  но  они  имеют  долгую предысторию. Начало разработкам графических  языков  моделирования  сложных  систем

положил Дуглас   Росс,   который   в   середине   60-х   годов  создал оригинальный язык визуального моделирования систем.

    Графический язык  Росса  послужил  стимулом  для  создания  в США целого  семейства  методов  моделирования  и  проектирования   сложных систем,  обозначаемых аббревиатурой IDEF.  Все методы IDEF основаны на использовании    визуальных    языков.    Наиболее    известными    из многочисленного семейства методов IDEF являются методы IDEF0, IDEF1X и IDEF3. Документацию этих и ряда других методов IDEF вы можете найти на сайте www.idef.org.

    Метод IDEF0   предназначен   для  моделирования  функций  сложных информационных систем    и    их    процессов.    Он     поддерживается инструментальными программами  BP-Win (бизнес процессы и окна).  Метод IDEF1X используется  для  моделирования  реляционных  баз  данных.  Он поддерживается программами ER-Win (сущности-взаимосвязи и окна). Метод IDEF3 предназначен для детального моделирования бизнес процессов.

    В США   методы   IDEF0   и  IDEF1X  оформлены  и  утверждены  как федеральные стандарты обработки информации (FIPS).  Это означает,  что все федеральные  организации  (например,  министерства)  и предприятия обязаны использовать стандарты IDEF0 и IDEF1X при разработке новых или при  создании последующих очередей существующих информационных систем. В результате  в  значительной  мере,  обеспечивается,   стандартизация программных   средств,   используемых   федеральными  организациями  и

предприятиями.  Стандарты  IDEF0  и  IDEF1X   служат   также   основой стандартизации информационного,     программного    и    иных    видов взаимодействия  федеральных  организаций  и  предприятий  США.  Методы

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

    Рассмотрим кратко  диаграммы  (визуальные  модели)  метода IDEF0. Исходными  строительными  элементами  любой  IDEF0  диаграммы   служат прямоугольники   и   стрелки.   Процесс   на   диаграмме  изображается прямоугольником. Внутри  процесса  записывается  его  имя.   Слева   к прямоугольнику  присоединяется  стрелка вход,  справа - стрелка выход, сверху - одна или  две  стрелки  управления,  снизу  к  прямоугольнику присоединяется стрелка,  называемая механизмом.  На Рис.  2.1 приведен пример корневой (исходной) диаграммы, моделирующей процесс составления и  утверждения  федерального  бюджета  Российской  Федерации.

                            РИС.2.1

    Рисунок раскрывает смысл,  придаваемый стрелкам IDEF0 диаграммы в конкретном случае. Корневая IDEF диаграмма, имеющая один прямоугольник детализируется диаграммой второго уровня с несколькими  (но  не  более 6-ти) прямоугольниками.  На Рис.2.1 показано как это делается в случае моделирования процесса составления и утверждения федерального бюджета. Далее   для  прямоугольников  на  диаграмме  второго  уровня  строятся диаграммы  третьего  уровня.  Число  уровней   декомпозиции   диаграмм определяется конкретной задачей.

    Диаграммы IDEF0 обладают рядом недостатков. В частности,  они не имеют  математической  основы.   Другой   недостаток   заключается   в отсутствии    визуальных    средств    для   объектно-ориентированного

представления сложных  систем.  Метод  IDEF0  в  сочетании  с  другими методами моделирования сложных систем послужил  основой  для  создания методов объектно-ориентированного моделирования систем и языка UML.

                         2.3 История языка UML

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

языка UML.

    По определению  Гради  Буча  унифицированный  язык  моделирования (Unified Modeling  Language,  UML)  является  графическим  языком  для визуального представления,  составления спецификаций, проектирования и

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

    Решающую роль  в  создании  языка  UML сыграли Гарди Буч,  Джеймс Рамбо и Айвар Джекобсон и созданные ими следующие методы моделирования различных сторон сложных систем:

 1. Метод Буча (Booch'93),  ориентированный,  в  первую  очередь,  на моделирование программного обеспечения сложных систем.

 2. Метод  Рамбо  (ОМТ-2),  ориентированный   на   анализ   процессов обработки данных в информационных системах.

 3. Метод  Джекобсона  (метод  OOSE),   ориентированный   на   анализ требований к бизнес-приложениям.

    Авторы этих    методов    объединились    с    целью     создания унифицированного языка     моделирования     сложных    систем.    Они сформулировали следующие требования к унифицированному языку,  который был назван UML. Язык UML:

 1. Позволяет  моделировать  как  программное   обеспечение   сложных систем, так  и  широкие  классы  самих  систем  и бизнес-приложений, с использованием объектно-ориентированных понятий и методов.

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

 3. Понятен  системным  аналитикам  и  программистам.

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

    В 1996 г. была создана первая версия языка UML 0.9. После этого ведущие компьютерные  фирмы  Microsoft,  IBM,  Oracle  и  многие другие  осознали,  что  язык  UML имеет стратегическое значение для их

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

    Важную роль  в  создании  языка   UML   сыграла   его   поддержка Группой по управлению объектами OMG (Object Management Groop).  Группа OMG объединяет  около  300  ведущих  компьютерных фирм.  Она выпускает стандарты в области Интернет/Веб.  Язык UML  приобрел  статус  второго стратегического направления деятельности OMG.  В 1997 г.  были созданы версии языка UML 1.0 и 1.1.  В 1998 г была создана версия UML 1.2, а в 1999 г  - версия UML 1.3.  В переводной российской литературе по языку UML описывается его версия 1.3.

    В настоящее    время   разработаны   инструментальные   программы поддержки языка UML.  Наиболее известной  из  них  является  программы Rational Rose 2000 фирмы Rational Software.  Кроме  того  создан  ряд

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

    Группа OMG  продолжает работы по созданию новых версий языка UML.

                      ЛЕКЦИЯ 3. Язык UML

  Разделы Лекции 2:  2.1  История  технологий  программирования;  2.2 История методов ООА и ООD; 2.3 История языка UML.

                3.1 UML - язык моделирования и  документирования сложных систем

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

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

    Диаграммы и  таблицы  языка  UML  и  стандартов   IDEF0,   IDEF1X недостаточно   эффективно  моделируют  веб-системы  и  их  компоненты, поскольку они  представляют  собой  модульные  системы,  состоящие  из взаимосвязанных модулей. Наши исследования показали, что веб-системы и веб-компоненты  (например,  веб-страницы,  веб-документы,   веб-курсы) моделируются  паттерновыми  (модульными) сетями.  Паттерновые сети это новый  вид  семантических  сетей.  Они  обладают   четко   выраженными

модульными свойствами и поэтому эффективно моделируют веб-системы и их компоненты.  Мы построим паттерновые сети во  второй  части  Курса.  А теперь займемся языком UML.

    Возникает естественный  вопрос.  Почему  300 ведущих компьютерных фирм,  объединенных в консорциуме OMG,  придают такое большое значение работам  по  созданию версий языка UML?  Чтобы ответить на этот вопрос обратимся к Рис.3.1.

                                 РИС.3.1

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

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

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

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

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

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

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

                    3.2 Структура языка UML

    В одной  лекции невозможно подробно рассмотреть все особенности и детали языка UML.  Для этого  вам  следует  обратиться  к  литературе, посвященной языку UML, например к книге Г.Буча, Д.Рембо, А. Джекобсона "Руководство пользователя UML". Наша цель - дать общее представление о языке UML.  Поэтому мы сосредоточим внимание на структуре, графических элементах и диаграммах языка.

    Язык UML  имеет  сложную  иерархическую структуру,  показанную на Рис.3.2.

                                  РИС.3.2

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

    Язык UML имеет четыре вида сущностей: структурные, поведенческие, группирующие и аннотационные сущности.  Они показаны на втором  уровне структурного дерева языка UML, представленного на Рис.3.2.

    Далее на третьем уровне дерева показано, что понятие "структурные сущности"   является   именем  семи  видов  пиктограмм  (выразительных рисунков),  которые называются классами,  интерфейсами,  кооперациями,

прецедентами, активными классами, компонентами и узлами.

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

     На Рис.3.3  в качестве примеров показаны пять видов пиктограмм - классы , прецеденты , актеры, пакеты и примечания.

                              РИС.3.3

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

атрибуты (общие  свойства)  класса.  В  третьем   поле   располагаются типовые операции,  выполняемые   объектами,   принадлежащими   данному классу.  Таким образом класс - это совокупность (множество) объектов с общими атрибутами  и  операциями,  а  также  с  общими  отношениями  и семантикой.  Объектами,  объединенными в класс,  могут быть, например, люди,  окна системы Windows,  экранные кадры  и  другие  реальные  или абстрактные  объекты.  На  Рис.3,4 показаны пиктограммы,  изображающие класс "окно" и класс "экранный кадр".

                              РИС.3.4

    Левая пиктограмма на Рис.3.4 показывает класс c именем  "окно"  и основные  свойства  (характеристики)  присущие  объектам этого класса. Правая пиктограмма показывает класс "кадр  (frame)"  c  его  основными характеристиками   и   подробными   характеристиками,  детализирующими основные характеристики.  Детальная нотация  класса  дает  возможность программистам    и    аналитикам   визуализировать,   специфицировать, конструировать  и  документировать  класс  на  любом  желаемом  уровне детализации  свойств  класса,  достаточном  для  поддержки  прямого  и обратного проектирования моделей и кода (см. Рис. 2.2).

    Вернемся к Рис,3.3 и рассмотрим более детально, показанные на нем пиктограммы типа "прецеденты" и "актеры".  Следует сказать, что термин "прецедент"  это  не очень удачный перевод на русский язык английского выражения use case (Computer Aided  Software  Engineering).  Прецедент это   описание   множества   последовательных   событий,   выполняемых компьютерной  системой,  которые  приводят  к   наблюдаемому   актером результату.  Графически  прецедент  изображается  в виде ограниченного непрерывной линией эллипса, обычно содержащего только имя прецедента.

    Актер -   это   кто-то   (или  что-то)  внешний  по  отношению  к компьютерной системе,  кто взаимодействует  с  ней.  Графически  актер изображается  в виде пиктограммы,  представляющей человека,  поскольку актер   это   человек   или   группа   людей,   использующих   данные, предоставляемые компьютерной системой. Например, в системе регистрации учебных курсов,  которую мы рассмотрим в лекциях 4,5, актером являются студенты,     записывающиеся    на    курсы    преподавателей    через автоматизированную  систему  регистрации  курсов.  Для   базы   данных федерального   бюджета,   функционирующей  в  Минфине  Р.Ф.,  актерами являются чиновники,  получающие  информацию  на  рабочих  местах  базы данных Минфина.  На  UML  диаграммах  пиктограммы  прецедента и актера обычно располагаются рядом. В совокупности они могут описывать внешнюю границу компьютерной системы.

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

    Последняя пиктограмма,   показанная   на    Рис.3.2,   называется "примечание". Примечание изображается в виде прямоугольника с загнутым краем. На  UML  диаграмме  примечание  присоединяется  к  одному   или нескольким элементам   диаграммы.   Внутри   прямоугольника-примечания помещаются комментарии или ограничения,  относящиеся к  элементу  (или нескольким элементам) диаграммы.  Комментарий может быть текстовым или графическим.

    Рассмотрим теперь пиктограммы (рисунки) отношений, используемых в UML диаграммах.  Отношения составляют вторую ветвь структурного дерева языка  UML,  представленного  на  Рис.3.2.  Однонаправленные отношения представляются  на  UML  диаграммах  стрелками  различных   видов,   а двунаправленное отношение представляется линией (Рис. 3.5).

                         РИС.3.5

    Показанное на рисунке однонаправленное отношение "зависимость"  - это семантическое отношение между двумя сущностями,  такое при котором изменение  одной  (первичной)  сущности  вызывает изменение  семантики другой, зависимой сущности.

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

    Пометка единица (1) на левом конце линии  ассоциации  на  Рис.3.5 означает, что   в   двунаправленном   отношении,   наряду   с  многими работниками участвует один работодатель. Единица и звездочка на правом конце  линии  означает  "единица  или больше" (1..*).  Если один конец линии ассоциации помечен единицей (1),  то  пометка  на  другом  конце линий   называется  кратностью  ассоциации.  Кратность  правого  конца ассоциации, показанной на Рис.3.5, равна единице или больше.

    На линии ассоциации можно также задать кратность  равную  единице (1),  можно указать диапазон кратности: ноль или единица (0..1), много (0..*).  Разрешается также  указывать  кратность  определенным  числом (например  5).  С  помощью  списков  можно  задавать  и  более сложные кратности.  Например,  список 0..1,  3..4,  6..* означает "любое число объектов кроме 2 и 5".

    Частным случаем ассоциации является отношение типа "часть/целое". Отношение такого типа  называется  агрегированием.  В  языке  UML  оно причислено к  отношениям  вида  "имеет".  Агрегирование изображается в виде ассоциации с не закрашенным ромбом со стороны целого, как показано на Рис.3.6

                              РИС.3.6

    Обобщение (см.  Рис.3.5)  -   это   однонаправленное   отношение, называемое "потомок/прародитель",  в  котором  объект  "потомок" может быть подставлен вместо  объекта  прародителя  (родителя  или  предка). Потомок наследует  структуру  и  поведение  своего  родителя.  Стрелка всегда указывает на родителя.

    Наконец, реализация   -   это   семантическое    однонаправленное отношение,    которое    может   устанавливаться,   во-первых,   между интерфейсами и реализующими их классами или  компонентами,  во-вторых, между   прецедентами   и  реализующими  их  кооперациями.  Интерфейсы, компоненты и кооперации это еще три  вида  пиктограмм,  относящихся  к структурным   сущностям   (см.   Рис.3.2).   Пиктограммы   интерфейса, кооперации и компонента показаны на Рис.3.7.

                                РИС.3.7

    Интерфейс -  это  совокупность операций,  предоставляемых классом или компонентом.  Следовательно интерфейс описывает  поведение  класса или компонента, видимое  извне.  Интерфейс  определяет только описание (спецификации) операций  класса  или  компонента,  но  он  никогда  не определяет физические   реализации   операций.   Графически  интерфейс изображается небольшим кружочком под  которым  пишется  его  имя,  как показано на Рис.3.7.

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

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

    Рисунки других  видов  пиктограмм  языка  UML,  с  пояснением  их смысла,  вы  найдете  в  книге Г.  Буча.  Пиктограммы - это логические кирпичики из которых составляются UML диаграммы.

                     3.3 UML диаграммы

    С помощью комбинации пиктограмм строятся  UML  диаграммы.  Девять основных  видов  диаграмм  перечисленных  в третьей ветви структурного дерева языка UML (см.  Рис.3.2).  Мы не будем изучать все девять видов UML диаграмм,  а рассмотрим только три из них - диаграммы прецедентов, диаграммы классов и диаграммы действий.

    Диаграмма прецедентов   (use  case  diagram)  -  это  графическое представление всех или части  актеров,  прецедентов  и  взаимодействий между   ними.   В   каждой   системе  обычно  есть  главная  диаграмма

прецедентов,  которая описывает внешнюю  границу  системы  и  основные внешние   функции  (внешнее  поведение)  системы.  Основная  диаграмма прецедентов  Автоматизированной  системы  регистрации  учебных  курсов будет  построена  в  Лекции  5.  А пока,  в качестве примера диаграммы прецедентов мы рассмотрим диаграмму,  изображающую все прецеденты  для одного  актера,  которым  является  регистратор  учебных  курсов.  Эта диаграмма показана на Рис.3.8

                                РИС.3.8

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

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

                             РИС.3.9

    UML диаграммы   классов   включают  в  себя  как  частный  случай диаграммы  "сущность-связь"  (Entity-relationship  diagrams),  которые используются     для     логического    проектирования    реляционных, объектно-ориентированных и гибридных объектно-реляционных баз данных.

    В заключение    рассмотрим    диаграммы   действий.   Но   прежде познакомимся с пиктограммами "действие",  "переход",  "выбор" и "линии синхронизации",  используемыми в диаграммах действия.  Эти пиктограммы представлены на Рис.3.10.

                                РИС.3.10

    В языке  UML  действие  изображается  в  виде  прямоугольника   с закругленными углами, переходы - в виде направленных стрелок, элементы выбора - в виде ромбов,  линии синхронизации - в виде горизонтальных и вертикальных линий (Рис.3.10).

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

                                РИС.3.11

                 3.4. Программы поддержки языка UML

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


агрегирование

Агрегирование

Отдел

Компания

1

*

часть

целое

Компоненты

Кооперации

Интерфейсы

Регистратор курсов

*

обучается в

Преподаватель

name: Name

Курс

name: Name

courseID:Number

Студент

name: Name

studentID:Number

Факультет

name: Name

addInstructor()

removeInstructor()

getInstructor()

getAllInstuctor()

Вуз

name: Name

address: String

phone: Number

addStudent()

removeStudent()

getStudent()

addDepartament()

removeDepartament()

getDepartament()

getAllDepart()

посещает

читает

*

*

1..*

1..*

1..*

1..*

работает

1..*

состоит из

1..*

1

Линии синхронизации

Выбор

Переход

Действие

Выбор курса для преподавателя

Создание учебного плана

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

(Нет)

Все ли преподаватели назначены?

(Да)

Создание каталога

Отправка каталога студентам

Помещение каталога

в хранилище

Открытие регистрации

а)

Исполнимый код

Исходный код программы

Объект автоматизации

Воображаемая модель компьютерной программы

Теория множеств, теория графов

UML диаграммы и спецификации

б)

Исполнимый код

Исходный

код    программы

Объект автоматизации

Воображаемая модель компьютерной программы

Прямое преобразование

Обратное преобразование

Группирующие сущности:

1.Пакет

оведенческие сущности:

1.Взаимодействия

2.Автоматы

Структурные сущности:

1.Классы

2.Интерфейсы

3.Кооперации

4.Прецеденты

5.Активные классы

6.Компоненты

7.Узлы

Диаграммы:

1.Классов

2.Объектов

3.Прецедентов

4.Последовательностей

5.Коопераций

6.Состояний

7.Действий

8.Компонентов

9.Развертывания

Отношения:

1.Зависимостей

2.Ассоиаций

3.Обобщений

4.Реализаций

Сущности:

1.Структурные

2.Поведенческие

3.Группирующие

4.Аннотационные

Язык UML

Аннотационные сущности:

1.Примечания


 

А также другие работы, которые могут Вас заинтересовать

15195. Мағжан - ақынның ақыны 59 KB
  МАҒЖАН: БҰЙЫРСА ШЫРАҚ СӨНБЕС ҰЗАҚ ЖАНАР Жарасбай СҮЛЕЙМЕНОВ ҚР Парламенті Мәжілісінің депутаты. Мағжан Жұмабаев поэзия әлеміндегі жарық жұлдыз қайталанбас құбылыс. Оның қуатты бойға жігер жүрекке от беретін рухты үні ізденістері мен жаңашылдығы қа
15196. Майлықожа Сұлтанқожаұлы 27 KB
  Майлықожа Сұлтанқожаұлы 18351898 Майлықожа Сұлтанқожаұлы қазіргі Оңтүстік Қазақстан облысы Қызылқұм жерінде туып өскен.Әкесі Сұлтанқожа мұсылманша сауаттышағын дәулеттікөзі ашықдіндар адам болған. М...
15197. Марат Отаралиев 47 KB
  Марат Отарәлиев: Тағдырмын ерте жоғалған... Ақын Марат Отарәлиев. Жайсаң еді ғой. Онымен шүйіркелесіп сөйлесу әңгімедүкен құру өзінше бір ғанибет. Осы бір асықтай ғана қатпа қара жігіттің тал бойында қандай тартылыс күші барын қайдам Әйтеуір адам баласына тым үй...
15198. Махамбет Өтемісұлы 45 KB
  Махамбет Өтемісұлы 1803 1846 Махамбет Өтемісұлы – 1803 жылы Ішкі Бөкей ордасы қазіргі Батыс Қазақстан облысы Жәнібек ауд. Нарын құмының Жанқұс жерінде туған. – 20.10.1846 Қараой өңірі қазіргі Атырау облысы Махамбет ауданында жерденген қазақтың көрнекті ақыны сонымен бірг...
15199. Медетбай Тәжіұлы 22 KB
  Медетбай Тәжіұлы 1850-1928 Табынай Медетбай ақын туралы алғашқы дерек Қазақ қолжазбаларының ғылыми сипаттамасы деген бес томдық энциклопедиялық жинақтың төртінші томында жазылған.Онда Ме...
15200. Мәшһүр Жүсіп 78 KB
  Мәшһүр Жүсіп Атақты ақын ғұлама оқымысты Мәшһүр Жүсіптің көп қырлы талант екені елге мәлім. Қаршадайынан оқыған оқып қана қоймай көңіліне мол дүние тоқыған білімдар. Ақынның 1907 жылы үш бірдей кітабы – €œКөп жасағаннан көрген бір тамашамыз€ €œХалахуал€ €œСары...
15201. Міржақып Дулатов 82 KB
  Міржақып Дулатов Халық жүрегіне ерекше қымбат тұлғалардың бірі – Міржақып Дулатұлы. Жақаңның бар ғұмыры халқымен тығыз байланысты. Осы арада бір ғана жәйтке тоқталсақ қазақтың азаттық қозғалысының алғашқы сәулесіндей жылт еткен €œСерке€ газетіндегі €œЖастарғ
15202. Молда Мұқан Балтекейұлы 50.5 KB
  СЫР БОЙЫНЫҢ АҚЫНЫ Ш. У. Қасымова № 45 Ақ Орда мектепгимназия Шиелі ауданы Қызылорда облысы Сырдың елі – жырдың елі. Сыр өңірі қашаннан –ақ ақын жыраулар мен шайырлардан данышпан бишешендерден қалған асыл мұраларды көздің қарашығындай сақтап оны ұрпақтанұ...
15203. Мұрат Мөңкеұлы 46 KB
  Бүкіл ұлттың Мұраты Кеңес кезінде €œзар заман€ ақындарының ішінде жеткіліксіз зерттеген ақындардың бірі – Мұрат Мөңкеұлы. 194050 жылдар арасында жарық көрген мектеп оқулықтарында енгізіліп жүрген Мұрат ақын 1947 жылғы атышулы қаулыдан кейін зерттеу объектісінен мүлде ...