
- •Технологія програмування та створення програмних продуктів
- •(частина 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: Осмислення
- •Аналіз результатів
- •Управління знаннями
- •Вимоги до професійних навиків проектних ролей
- •Створення планів підготовки
- •Висновок
Хоча в принципі можливо відсунути час закінчення проекту на необмежено довгий термін, мінімізуючи тим самим всю наявну в нім невизначеність, таке рішення дорого стоїть і не відповідає реальним бізнес - потребам. Віхи дозволяють замовникові і проектній групі перевірити відповідність рамок проекту вимогам, що потенційно змінюються, і якщо необхідно, скоректувати їх, а також відреагувати на виникаючі ризики.
Віхи як орієнтири виробничої відповідальності
Хоча ролевий кластер "Управління програмою" організовує роботу над проектом в цілому, на кожній з фаз певні ролеві кластери мають провідне значення. Об'єм роботи, що виконується різними ролевими кластерами, міняється в процесі переходу проекту з однієї фази в іншу. Використання проектних віх допомагає належним чином організувати ці перехідні процеси.
Провідні ролі різних фаз
•Між ролевими кластерами і головними віхами існує певна відповідність. Воно указує, які саме ролі несуть першочергову відповідальність за досягнення кожній з віх. Перехід від однієї фази до іншої включає також перенесення основної відповідальності від одних ролевих кластерів до інших.
•Нижченаведена таблиця показує, які ролі є першорядними в досягненні кожній з головних віх. Проте слід зазначити, що провідне положення одних ролей жодним чином не виключає участь в роботі решти ролевих кластерів.
Віха |
Провідні ролеві кластери |
Концепція затверджена |
Управління продуктом |
Плани проекту затверджені |
Управління програмою |
Розробка завершена |
Розробка, Задоволення споживача |
Готовність рішення затверджена |
Тестування, Управління випуском |
Впровадження завершене |
Управління випуском |
Аналіз пройдених віх
Кожна головна віха надає можливість осмислити і витягувати уроки з фази, що тільки що завершилася. Аналіз пройдених віх під час спеціальних зборів (post-milestone reviews), що проводяться, допомагає підвищити віддачу від такого осмислення. MSF окремо розглядає збори, на яких результати фази обговорюються разом із замовником і іншими зацікавленими сторонами (milestone reviews), і подальше лікування уроків усередині колективу (postmilestone reviews). Остаточні збори такого роду проводяться вже після завершення проекту. У деяких організаціях вони носять назву постмортемів (postmortems).
Ітеративний підхід
Характеристики ітеративного підходу
Ітеративний підхід до процесу розробки широко використовується в MSF. Програмний код, документація, дизайн, плани і інші робочі матеріали створюються, як правило, ітеративними методами.
Випуск версій
MSF рекомендує починати розробку рішення з побудови, тестування і впровадження його базової функціональності. Потім до рішення додаються все нові і нові можливості. Така стратегія іменується стратегією версионирования. Не дивлячись на те, що для малих проектів може бути достатнім випуск однієї версії, рекомендується не упускати можливості створення
55

для одного вирішення ряду версій. Рис. 7 показує, як із створенням нових версій еволюціонує функціональність рішення.
Версії рішення не обов'язково слідують одна за одною. Зрілі програмні продукти зазвичай розвиваються по декількох напрямах паралельно. Тимчасові інтервали між випусками версій залежать як від розміру і типу проекту, так і від потреб і стратегії замовника.
Рисунок 11. |
Версіонуванння |
Створення "живої" документації
Ітеративний підхід до процесу розробки вимагає використання гнучкого способу ведення документації. "Живі" документи (living documents) повинні змінюватися у міру еволюції проекту. Такий підхід істотно відрізняється від принципів ведення документації в каскадній моделі, де процес розробки починається лише після того, як готові і зафіксовані всі вимоги і специфікації.
Документація проектів MSF, також як і програмний код, розробляється ітеративно. Часто, плани спочатку мають форму опису високорівневих "підходів" ("approaches"). На фазі вироблення концепції вони розповсюджуються серед членів проектної групи і інших зацікавлених осіб для отримання відгуків. Після переходу до фази планування ці документи поступово допрацьовуються. Розроблені детальні плани знову поступають на перевірку всім зацікавленим сторонам, і описаний процес повторюється ітеративно. Типи планів і загальна кількість документів, що описують їх, можуть варіюватися від проекту до проекту.
Для уникнення плутанини документи планів, розробка яких починається на стадії вироблення концепції, називаються "підходами". Наприклад, підхід до тестування може бути стисло сформульований під час фази вироблення концепції, а його перетворення на план тестування відбувається на пізніших фазах.
Ранні базові версії, відкладені підсумкові версії
Створення базових (попередніх) версій проектних документів на раніших етапах (baseline early) дає членам проектної групи можливість почати роботу над своїми завданнями з мінімальними затримками. Аналогічно, відкладена на максимально довгий термін остаточна фіксація документів (freeze late) дозволяє вносити до них життєво важливі зміни впродовж всього етапу розробки. Але така гнучкість вимагає дуже уважного відношення до контролю за змінами (tracking changes). Дуже важливо забезпечити їх належний моніторинг і виключити можливість несанкціонованої зміни проектній документації.
Щоденні білди
MSF рекомендує якомога частіше збирати поточні версії всіх компонент рішення для проведення тестування і аналізу. Цей підхід застосовний як до розробки програмної коди,
56
так і до створення компонент апаратного і програмного забезпечення. Його гідність полягає в забезпеченні стабільності вирішення на широкому спектрі тестових даних ще до виходу рішення в світ.
Великі, складні проекти часто розділяються на менші під-проекти, кожен з яких розробляється і тестується окремою командою і потім вливається в загальне рішення. Для таких проектів, типових в практиці розробки продуктів майкрософтом, щоденні білди (daily builds) є фундаментальній, невід'ємній складовій робочого процесу. В першу чергу розробляється базова функціональність рішення, і лише потім створюються додаткові його можливості. Розробка і тестування ведуться безперервно і одночасно, будучи паралельними процесами. Щоденні білди служать верифікацією сумісності всієї розробленої програмної коди і дозволяють групам напрямів просуватися в своїй роботі до наступних ітерацій розробки і тестування.
Відмітимо, що щоденні білди рішення не потрапляють в реальне виробниче середовище. Лише після того, як рішення добре протестоване і стабілізоване, здійснюється його пілотний (або бета) випуск, що частково встановлюється в виробниче середовище.
Для належної синхронізації білдів необхідно мати в проекті чітко організований механізм управління конфігураціями.
Управління конфігураціями проекту
Управління конфігураціями проекту (configuration management) – це формалізований процес моніторингу і контролю за станами (версіями) різних елементів, таких як програмний код, документація, керівництво користувачів, файли допомоги, плани і календарні графіки. Процес управління конфігураціями також включає моніторинг стану апаратного забезпечення, мереж і програмних настройок (settings) рішення. Проектна група повинна мати можливість у разі потреби здійснити повернення до попередньої конфігурації рішення.
Управління конфігураціями часто плутають з управлінням змінами в проекті (project change control), обговорюваним нижче. Насправді ці два завдання взаємозв'язані, але не ідентичні. Управління конфігураціями – це протоколювання і контроль станів елементів проекту. Управління ж змінами – це процес розгляду і схвалення проектних змін. Управління конфігураціями забезпечує проектну групу інструментами, необхідними для ефективного управління змінами.
Наприклад, проектна група працює над електронною системою викликів медичної допомоги, що зв'язує мережу лікарень. Вона зберігає настройки, вибрані для сервера Microsoft® BizTalk®, і відстежує зміни, вироблювані в ході розробки і тестування. Це приклад управління конфігурацією. Потім, слідуючи недавно прийнятому урядовому нормативному акту, вноситься пропозиція доповнити систему новою схемою електронного обміну даними (EDI). Керівники проектної групи зустрічаються із спонсором і членами команди супроводу, щоб проаналізувати запропоновані зміни, оцінити їх технологічні ризики і вплив на вартість і календарний графік проекту. Це приклад контролю за змінами.
У організаціях, що використовують MOF, для управління конфігурацією проекту може бути задіяний широкий спектр процесів управління, вживаних у супроводі рішень.
Рекомендації для випуску версій рішення
Випуск версій рішення допомагає укріпити взаємини між проектною командою і замовником і забезпечити реалізацію в рішенні всіх кращих ідей. Замовникові буде легко погодитися з перенесенням реалізації певних можливостей на пізніші версії, якщо у нього є довіра до проектної групи, заснована на своєчасному постачанні початковою і подальших версій рішення. Ось загальні рекомендації, що полегшують випуск проміжних версій рішення:
•Створюючи плани, передбачайте версіонування.
•Перш за все, поставляйте базову функціональність.
57
•Вибирайте пріоритети, враховуючи ризики.
•Здійснюйте часті ітерації розробки.
•Інституціюйте процедури контролю змін в проекті
•Не створюйте нових версій, якщо вони не збільшують цінність рішення.
Створюючи плани, передбачайте версіонування
Завчасне планування подальших версій дозволяє проектній групі чіткіше прояснити, що повинне бути створене зараз, і з чим можна почекати. Створення довгострокового графіка введення в рішення нової функціональності дає можливість використовувати доступні ресурси і час найкращим чином і уникнути небажаного розповзання рамок проекту.
Перш за все, поставляйте базову функціональність
Надання замовникові простого, компактного, але такого, що відповідає основним потребам рішення має велику цінність, ніж розробка наиполнейшей версії, яка виготовлятиметься тижні, місяці, роки... Упровадивши базову функціональність, розробники отримують міцний фундамент, на основі якого може бути продовжене розвиток рішення. Проектна група також отримує відгуки від замовника, що допомагають вибирати найбільш адекватний шлях еволюції рішення.
Вибирайте пріоритети, враховуючи ризики
Проведення проектною групою оцінювання рисок дозволяє виявити, реалізація якої функціональності зв'язана з найбільшими з них. Докладна інформація про ризики може бути отримана з "Білої книги" дисципліни управління ризиками MSF.
В першу чергу плануйте реалізувати найбільш ризиковані нововведення і зміни і лише після них – менш ризиковані. Наприклад, завдання, пов'язані з великими змінами в архітектурі, має сенс виконати на ранніх етапах проекту, мінімізуючи тим самим вплив цих змін на бюджет і календарний графік.
Здійснюйте часті ітерації розробки
Істотний виграш від версионирования (versioning) рішення полягає в наданні замовникові в адекватні терміни придатного до експлуатації рішення, яке потім послідовно поліпшується. Якщо в цьому процесі відбуваються затримки, то надії замовника на постійне поліпшення продукту виявляються невиправданими. Тому обмежуйте рамки кожної ітерації рішення, щоб створення нової версії відбувалося в прийнятні терміни.
Інституціюйте процедури контролю змін в проекті
Як тільки завершено створення базової версії специфікації, повинен бути негайно введений контроль за змінами планованої функціональності рішення. Принципово важливо, щоб вся проектна група і замовник чітко розуміли значення такого контролю і його процедури.
MSF не наказує конкретний набір правил контролю за змінами. Залежно від розміру і типу проекту, ці процедури можуть бути простими або складними. Проте для забезпечення ефективності контролю необхідна наявність наступних елементів:
•Без аналізу і схвалення як з боку проектної групи, так і з боку замовника запланована функціональність не розширюється і не змінюється.
•В цілях полегшення проведення аналізу запити на зміну функціональності подаються письмово. Це дозволяє групувати подібні запити. У майкрософті вони називаються
запитами на зміну дизайну (design change requests – DCRs) (думаю, що є зважаючи на сам процес групування, і тоді DCR повинне переводитися, напевно, як «організація запитів про зміни»).
58