
- •Технологія програмування та створення програмних продуктів
- •(частина 2)
- •Візуальне моделювання на основі UML
- •MSF – Модель проектної групи (v. 3.1)
- •Анотація
- •1. Основи моделі проектної групи MSF
- •Основні принципи
- •Розподіл відповідальності при фіксації звітності
- •Наділення членів команди повноваженнями
- •Концентрація на бізнес-пріоритетах
- •Єдине бачення проекту
- •Прояв гнучкості і готовність до змін
- •Заохочення вільного спілкування
- •2. Ключові концепції
- •Команда соратників
- •Фокусування на потребах замовника
- •Націленість на кінцевий результат
- •Установка на відсутність дефектів
- •Прагнення до самовдосконалення
- •Зацікавлені команди працюють ефективно
- •3. Випробувані методики
- •Малі багатопрофільні проектні групи
- •Колективна робота
- •Загальна участь в проектуванні
- •4. Огляд моделі команди MSF
- •Задоволені замовники
- •Досягнення результату в рамках проектних обмежень
- •Створення продукту відповідно до специфікації
- •Схвалення випуску продукту лише після того, як всі дефекти виявлені і відлагоджені
- •Підвищення споживчої цінності продукту
- •Безпроблемне впровадження і супровід продукту
- •Ролеві кластери моделі проектної групи
- •I. Ролевий кластер "Управління продуктом"
- •Області компетенції
- •1. Планування продукту
- •2. Бізнес-віддача
- •3. Представлення інтересів замовника
- •4. Маркетинг
- •II. Ролевий кластер "Управління програмою"
- •Області компетенції
- •1. Управління проектом
- •2. Вироблення архітектури рішення
- •3. Контроль виробничого процесу
- •4. Адміністративні служби
- •III. Ролевий кластер "Розробка"
- •Області компетенції
- •1. Технологічне консультування
- •2. Проектування і здійснення реалізації
- •3. Розробка програмних рішень
- •4. Розробка інфраструктури
- •IV. Ролевий кластер "Тестування"
- •Області компетенцій
- •1. Планування тестів
- •2. Розробка тестів
- •3. Звітність про тести
- •V. Ролевий кластер "Задоволення споживача"_
- •Області компетенцій
- •1. Загальнодоступність
- •2. Інтернаціоналізація
- •3. Забезпечення технічної підтримки
- •4. Навчання користувачів
- •5. Зручність експлуатації (ергономіка)
- •6. Графічний дизайн
- •VI. Ролевий кластер "Управління випуском"
- •Області компетенції
- •1. Управління випуском
- •2. Інфраструктура
- •3. Супровід
- •4. Бізнес-процеси
- •Масштабування моделі проектної групи
- •Групи напрямів
- •Функціональні групи
- •Об'єднання ролей
- •Ескалація і підзвітність
- •Модель проектної групи немає організаційної структури
- •Зовнішня координація – на кому лежить відповідальність?
- •Висновок
- •MSF: Модель процесів
- •Анотація
- •Короткий огляд методології
- •Введення
- •Інші моделі процесів
- •Краще з двох світів
- •Базові принципи MSF
- •Єдине бачення проекту
- •Проявляйте гнучкість – будьте готові до змін
- •Концентруйтеся на бізнес - пріоритетах
- •Заохочуйте вільне спілкування
- •Ключові концепції моделі процесів MSF
- •Замовники
- •Зацікавлені сторони (учасники)
- •Що є рішення?
- •Створення базових версій
- •Рамки проекту
- •Управління компромісами
- •Трикутник компромісів
- •Матриця компромісів проекту
- •Характеристики моделі процесів MSF
- •Підхід, заснований на віхах
- •Характеристики підходу, заснованого на віхах
- •Головні і проміжні віхи
- •Віхи як точки синхронізації
- •Віхи як орієнтири виробничої відповідальності
- •Провідні ролі різних фаз
- •Аналіз пройдених віх
- •Ітеративний підхід
- •Характеристики ітеративного підходу
- •Випуск версій
- •Створення "живої" документації
- •Ранні базові версії, відкладені підсумкові версії
- •Щоденні білди
- •Управління конфігураціями проекту
- •Рекомендації для випуску версій рішення
- •Створюючи плани, передбачайте версіонування
- •Перш за все, поставляйте базову функціональність
- •Вибирайте пріоритети, враховуючи ризики
- •Здійснюйте часті ітерації розробки
- •Інституціюйте процедури контролю змін в проекті
- •Цілісний погляд на розробку і впровадження
- •Переваги інтегрованої моделі процесів
- •Зосередження на потребах підприємства
- •Покращена підтримка розробки веб-приложений
- •Покращена підтримка веб-сервісів
- •Поліпшення взаємодії з командою супроводу
- •Зауваження про використання інтегрованої моделі процесів
- •Тривалість фаз не однакова
- •Діяльність може виходити за межі однієї фази
- •Проекти, обмежені розробкою застосування або впровадженням інфраструктури
- •Фази і віхи моделі процесів MSF
- •Фаза вироблення концепції
- •Введення
- •Віха "Концепція затверджена"
- •Результати
- •Основні завдання проектної групи на фазі вироблення концепції
- •Проміжні віхи, що рекомендуються
- •Ядро проектної групи сформоване
- •Чорновий варіант концепції проекту складений
- •Фаза планування
- •Введення
- •Віха "Плани проекту затверджені"
- •Результати
- •Основні завдання проектної групи на фазі планування
- •Проміжні віхи, що рекомендуються
- •Верифікація технологій
- •Базова версія функціональної специфікації створена
- •Базова версія звідного плану проекту створена
- •Базова версія звідного календарного графіка проекту створена
- •Середовища розробки і тестування розгорнені
- •Фаза розробки
- •Введення
- •Віха "Розробка завершена"
- •Результати
- •Основні завдання проектної групи на фазі розробки
- •Проміжні віхи, що рекомендуються
- •Концепція підтверджена
- •Білд n завершений, білд n+1 завершений...
- •Фаза стабілізації
- •Введення
- •Віха "Готовність рішення затверджена"
- •Результати
- •Основні завдання проектної групи на фазі стабілізації
- •Проміжні віхи, що рекомендуються
- •Точка конвергенції
- •Точка досягнення нуля
- •Версії-кандидати
- •Контрольне тестування завершене
- •Тестування прийнятності для споживачів завершене
- •Пілотне впровадження завершене
- •Фаза впровадження
- •Введення
- •Віха "Впровадження завершене"
- •Результати
- •Основні завдання проектної групи на фазі впровадження
- •Проміжні віхи, що рекомендуються
- •Ключові компоненти розгорнені
- •Впровадження на місцях завершене
- •Упроваджене рішення стабілізоване
- •Методики моделі процесів MSF, що рекомендуються
- •Стимулювання винахідливості для розширення функціональності й обмеження ресурсів
- •Фіксування календарного графіка
- •Календарне планування на невизначене майбутнє
- •Використання паралельно працюючих компактних команд
- •Розбиття великих проектів на реальні частини
- •Отримання уроків з пройдених віх
- •Використання прототипіювання
- •Використання частих білдів і швидких тестів
- •Часті ітерації розробки і впровадження
- •Уникання розповзання рамок проекту
- •Оцінка з низу до верху
- •Інтеграція представлених проектною групою оцінок
- •Застосування A
- •Зміни в порівнянні з попередньою версією MSF
- •Висновок
- •Література
- •Анотація
- •Введення
- •Основні відомості про ризики
- •Базові принципи:
- •1. Гнучкість і постійна готовність до змін
- •2. Вільне спілкування
- •3. Отримання зі всього уроків
- •4. Розподіл відповідальності при фіксації звітності
- •Ключові концепції:
- •Найбільш ефективним є превентивне управління ризиками
- •2. Заохочення до виявлення ризиків
- •3. Постійна оцінка ризиків
- •4. Підтримка відкритого спілкування
- •5. Постійний аналіз ризиків
- •6. Кількість ризиків не характеризує реальне положення речей
- •Планування управління ризиками
- •Процес управління ризиками
- •Загальне уявлення
- •Етап 1. Виявлення ризиків
- •Введення
- •Початкові дані
- •Кроки по виявленню ризиків
- •Структурований підхід
- •Класифікація ризиків
- •Формулювання ризиків
- •Результати
- •Етап 1. Аналіз і пріоритезація ризиків
- •Введення
- •Мета
- •Початкові дані
- •Процес аналізу ризиків
- •Вірогідність ризику
- •Загроза ризику
- •Очікувана величина ризику
- •Додаткові кількісні методики
- •Результати
- •Головна таблиця ризиків
- •Інші методи проведення аналізу
- •Документ опису ризиків
- •Список головних ризиків
- •Деактивація ризиків
- •Планування ризиків_
- •Введення
- •Початкові дані
- •Заходи
- •Дослідження
- •Ухвалення
- •Уникнення
- •Перенесення
- •Запобігання
- •Пом'якшення наслідків (реагування)
- •Календарне планування
- •Результати
- •Діяльність по управлінню ризиками
- •Документування планів
- •Оновлення плану і календарного графіка проекту
- •Моніторинг ризиків_
- •Початкові дані
- •Заходи щодо моніторингу
- •Звітність про стан ризиків
- •Результати
- •Коректування ситуації_
- •Мета
- •Початкові дані
- •Дії з коректування ситуації
- •Результати
- •Витягання уроків з ризиків
- •Введення
- •Типи отримуваних уроків
- •Управління витяганням уроків
- •Контекстна класифікація ризиків
- •База знань про ризики
- •Досягнення зрілості в управлінні знаннями про ризики
- •Управління ризиками як складова частина життєвого циклу проекту_
- •Управління ризиками на підприємстві
- •Створення культури управління ризиками
- •Управління портфелем проектів_
- •Висновок
- •MSF: Дисципліна управління проектами
- •Анотація
- •Введення
- •Базові принципи MSF
- •Пр.1: Розподіл відповідальності при фіксації звітності
- •Пр.2: Наділення членів команди повноваженнями
- •Ключові концепції
- •1) Дисципліни MSF
- •2) Поняття управління проектом
- •3) Менеджмент проекту і менеджер проекту
- •4) Управління проектами і специфічні IT-процеси
- •Особливості управління проектами в MSF
- •Роль менеджера проекту покладається на кластер "Управління програмою"
- •Взаємодія "Управління програмою" з лідерами командних ролей
- •A. Функціональні групи
- •B. Групи напрямів
- •Масштабування функцій управління проектом
- •Обов'язки по управлінню проектами
- •Лідери груп
- •Кластер "Управління програмою"
- •Управління великими і складними проектами
- •Адміністративні служби проекту
- •Звітність перед замовником
- •Рекомендації проектним групам
- •Управління рамками проекту
- •Визначення рамок на етапі вироблення концепції
- •Рамки рішення і рамки проекту
- •Визначення рамок (scope definition)
- •Управління змінами рамок (scope change control)
- •Підготовка планів
- •Повторне використання документів
- •Плани проекту
- •Ієрархічна структура робіт
- •Відповідність між WBS, функц. специфікаціями і зведеним планом
- •Створення WBS
- •Рекомендації по декомпозиції роботи
- •Оцінка знизу вгору
- •Інтеграція представлених проектною групою оцінок
- •Формування реалістичних очікувань
- •Невизначеність і точність оцінок
- •Оцінюйте завдання нижнього рівня декомпозиції
- •Аналіз PERT
- •Рекомендації по складанню календарного графіка
- •1) Впорядкування завдань
- •2) Обмеження часу
- •3) Вибір пріоритетів, з врахуванням ризиків
- •Створення часових буферів
- •Висновок
- •MSF: Дисципліна "Управління підготовкою"
- •Анотація
- •Вступ
- •Базові принципи
- •Пр.1: Заохочення вільного спілкування
- •Пр.2: Інвестування в якість
- •Пр.2: Отримання уроків
- •Пр.3: Гнучкість та готовність до змін
- •Ключові концепції
- •1) Інвентаризація наявних знань
- •2) Прагнення до самовдосконалення
- •3) Підготовка повинна бути перманентним процесом
- •Випробувані методики
- •1) Планування підготовки
- •Оцінка і моніторинг професійного рівня і індивідуальних цілей
- •Відноситеся до пропусків в підготовці як до ризиків
- •Огляд процесу Управління підготовкою
- •1) Визначення:
- •2) Оцінювання:
- •3) Коригування:
- •4) Осмислення:
- •Превентивне Управління підготовкою
- •Підготовка впродовж життєвого циклу ІТ
- •Кроки процесу Управління підготовкою
- •Крок 1: Визначення
- •Скл. 1: Проектні сценарії
- •Скл. 2: Кваліфікаційні вимоги
- •Скл. 3: Професійні навики
- •Крок 2: Оцінювання
- •Оцінка знань, умінь, здібностей
- •Специфікація процесу оцінювання
- •Збір і обробка даних
- •Обробка результатів оцінювання
- •Аналіз невідповідностей
- •Створення планів навчання
- •Крок 3: Коригування
- •Навчання
- •Моніторинг прогресу
- •Крок 4: Осмислення
- •Аналіз результатів
- •Управління знаннями
- •Вимоги до професійних навиків проектних ролей
- •Створення планів підготовки
- •Висновок
ТЕХНОЛОГІЯ ПРОГРАМУВАННЯ ТА СТВОРЕННЯ ПРОГРАМНИХ ПРОДУКТІВ
(ЧАСТИНА 2)
Мета курсу.
Вивчення основних шляхів організації і виконання проектів в області розробки програмного забезпечення на базі принципів Microsoft Solutions Framework (MSF) v.3.0.
Основні матеріали для постановки курсу:
1.Microsoft Solutions Framework: http://www.microsoft.com/msf
2.Microsoft Operations Framework: http://www.microsoft.com/mof
Зміст курсу.
Лекція № 8. Візуальне моделювання на основі UML. Лекція № 9. Основи MSF.
Лекція № 10. MSF Team Model. Лекція № 11. MSF Process Model.
Лекція № 12. MSF Project Management Discipline. Лекція № 13. MSF Risk Management Discipline. Лекція № 14. MSF Readiness Management Discipline.
Лекція № 15. MSF & MOF.
Навчально-методичні матеріали по курсу
5.1.Література
1.И. Соммервиль. Инженерия программного обеспечения, 6 изд. - И.д. "Вильямс", 2002.
2.Г. Буч, Дж. Рамбо, А. Джекобсон. UML: Руководство пользователя. ДМК-Пресс, Питер, 2004
5.2.Інформаційні ресурси мережі Інтернет
1.Ian Sommerville. Software Engineering. 7th Edition. [http://www.comp.lancs.ac.uk/computing/resources/IanS/SE7 ]
2.www.uml.org
3.www.wikipedia.org
4.http://www.microsoft.com/msf
Навчально-методичні матеріали по курсу
5.1.Література
1.И. Соммервиль. Инженерия программного обеспечения, 6 изд. - И.д. "Вильямс", 2002.
2.Г. Буч, Дж. Рамбо, А. Джекобсон. UML: Руководство пользователя. ДМК-Пресс, Питер, 2004
3.Г. Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на С++. Второе издание. - Бином, 1998.
4.N. Wirth. Program Development by Stepwise Refinement // Communications of the ACM vol.26(1).- 1971, 1983.
5.O. Dahl, E. Dijkstra, C.A.R. Hoare. Structured Programming.-London, England: Academic Press, 1972.
6.Р. Лингер, Х. Миллс, Б. Уитт. Теория и практика структурного программирования. - М.: Мир,
1982.
7.Э. Салливан. Время - деньги. - М.:Microsoft Press, Русская редакция, 2002.
8.Модель процессов MSF. Белая книга, 2003, перевод eLine Software.
9.Дисциплина управления рисками MSF. Белая книга, 2003, перевод eLine Software.
10.Модель проектной группы MSF. Белая книга, 2003, перевод eLine Software.
11.1846A: Microsoft Solutions Framework Essentials. Microsoft Official Course, 2002
1
12.2710B: Analyzing Requirements and Defining Microsoft .NET Solutions Architecture. Microsoft Official Course, 2003
13.MSF Process Model. White paper, 2002 Microsoft Corporation.
14.MSF Risk Management Discipline. White paper, 2002 Microsoft Corporation.
15.MSF Team Model. White paper, 2002 Microsoft Corporation.
5.2.Інформаційні ресурси мережі Інтернет
5.Ian Sommerville. Software Engineering. 7th Edition. [http://www.comp.lancs.ac.uk/computing/resources/IanS/SE7 ]
6.www.uml.org
7.www.wikipedia.org
8.http://www.microsoft.com/msf
9.С. Якимчук. MSF - философия создания IT-решений или голые амбиции лидера, 2004:
[http://www.citforum.ru/SE/project/msf/ ].
10.Алистер Кокбёрн. Каждому проекту своя методология:[http://software- testing.ru/lib/cockburn/methodology-per-project.htm ](перевод статьи Alistair Cockburn. Methodology per project: [http://alistair.cockburn.us/index.php/Methodology_per_project]).
11.А. Терехов, А. Ложечкин. Microsoft Solutions Framework 4.0 - опыт Microsoft по организации командной разработки. Презентация с Microsoft Платформа 2006
12.MSF for Agile Software Development Process Guidance:[http://go.microsoft.com/fwlink/?linkid=63524]
2

Візуальне моделювання на основі UML
Мета викладання
У цій лекції основна увага буде приділена розгляду мови об'єктного моделювання UML. Розкриті деякі сторони аналізу і проектування ПЗ. Розкритий об'єктно-орієнтований підхід при моделюванні за допомогою UML
Аналіз і проектування. Деякі окремі питання
Раніше, в попередніх лекціях неодноразово розглядалася типова схема вирішення завдань по розробці програмного забезпечення (ПЗ). При цьому особлива увага приділялася тому, що безпосереднє програмування або написання коду починається далеко не відразу. Більш того, етапи попередньої розробки не менш важливі і складні, ніж, так звана, основна робота. Зразкова схема, що відображає процес від постановки завдання до випуску готового продукту може виглядати так:
Рис. 8.1.
Або в укрупненому вигляді:
Рис. 8.2.
Пригадаємо суть об'єктного підходу.
Огляд принципів об'єктного підходу
Алгоритмічна і об'єктна декомпозиції. Класи і об'єкти
Принципово можна виділити 2 види розбиття предметної області на елементи, що становлять:
•Алгоритмічна декомпозиція (основні елементи програми - будівельні блоки - алгоритми).
•Об'єктна декомпозиція (основні елементи програми - види абстракцій (класи) і представники цих класів (об'єкти)).
Відповідно до алгоритмічної декомпозиції предметної області при аналізі завдання ми
намагаємося зрозуміти, які алгоритми необхідно розробити для її вирішення, які специфікації цих алгоритмів (вхід, вихід), і як ці алгоритми зв'язані один з одним. У мовах
3
програмування даний підхід повною мірою підтримується засобами модульного програмування (бібліотеки, модулі, підпрограми).
В рамках об'єктної декомпозиції ми намагаємося виділити основні змістовні елементи завдання, розбити їх на типи (класи). Далі для кожного класу абстракцій ми визначаємо його властивості (дані) і поведінку (операції), а також, як ці класи абстракцій взаємодіють один з одним.
На сьогоднішній день об'єктний підхід і його основи - об'єктна модель і об'єктна декомпозиція - підтримуються усіма сучасними об'єктно-орієнтованими мовами програмування (Object Pascal, C++, Java, C#.).
Складові частини об'єктного підходу
Розглянемо стисло складові частини об'єктного підходу, грамотне виконання яких, як правило, приводить до створення якісного програмного продукту.
Об'єктний підхід:
•OOA (object oriented analysis) - об'єктно-орієнтований аналіз.
•OOD (object oriented design) - об'єктно-орієнтоване проектування.
•OOP (object oriented programming) - об'єктно-орієнтоване програмування.
Що означають ці ключові поняття [1]:
Об'єктно-орієнтований аналіз - це методологія, при якій вимоги до системи
сприймаються з погляду класів і об'єктів, виявлених в предметній області. Об'єктно-орієнтоване проектування - це методологія проектування, що сполучає в
собі процес об'єктної декомпозиції і прийоми уявлення логічною і фізичною, а також статичної і динамічної моделей проектованої системи.
Об'єктно-орієнтоване програмування - це методологія програмування, заснована на представленні програми у вигляді сукупності об'єктів, кожен з яких є екземпляром певного класу, а класи утворюють ієрархію спадкоємства.
У російськомовній і україномовній літературі, як правило, під абревіатурою ООП розглядають всі 3 складових об'єктного підходу. Далі і ми слідуватимемо цьому принципу.
Курси з циклу "Методи програмування" і, конкретніше, "Об'єктно-орієнтоване програмування" переважно концентруються на OOP. Даний курс, принаймні, його теоретична частина основна увага приділяє OOA і OOD.
Принципи об'єктного підходу
Розглянемо найбільш важливі принципи об'єктного підходу.
Абстрагування застосовується при вирішенні багатьох завдань. Будь-яка побудована нами модель дозволяє абстрагуватися від реального об'єкту, підміняючи його вивчення дослідженням формальної моделі. Абстрагування в ООП дозволяє виділити основні елементи наочної області, що володіють однаковою структурою і поведінкою. Таке розбиття на класи дозволяє істотно полегшити аналіз і проектування системи.
Інкапсуляція - найважливіший елемент об'єктного підходу. Суть його полягає в приховуванні деталей внутрішньої реалізації. Інкапсуляція робить позитивний вплив на захист даних і істотно підвищує шанси безболісної заміни однієї з частин системи її новою версією за умови збереження інтерфейсу.
Ієрархія допомагає розбити завдання на рівні і поступово її вирішувати, поступово збільшуючи деталізацію розгляду. Ієрархія упорядковує абстракції. На щастя, різні ієрархії можна виявити практично в будь-якій системі. Агрегація і спадковість - приклади таких ієрархій. Вони підкреслюють той факт, що нові абстракції можуть бути створені на основі тих, що вже існують.
Поліморфізм дозволяє мати природні імена і виконувати дії, релевантні ситуації, розбираючись на етапі роботи програми, яким з методів необхідно викликати. Поліморфізм нерозривно пов'язаний із спадкоємством і пізнім скріпленням.
4

Приклад: ООП і структури зберігання. Стек
Постановка завдання: Необхідно розробити структуру зберігання Стек. Примітки:
•Не враховувати необхідність перерозподілу пам'яті.
•Вважати, що елементи цілого типу. Аналіз і проектування.
Дані:
•MemSize - максимальна кількість елементів.
•DataCount - кількість елементів в стеку.
•pMem - покажчик на пам'ять для зберігання значень. Операції:
•IsFull - перевірка на повноту.
•IsEmpty - перевірка на порожнечу.
•Get - узяти елемент з вершини.
•Put - покласти елемент в стек.
Розглянемо модель і фінальний результат нашого проектування (використовується нотація UML):
Рис.8.3. Рис. 3.4.
Повторне використання
Ідея повторного використання.
Повторне використання - застосування вже існуючих напрацювань в тому, що розробляється ПЗ.
Повторне використання - важливий елемент проектування. Необхідно проектувати нові елементи системи з тим, щоб їх надалі можна було застосовувати при розробці інших систем. Крім того, при проектуванні системи необхідно розглядати можливість використання того, що вже є і працює.
Девіз: не треба винаходити велосипед, якщо він вже винайдений.
Достоїнства повторного використання.
Достоїнства повторного використання (по Соммервілю [1]):
5
•Підвищення надійності.
•Зменшення проектних рисок.
•Ефективне використання фахівців.
•Дотримання стандартів (приклад: призначений для користувача інтерфейс).
•Прискорення розробки.
Повторне використання досягається за рахунок наступних прийомів (видів
використання):
•Компонентна розробка. Частина компонентів вже розроблені раніше, мають чітко описаний інтерфейс. Вони використовуються як "цегла" в новій системі.
•Використання патернів (шаблонів) проектування. Застосовуються відомі підходи до вирішення деяких проблем, що зустрічалися раніше.
•Використання стандартних прикладних (MKL, MFC) і системних (API) бібліотек.
Візуальне моделювання. Історія мови UML
При вивченні матеріалів по візуальному моделюванню і мові UML як основне джерело рекомендується класична книга [2]. Додатково рекомендується наступна книга: G.
Booch, J. Rumbaugh, I. Jacobson. The Unified Modeling Language Reference Manual - Second Edition, Addison-Wesley, 2004. Велика кількість матеріалів може бути знайдене на сайті www.uml.org.
Ідея візуального моделювання
Пригадаємо, в чому полягає основна проблема в розробці ПЗ – софтверні проекти не укладаються в терміни, бюджет, не задовольняють вимогам.
Як вирішувати цю проблему? На допомогу приходить моделювання. Під моделлю зазвичай розуміють спрощене представлення об'єктів і явищ реального миру.
Відповімо на питання, навіщо будують моделі: Моделі будують для того, щоб краще зрозуміти досліджувану систему.
Завдання моделювання [2]:
•Візуалізація системи в її деякому стані.
•Визначення структури і поведінки системи.
•Отримання шаблону для створення системи.
•Документування ухвалених рішень. Принципи моделювання [2]:
•Вибір моделі надає визначальний вплив на підхід до рішення проблеми і на те, як виглядатиме це рішення.
•Кожна модель може бути втілена з різним ступенем абстракції.
•Кращі моделі - ті, що ближче до реальності.
•Якнайкращий підхід при розробці складної системи - використовувати декілька майже незалежних моделей.
Як вже згадувалося раніше, одним з найбільш популярних підходів до моделювання є об'єктний підхід. Відповідно до цього підходу в результаті OOA і OOD ми отримуємо "хороший" проект програмної системи, що прозорий, такий, що задовольняє вимогам, зручний для тестування і відладки, колективної розробки, такий, що розвивається, допускає повторне використання компонентів.
На жаль, навіть використання таких могутніх засобів, як об'єктний підхід, не гарантує нам успіх. На жаль, у великих проектах складність модельованого об'єкту (і, відповідно, складність проекту) така, що проект дуже великий для адекватного сприйняття однією людиною, принаймні, в думці.
Це і означає необхідність візуального моделювання. Ідея візуального моделювання полягає в графічному відображенні обговорюваних проектних рішень, що приймаються. При цьому досягаються наступні цілі:
•Візуалізація спрощує розуміння проекту в цілому.
6
•Візуалізація допомагає погоджувати термінологію і переконатися, що всі однаково розуміють терміни.
•Візуалізація робить обговорення конструктивним і зрозумілим.
Для візуального моделювання потрібна спеціальна нотація або мова.
UML (unified modeling language) - це мова для візуалізації, специфікації, конструювання, документування елементів програмних систем. UML - мова загального призначення, призначена для об'єктного моделювання.
Історія мови UML
До 1994 року існувало декілька нотацій для візуального відображення ухвалюваних проектних рішень і декілька методів аналізу і проектування. У 1994 році відбулася знакова подія - Grady Booch і James Rumbaugh, співробітники фірми Rational Software, об'єднали свої методи проектування і аналізу, створивши так званий Unified method. З цієї миті процес стандартизації домовленостей увійшов до робочого ритму. Приведемо важливі віхи цього шляху:
•1994: Grady Booch & James Rumbaugh (Rational Software) об'єднали методи Booch
(проектування) і OMT (аналіз) ->Unified method.
•1995: приєднався Ivar Jacobson (автор методу OOSE). Згодом група авторів Booch, Rumbaugh і Jacobson разом випустила не одну книгу, що стала бестселером (наприклад, див. список літератури). Цю трійцю жартівливо називали "Three amigos", натякаючи на те, як жарко вони сперечалися з приводу ухвалюваних рішень.
•1996 - Ідея про Unified Modeling Language (three amigos).
•1996 - створений консорціум UML Partners під керівництвом three amigos.
•Червень, Жовтень 1996 - UML 0.9 & UML 0.91.
•Січень 1997 - специфікації UML 1.0 запропоновані OMG (Object Management Group).
•Серпень 1997 - специфікації UML 1.1 запропоновані OMG.
•Листопад 1997 - UML 1.2 - результат адаптації OMG.
•Червень 1999 - UML 1.3.
•Вересень 2001 - UML 1.4.
•Березень 2003 - UML 1.5. Прийнятий стандарт:
•ISO/IEC 19501:2005 Information technology - Open Distributed Processing - Unified Modeling Language (UML) Version 1.4.2.
•Жовтень 2004 - UML 2.0.
Структура мови UML
Моделі UML
UML дозволяє описувати систему наступними моделями:
•Модель функціонування (показує, як описується функціональність системи з погляду користувача).
•Об'єктна модель (показує, як виглядає проект системи з погляду об'єктного підходу).
•Динамічна модель (показує, як взаємодіють один з одним компоненти системи в динаміці, з часом). Демонструє, які процеси відбуваються в системі.
Діаграми UML
Діаграми UML призначені для візуального відображення моделей і їх компонентів. UML 2.0 містить 13 типів діаграм. Зокрема:
•Структурні діаграми (6).
•Діаграми поведінки (3).
•Діаграми взаємодії (4).
Розглянемо кожну з груп докладніше.
Структурні діаграми:
•Діаграма класів - показує класи, їх атрибути і зв'язки між класами.
7
•Діаграма компонентів - показує компоненти і зв'язки між ними.
•Структурна діаграма - показує внутрішню структуру класів і зв'язку із зовнішнім світом.
•Діаграма розгортання - показує, як ПЗ розміщується на апаратурі (серверах, робочих станціях...).
•Діаграма об'єктів - показує структуру системи в конкретний момент часу, об'єкти, їх атрибути...
•Діаграма пакетів - показує, як система розкладається на крупні складові частини і зв'язки між цими частинами
Діаграми поведінки:
•Діаграма дії - показує потоки інформації в системі.
•Діаграма стану - є кінцевий автомат, що показує функціонування системи.
•Діаграма варіантів використання - показує роботу системи з погляду користувачів.
Діаграми взаємодії
•Діаграма кооперації - показує структурну організацію об'єктів, що беруть участь у взаємодії.
•Діаграма взаємодії (новація UML 2.0).
•Діаграма послідовності - показує тимчасову впорядкованість подій.
•Тимчасова діаграма - діаграма пов'язана з тимчасовими рамками проекту.
Поняття UML
Для опису структури: Актор, Атрибут, Клас, Компонент, Інтерфейс, Об'єкт, Пакет. Для опису поведінки: Дія, Подія, Повідомлення, Метод, Операція, Стан, Варіант
використання.
Для опису зв'язків: Агрегація, Асоціація, Композиція, Залежність, Спадкоємство. Деякі інші поняття: Стереотип, Множинність, Роль.
Учбовий приклад. Постановка завдання
Система бронювання квитків для авіакомпанії Короткий опис
На ринок вийшла нова авіакомпанія "GlobalAvia". Менеджери компанії вирішили замовити у вашої фірми розробку системи бронювання квитків. При замовленні фірма поставила ряд умов, які обов'язково повинні бути виконані. У першій версії системи вони хочуть бачити дві частини. Робота першої частини системи пов'язана із занесенням інформації. Друга частина системи призначена для спілкування з клієнтами.
При формулюванні вимог менеджери згадали, що рейси сплановані так, що до пункту призначення можна долетіти з пересадками. Одна з вимог полягала в тому, щоб система допомагала купувати квитки залежно від побажань користувача.
Аналіз постановки - повний опис
•Завдання є математичним. Система повинна уміти вирішувати однокритериальную задачу пошуку найкоротших шляхів на графах. Критерій - ціна.
•Система розподілена: оскільки в кожному аеропорту своя база напрямів польотів літаків, то знають про рейс тільки аеропорти-сусіди по рейсах.
Об'єкти системи: розподілене сховище рейсів, покупець квитків, менеджер рейсів.
•Розподілене сховище рейсів: назва рейсів, номери і вартість квитків.
•Покупець: ФІО, сума. Покупець задає параметри, пов'язані з сумою, яку він хоче витратити. Система повинна підібрати оптимальний маршрут. За відсутності прямих маршрутів система повинна спробувати знайти маршрути з пересадками. Якщо таких не знаходиться, система повинна сказати, що з такими обмеженнями не можна дістатися до місця призначення.
Серед причин:
•Відсутність рейсів в бажаному напрямі навіть з урахуванням пересадок.
8

•Брак грошей.
Увідповідь, користувач повинен мати можливість поміняти параметри з урахуванням передісторії.
Менеджер рейсів: повинен мати наступні можливості:
•створення і видалення аеропортів в системі.
•створення і видалення рейсів в аеропортах.
Візуальний опис функціональної моделі засобами UML
Актори і варіанти використання в UML
Програмна система не функціонує сама по собі. Програмна система функціонує під впливом акторів (Actor) - користувачів, машин і інших програм. При цьому актор чекає, що система поводиться строго певним чином. Актор надає дію - система видає очікуваний результат. У випадку, якщо очікуваного результату немає, вимоги користувача не задоволені зі всіма витікаючими звідси результатами. Таким чином, актор в UML - людина, машина або програма, впливає на систему, є зовнішнім по відношенню до неї. Модель того, як дія приводить до результату, називається Варіантом використання (Use case). Актори і варіанти використання мають спеціальні позначення в UML:
Рис. 3.5.
Актори і варіанти використання спілкуються за допомогою посилки повідомлень. Повідомлення можуть йти в обидві сторони. Стрілка показує ініціатора спілкування (актор на малюнку) і може бути опущена.
Рис. 3.6.
Виділимо акторів і варіанти використання в розглянутому раніше прикладі з системою бронювання квитків (SRS). Аналіз постановки завдання показує наявність у системи двох акторів: "Користувач" і "Адміністратор". Визначимося з варіантами використання. Необхідно відзначити, що вибір акторів і варіантів використання до деякої міри умовний і може відрізнятися у різних фахівців з аналізу і проектування. Ухвалені проектні рішення визначають подальший вибір архітектури системи і істотно впливають на успіх всього процесу розробки. При цьому "хороших" варіантів може бути декілька.
Перелік Варіантів використання для наший завдання може бути, наприклад, таким:
•Забронювати квиток.
•Підібрати рейс.
•Працювати з даними.
•Управляти рейсами.
•Працювати з БД аеропорту.
Для візуального представлення акторів, варіантів використання і відносин між ними в UML передбачена спеціальна діаграма - діаграма варіантів використання. Нижче приведена діаграма для даного прикладу:
9

Рис. 3.7.
Приведемо деякі додаткові міркування:
•При такому моделюванні звертають увагу на поведінку системи, а не на її реалізацію.
•Хороша модель описує основну поведінку системи, не будучи дуже докладною.
•Подібна модель дозволяє перевірити, чи задовольнить система вимоги замовника.
•Система середніх розмірів може бути описана великою кількістю варіантів використання.
•Варіанти використання можуть описуватися різними сценаріями.
На останньому пункті зупинимося докладніше. Очевидно, назва варіанту використання не дає повного уявлення про те, як він запроваджується в життя. Для опису сценарію роботи варіанту використання UML містить спеціальні засоби. Основне з них - діаграма дії.
Діаграма дії це блок-схема, яка відображає динаміку в поведінці системи. Відмітимо, що ця діаграма може використовуватися не тільки для опису сценаріїв Варіанту використання.
Приведемо приклад відповідної діаграми для варіанту використання Бронювання квитків в системі SRS.
Рис. 3.8.
10

Структура системи і її опис засобами UML
У даному розділі розглядаються елементи UML, призначені для опису структури проектованої програмної системи. Наш виклад влаштований таким чином: для стандартних понять, відомих з курсу ООП, ми приводимо тільки позначення. Для інших перш за все даємо визначення і коротку характеристику. Отже, приступимо.
Класи
Рис. 3.9.
Позначення модифікаторів доступу:
pu |
blic |
pr |
otected |
pr |
ivate |
Шаблони класів
Рис. 3.10.
Об'єкти
Рис. 3.11.
Інтерфейси
Визначимося з тим, що ми в даному випадку розуміємо під Інтерфейсом.
Інтерфейс визначає межу між специфікацією того, що робить абстракція, і реалізацією того, як вона це робить [3.3].
11

Інтерфейс - це набір операцій, використовуваних для специфікації послуг, що надаються класом або компонентом [3.3].
Сенс використання Інтерфейсу полягає у відділенні деталей реалізації від функціональності. Так, клас, підсистема, компонент зазвичай надають деяку функціональність, якою можуть користуватися інші класи, підсистеми, компоненти. Опис цій, доступною ззовні, функціональності міститься в Інтерфейсі.
У багатьох мовах програмування поняття Інтерфейс включено в об'єктну модель, що відповідно відбивається на синтаксисі (Object Pascal, Java і ін.). С++, на жаль, не містить поняття Інтерфейс, тому Інтерфейси моделюються за допомогою використання класів.
Рис. 3.12.
Пакети
Пакет - структурна одиниця для угрупування елементів моделі, зокрема, класів. Пакет - це спосіб організації елементів моделі в крупніші блоки, якими згодом дозволяється маніпулювати як єдиним цілим. Добре спроектований пакет групує семантично близькі елементи, які мають тенденцію змінюватися спільно [3.3].
Рис. 3.13.
Підсистеми
На етапі проектування системи класи і пакети можуть об'єднуватися в підсистеми. Підсистема - структурна одиниця. Кожна підсистема мають свою область відповідальності і реалізує деяку функціональність. Підсистема реалізує Інтерфейс, який описує її поведінку. У даному учбовому прикладі SRS прикладами підсистем є: підсистема бронювання квитків; підсистема доступу до даним...
Рис. 3.14.
12

Компоненти
Компонент - фізична замінювана частина системи, що сумісна з одним набором інтерфейсів і забезпечує реалізацію якого-небудь іншого [3.3]. Компонент може розроблятися і тестуватися незалежно від системи.
Види компонентів:
•Початкові файли (.cpp, .h, .java.).
•Бінарні файли (.dll, .ocx.).
•Виконувані файли (.exe).
По сенсу компонент є реалізацією підсистеми. На етапі проектування ми працюємо з підсистемами. На етапі реалізації - з компонентами.
Рис. 3.15.
Коментарі
UML передбачає можливість написання коментарів (заміток). Робиться це таким чином:
Рис. 3.16.
Відношення між елементами моделі
UML підтримує наступні види відносин між елементами моделі:
•Залежність.
•Асоціація.
•Узагальнення (спадкоємство).
•Реалізація (для Інтерфейсу).
Відносини показують наявність зв'язків між елементами моделі і семантику цих
зв'язків.
Розглянемо кожен з цих типів відносин.
Залежність
Залежність - зв'язок між суттю (класами, об'єктами). Залежність показує, що зміни в одній суті можуть вплинути на іншу суть. Залежність - не структурний зв'язок. Виникає через локальну, глобальну змінні або параметр методу.
Рис. 3.17.
Асоціація
Асоціація - зв'язок між суттю (класами, об'єктами). Асоціація показує наявність структурного зв'язку між екземплярами (об'єктами). Структурний зв'язок реалізується через поле класу. У позначеннях UML напрям може бути не вказане (двосторонній зв'язок).
13

Рис. 3.18.
Напрям і навігація
Відмітимо, що наявність напряму пов'язана з поняттям Навігація. Навігація означає, що у напрямі стрілки один об'єкт "бачить" інший, тоді як зворотне не виконується.
Рис. 3.19.
Кратність
Кратність - спосіб конкретизації характеру відношення. Показує тип відношення 1:1,
1:M, N:1, N:M.
Рис. 3.20.
|
Вид |
|
|
Значення |
|
|
|
|
|||
|
кратності |
|
|
|
|
|
|
|
|
|
|
|
* або |
|
?0 |
|
|
|
0..* |
|
|
|
|
|
|
|
|
|
|
1..* |
|
?1 |
|
||
|
|
|
|
|
|
|
|
|
|
зазвичай |
|
|
|
|
|
0 або 1 |
|
|
|
|
|
||
1 |
|
|
Рівно 1 |
||
|
|
|
|
||
3,5..6 |
|
{3,5,6} |
|
||
|
|
|
|
|
|
Окремі випадки асоціацій: агрегація і композиція
Агрегація припускає, що 0 або більш за об'єкти одного типу включені в 1 або більш за об'єкти іншого типу.
Композиція - варіант агрегації, в якому кожен об'єкт другого типу може бути включений рівно в 1 об'єкт першого типу.
14

Рис. 3.21.
Узагальнення (спадкоємство)
Рис. 3.22.
15