Методологія Microsoft Solution Framework (MSF)
На цей час абсолютна більшість користувачів в Україні працюють на продуктах компанії Microsoft. Ця компанія підтримує університети по усьому світові, надає ряд ПЗ для підтримки основних процесів господарської діяльності. Тому при вивченні технологій програмування не можна пропустити досвід Microsoft у галузі створення програм.
Аналіз результатів виконання програмних проектів, виконаний службою Microsoft Consulting Services, виявив, що лише чверть проектів можна визнати успішними, половина проектів мала великі проблеми (рис. 41).

Рисунок 41 – Статистика успіхів проектів з розроблення ПЗ компанії Microsoft
- Основними причинами невдач були визнані такі: постійна зміна вимог;
- нечіткі або неповні специфікації; низька якість коду;
- занадто широка постановка завдання; помилка в підборі кадрів;
- погана організація роботи; нечітко сформульовані цілі.
- Для подолання цих труднощів був запропонований набір
- моделей Мicrosoft Solution Framework (MSF) [34], в якому врахований досвід, накопичений групами розроблення програмних продуктів.
В основу MSF покладено вісім базових принципів (foundational principles):
- Сприяння відкритої комунікації (Foster open communications). Модель процесу MSF запроваджує вільний інформаційний потік сред членів команди та зацікавлених сторін (key stakeholders) для забезпечення однакового розуміння завдань. Документування ходу проекту та доступ до цих даних членів команди, зацікавлених сторін та замовників.
- Робота у напрямку спільного бачення проекту (Work toward a shared vision). Модель процесу MSF запроваджує фазу формування концепції (Envisioning Phase) та окремий ключовий момент затвердження бачення (milestone Vision/Scope Approved) для формування спільного бачення проекту. Бачення включає детальне розуміння цілей та завдань для досягнення рішення поставленої проблеми. Спільне бачення виявляє припущення команди та замовників, потрібні для отримання рішення.
- Надання прав і можливостей членам команди (Empower team members). Розширення прав і можливостей членів команди для прийняття ними відповідальності за виконану роботу. Таке збільшення відповідальності може бути затверджене у графіках, де фіксується дата закінчення робіт, що також може бути засобом виявлення можливих затримок проекту.
- Визначення індивідуальної та спільної відповідальності (Establish clear accountability and shared responsibility). Модель командної групи MSF ґрунтується на принципі важливості роботи кожного для отримання якісного рішення проблеми. Усі члени групи розділяють відповідальність за проект.
- Зосередження на бізнес-цілях (Focus on delivering business value). Рішення повинне приносити користь організації у вигляді додавання вартості бізнесу. Це додавання досягається тільки після повного розгортання рішення у виробничому середовищі.
- Бути гнучкими, очікувати на зміни (Stay agile, expect change). MSF припускає, що у виробничому середовищі на рішення постійно впливають зміни. Команда повинна бути обізнаною та готовою до керування змінами вимог.
- Інвестування у якість (Invest in quality). У MSF кожен член команди відповідальний за якість вирішення завдання.Для підтримки якості протягом проекту формується команда тестувальників. Це гарантує, що рішення відповідає рівню якості, визначеному зацікавленими сторонами.
Навчання за досвідом (Learn from all experiences). MSF вимагає використання досвіду, отриманого у попередніх проектах. Це дозволяє знайти найкращі методики розроблення.
MSF складається із двох моделей та трьох дисциплін:
- моделі командної групи;
- моделі процесу;
- дисципліни управління проектами;
- дисципліни управління ризиками;
- дисципліни управління підготовкою.
Модель командної групи (MSF Team Model) описує, як організувати колективи і якими принципами керуватися для досягнення максимального успіху в розробленні програм. Різні колективи можуть по-своєму застосовувати на практиці різні елементи цієї моделі – все залежить від масштабу проекту, розміру колективу і кваліфікації його учасників та моделі процесу розроблення.
Формування колективу є складним завданням, що повинне виконуватися психологами та враховувати такі основні положення:
- не повинне бути команди з одних лідерів;
- не повинне бути команди з одних виконавців;
- у випадку невдачі команда розформовується;
- система штрафів (якщо проект провалюється – карають усіх).
Модель командної групи визначає тільки ролі, кожна з яких може виконуватися кількома людьми (рис. 42). Цікаво, що в моделі командної групи не передбачено єдиноначальності – усі ролі важливі, усі ролі рівноправні, тому MSF називають моделлю рівних (team of peers).

Рисунок 42 – Модель командної групи (MSF Team Model)
Program management – керування програмою. Виконавець цієї ролі відповідає за організацію (але не керує): здійснює ведення графіка робіт, ранкові 15-хвилинні наради, забезпечує відповідність стандартам і специфікаціям, фіксацію порушень, написання технічної документації.
Product management – керування продуктом. Виконавці цієї ролі відповідають за спілкування із замовником, написання специфікації, роз’яснення завдань розроблювачам.
Development – найбільш традиційна роль – розроблення і початкове тестування продукту.
User expirience – підвищення ефективності роботи користувачів, написання користувальницької документації.
Release management – розгортання релізу продукту, супровід і його технічна підтримка.
Test – визначення відповідності показників якості релізу встановленим значенням. Виявлення й усунення недоробок, виправлення помилок, інші функції QA.
У MSF затверджується, що таку модель можна масштабувати, розбиваючи систему за функціями.
Модель процесу (MSF Process Model) визначає, коли і які роботи повинні бути виконані.
Основні принципи і практичні прийоми, на яких ґрунтується модель:
- ітеративний підхід (послідовний випуск версій);
- підготовка чіткої документації;
- урахування невизначеності майбутнього;
- облік компромісів;
- керування ризиками;
- підтримка відповідального відношення колективу до строків випуску продукту;
- розбивка великих проектів на більш дрібні керовані частини; щоденне складання проекту;
- постійний аналіз ходу робіт.
Process model має три основні особливості:
- розбивка всього процесу на фази;
- використання опорних точок (milestones);
- ітеративність.
Увесь процес розбивається на п’ять взаємозалежних фаз (рис. 43). Перш ніж переходити до наступної фази, на попередній повинні бути отримані певні результати (досягнуті головні опорні точки). Фактично процес ітеративний і відповідає спіральній моделі ЖЦ ПЗ.

Рисунок 43 – Модель процесу (MSF Process Model)
Envisioning Phase – вироблення єдиного розуміння проекту всіма членами колективу. Ця фаза закінчується розробленням формалізованого документа, що містить:
- problem statement – опис завдання на розроблення ПЗ обсягом не більше однієї сторінки;
- vision statement – опис того, від чого відштовхується розроблення і яким результатом закінчується;
- solution concept – що буде впроваджене в результаті вирішення поставленої проблеми;
- user profiles – опис потенційних користувачів системи; business goals – опис бізнес-функцій, виконання яких за допомогою розробленого ПЗ поверне інвестиції;
- design goals – конкретні цілі й обмеження програмного продукту, його конкретні властивості.
Planning Phase – планування чергового циклу розроблення:
- функціональні специфікації;
- план-графік робіт;
- оцінка ризиків.
Developing Phase – розроблення, причому рекомендуються різні технологічні прийоми, наприклад, повторне використання фрагментів коду, програмування за контрактом, написання захищеного від помилок ПЗ та ін.
Stabilizing Phase – створення стабільної β-версії, готової до використання.
Важливу роль відіграють опорні точки (milestones), у яких аналізується стан робіт і виробляється їхня синхронізація. У цих точках додаток або його специфікації не заморожуються. Опорні точки дозволяють проаналізувати стан проекту і внести необхідні корективи, наприклад, переналагоджуватися під вимоги, що змінилися, замовника або відреагувати на ризики, можливі в ході подальшої роботи. Для кожної опорної точки визначається, які результати повинні бути отримані до цього моменту.
Кожна фаза процесу розроблення завершується головною опорною точкою (major milestone) – моментом, коли всі члени колективу синхронізують отримані результати. Призначення таких точок у тому, що вони дозволяють оцінити життєздатність проекту. Їхні результати видимі не тільки колективу розроблювачів, але й замовникові. Після аналізу результатів колектив розробників і замовник спільно вирішують, чи можна переходити на наступну фазу. Таким чином, головні опорні точки – це критерії переходу з однієї фази проекту на іншу.
Усередині кожної фази визначаються проміжні опорні точки (interium milestones). Вони, як і головні, слугують для аналізу й синхронізації досягнутого, а не для заморожування проекту. Але на відміну від головних опорних точок проміжні видні тільки членам колективу розробників.
Ітеративність процесу MSF полягає в його багаторазовому повторенні упродовж усього циклу розроблення та існування продукту. На кожній успішній ітерації у продукт включаються тільки ті нові інструменти та функції, які задовольняють постійно змінювані вимоги бізнесу.