Життєвий цикл програмного продукту

Життєвий цикл програмного продукту thumbnail

У цій статті ми розповімо про поняття життєвого циклу програмного забезпечення, його моделі, а також про основні принципи та методології розробки програмного забезпечення. Розуміння різних варіантів організації розробки допоможе вам краще керувати ресурсами та проектом.

Життєвий цикл програмного забезпечення: етапи

У програмного забезпечення, як у живої істоти є свій життєвий цикл. Життєвий цикл ПЗ – стадії, що проходить програмний продукт від появи ідеї до її реалізації в коді, імплементації у бізнес і подальшої підтримки. Моделі життєвого циклу багато в чому зумовлюють і методології розробки ПЗ.

Зазвичай до етапів життєвого циклу відносять:

  1. Аналіз вимог
  2. Проектування
  3. Програмування
  4. Тестування і налагодження
  5. Експлуатацію, супровід і підтримку

Але це не повний перелік.

Існує деяка варіативність у проходженні етапів ЖЦ під час розробки та впровадження продукту на ринок. Для кожного продукту це відбувається по-своєму, але щоб цим якось керувати були сформульовані моделі життєвого циклу ПО – спрощене й узагальнене уявлення про те, як розвивається продукт. У реальності життя продукту не відповідає моделі.

Давайте посмотрим на них подробнее и разберемся что в них общего, а что отличается.

Серед моделей життєвого циклу програмного забезпечення найбільш відомі такі:

  • Каскадна модель (вона ж “водоспадна” – waterfall)
  • Ітераційні модель
  • Інкрементна модель
  • Спіральна модель

Давайте подивимося на них докладніше і розберемося, що в них спільного, а що відмінного.

Моделі життєвого циклу ПЗ

За великим рахунком всі моделі можна розділити на дві великі групи: послідовні та ітераційні моделі.

Waterfall (каскадна модель)

Основна суть моделі Waterfall у тому, що етапи залежать один від одного і наступний починається, коли завершений попередній, утворюючи таким чином поступальний (каскадний) рух уперед.

Паралелізм етапів у каскадній моделі, хоч і обмежений, але можливий для абсолютно незалежних між собою робіт. При цьому інтеграція паралельних частин все одно відбувається на якомусь наступному етапі, а не в рамках одного.

Команди різних етапів між собою не комунікують, кожна команда відповідає чітко за свій етап.

Недоліками цієї моделі є отримання результату по проходженню всіх етапів і складність виявлення помилок. Повертатися назад важко. Не зрозуміло що повертати: якщо стався збій на якомусь етапі, його наслідки видно тільки в кінці.

Для замовників дана модель виглядає лінійно і з боку досить просто: за завершеним етапом проектування слідує програмування, а потім тестування – і так крок за кроком поки не буде досягнута фінальна точка і мета, заради якої ведеться розробка.

Дана модель зрозуміло і чисто вкладається в документи, наприклад в договори і роадмапи при наявності чітко визначених контрольних точок. У будь-який момент можна легко зрозуміти чи була пройдена та чи інша точка контролю чи ні, і чи дотримані терміни. З цих причин довготривалі і особливо великі проекти, розраховані на десятиліття і залучення великої кількості організацій-учасників, керуються переважно waterfall.

Однак уявлення про простоту каскадної моделі є ілюзорним. Воно з’являється через обмежене бачення клієнтом всього процесу, адже дана модель не має на увазі залучення замовника в деталі процесів розробки і демонструє зрозумілий і кінцевий результат роботи тільки на контрольних точках і в кінці проекту.

У реальності каскадну модель не можна назвати простою, на практиці нею складно керувати. Внесення замовником значних змін під час процесу розробки по waterfall або спрацьовування серйозних, не передбачених проектом ризиків несуть руйнівний характер для всього процесу – модель доводиться перебудовувати, графіки перепланувати.

Каскадна модель ЖЦ

Ітераційна, спіральна й інкрементна моделі

Ітераційна модель передбачає розбиття проекту на частини (етапи, ітерації) і проходження етапів життєвого циклу на кожному з них. Кожен етап є закінченим сам по собі, сукупність етапів формує кінцевий результат.

Пояснимо розбиття на етапи на побутовому прикладі. Припустимо, нам потрібен стіл у вітальню.

  • На першому етапі ми зробить стільницю, ніжки і скріпимо їх так, щоб стіл стояв.
  • На другому, зміцнимо і пофарбуємо його.
  • А на третьому, накриємо скатертиною і купимо до нього стільці.

На кожній ітерації ми працювали з одним і тим же продуктом і в кінці кожної ітерації отримували результат, яким можна користуватися (звісно з певними обмеженнями).

З кожним етапом розробка наближається до кінцевого бажаного результату або уточнюються вимоги до результату по ходу розробки, і відповідно в будь-який момент поточна ітерація може виявитися останньою або черговою на шляху до завершення.

Даний підхід дозволяє боротися з невизначеністю, знімаючи її етап за етапом, і перевіряти правильність технічного, маркетингового або будь-якого іншого рішення на ранніх стадіях.

Використання ітераційної моделі знижує ризики глобального провалу і розтрати всього бюджету, отримання несинхронізованих очікувань і помилкового розуміння процесів як клієнтом, так і кожним учасником команди розробки. Воно також дає можливість завершення розробки в кінці будь-якої ітерації (в каскадної моделі ви повинні перш за завершити всі етапи).

Ітераційна модель наприклад застосовувалася при розробці системи дистанційного навчання проекту Джерело. Детальніше про розробку чату Джерело можна почитати тут.

Ітераційна модель ЖЦ

Спіральна й інкрементна моделі є видами ітераційної моделі життєвого циклу.

Що ж таке спіральна модель?

Усі етапи життєвого циклу при спіральної моделі йдуть витками, на кожному з яких відбуваються проектування, кодування, дизайн, тестування і т. д. Такий процес відображає суть назви: піднімаючись, проходиться один виток (цикл) спіралі для досягнення кінцевого результату. Причому не обов’язково, що один і той же набір процесів буде повторяться від витка до витка. Але результати кожного з витків ведуть до головної мети.

Спіральна модель ЖЦ

Тепер поговоримо про інкрементну модель.

Принцип, що лежить в основі інкрементной моделі, має на увазі розширення можливостей, добудовування модулів і функцій програми. Буквальний переклад слова інкремент: «збільшення на один». Це «збільшення на один» застосовується в тому числі для позначення версій продукту.

Якщо в каскадній моделі по суті є двома стани продукту: «нічого» і «готовий продукт», то з появою ітераційних моделей стало застосовуватися версіонування продукту. Кожна ітерація позначається цифрою: 1,2,3 і відповідно продукт після кожної ітерації має версію з відповідним номером: v.1, v.2, v.3. Числами після слова версія позначають масштабні зміни в ядро ​​продукту.

А коли одна з версій експлуатується, наступна, з огляду на недоліки попередньої, тільки планується або вже розробляється, а поліпшення замовнику і користувачеві хочеться доставити прямо зараз, тоді з’являються мінорні версії. Туди потрапляють зміни, що не впливають на ядро ​​розробки і представлені як під-версії 1.1,1.2,1.3 або релізи 1.1.1, 1.1.2 і т.п.

У сукупності такі поетапні релізи призводять до повноцінної версії 2.0.

Agile і Lean: принципи розробки ПЗ

Почнемо з Agile.

Читайте также:  Экономический рост экономический цикл безработица и инфляция

Agile – набір принципів гнучкої розробки (всього їх 12) та ідей. Основні ідеї Agile:

  • люди і взаємодія важливіші за процеси та інструменти;
  • працюючий продукт важливіший за вичерпну документацію;
  • співпраця з замовником важливіше узгодження умов контракту;
  • готовність до змін важливіше проходження попереднім планом.

Один з принципів – взаємодія – має на увазі, що замовник взаємодіє з командою, команда з замовником – усі між собою. Це дозволяє обмінюватися досвідом між учасниками команди і клієнтом і кожному з них впливати на прийняття рішень. За рахунок такого підходу знижуються ризики втрати часу і грошей і підвищується здатність команди вирішувати складні нестандартні завдання з високим ступенем невизначеності.

Однак взаємодії всіх і з усіма можуть вилитися у хаос, що впливає на всі сфери розробки. Тому використовуючи Agile потрібно розуміти обмеження: команди повинні бути невеликі, учасники повинні бути компетентні та мотивовані, ітерації короткі з максимально зрозумілими цілями, встановлені чіткі обмеження за часом і кінцевий результат повинен бути очевидним.

Agile чудово справляється з невизначеністю, зумовлюючи майбутнє на більш короткий період. Правило таке: чим вища невизначеність – тим коротша ітерація, причому її тривалість може бути навіть у рамках 24 годин, як і відбувається на хакатоні. На початку кожної ітерації неминуче виконується контроль, ретроспектива, оцінка та аналіз результатів, планування наступної ітерації.

У внутрішньому плануванні та у продуктовій розробці без цього принципу й елементів Agile не обійтися.

Тепер поговоримо про Lean.

Ідея підходу Lean полягає в тому, що ми ощадливо ставимося до ресурсів (у тому числі часу) і вирішуємо завдання найпростішим способом. Наприклад: ми не робимо весь продукт, щоб зрозуміти, що він нікому не потрібен – ми робимо лендінг і форму підписки і даємо на нього рекламу, щоб перевірити, що цей продукт викликає інтерес клієнтів і прийняти усвідомлене рішення про необхідність розробки.

Коли доходить до розробки продукту, або робиться якесь поліпшення, виробниче або інженерне, ми спочатку робимо його MVP (minimum viable product). Термін MVP зараз широко поширений і застосовується повсюдно, але він народився саме з Lean підходу. MVP – така версія продукту, що виконує свою головну функцію і при цьому її не відхиляють клієнти і визнають її корисність. Звичайно, її можна покращувати і покращувати, але загалом продукт на стадії MVP повинен бути корисним, зрозумілим клієнтові і таким, щоб можна було прийняти рішення про його подальших поліпшень або визнати експеримент невдалим і тестувати нову гіпотезу, витративши при цьому якомога менше ресурсів.

Загалом Lean підхід орієнтується на тестування потреб і цінностей і потрапляння в очікування ринку мінімальними засобами. Lean-підхід не про “технічні” проблеми і їхні рішення інженерними засобами, а про підприємницькому підході до вирішення завдань. Lean передбачає, що команда шукає найпростіше рішення для досягнення результату: технічно, організаційно і т.п., спрощуючи все, що не є дійсно важливим.

У спрощенні сила і головна “пастка” Lean: прагнення все спростити іноді призводить до ситуацій, в яких продукт спрощують настільки, що губляться дійсно важливі функції і продукт по суті виявляється непотрібним, оскільки не несе цінності користувачеві.

Наостанок про Lean хочеться додати: часто, коли говорять про Lean, кажуть, що “Lean – про те, щоб замість сервісу зробити лендінг із формою контактів”. Ні, це не Lean. Таке тестування не суперечить Lean, але Lean-методологія пропонує набагато більше прийомів, ніж цей, і варта детального вивчення.

Основні методи розробки ПЗ: гнучкі методології

Нижче наведено короткий огляд основних гнучких методологій розробки з описом їхньої суті. Огляд не претендує на повноту, але дає загальне уявлення, що взагалі існує.

Scrum методологія ґрунтується на понятті спринту (sprint), протягом якого виконується робота над продуктом. Перед початком кожного спринту проводиться планування (Sprint Planning), на якому проводиться оцінка вмісту списку завдань із розвитку продукту (Product Backlog) і формування беклога на спринт (Sprint Backlog), у рамках яких і діє команда. Для спринту завжди існують обмеження по часу, зазвичай від тижня до місяця. Життя продукту таким чином розбита на рівні по тривалості спринти.

За Kanban методологією проект ділиться на етапи, що візуалізуються у вигляді канбан-дошки. Етапи, це наприклад: планування, розробка, тестування, реліз і т.п. Завдання у вигляді “карток” переміщуються з етапу на етап. Нові завдання можна додавати у будь-який час. Завдання закривається не по закінченню конкретного часу, а по зміні статусу на “завершено”. Kanban – методологія з концепції “ощадливого виробництва”.

RUP (Rational Unified Process) – розробка продукту за даним методом складається з чотирьох фаз (початкова стадія, уточнення, побудова, впровадження), кожна з яких включає в себе одну або декілька ітерацій. RUP величезна методологія, котру важко описати одним абзацом тексту, але методи, рекомендовані RUP засновані на статистиці комерційно успішних проектів.

DSDM (Dynamic Systems Development Model) – методологія, що демонструє набір принципів, визначених типів ролей і технік.

Принципи спрямовані на головну мету – здати готовий проект вчасно і вкластися у бюджет, з можливістю регулювати вимоги під час розробки. DSDM належить до гнучких методологій розробки програмного забезпечення, а також розробок, що не входять у сферу інформаційних технологій.

RAD (Rapid Application Development) – методологія швидкої розробки додатків, що передбачає застосування інструментальних засобів візуального моделювання (прототипування) і розробки. RAD передбачає невеликі команди розробки, терміни до 4 місяців й активне залучення замовника з ранніх етапів. Дана методологія спирається на вимоги, але також існує можливість їхніх змін під час розробки системи. Такий підхід дозволяє скоротити витрати і звести час розробки до мінімуму.

XP (Extreme Programming) – методологія, орієнтована на постійну зміну вимог до продукт, пропонує 12 підходів для досягнення ефективних результатів у подібних умовах. Серед них:

  • Швидкий план і його постійна зміна
  • Простий дизайн архітектури;
  • Часте тестування;
  • Участь одночасно двох розробників в одному завданні або навіть за одним робочим місцем;
  • Постійна інтеграція і часті невеликі релізи.

Замість висновків

Незважаючи на безліч досліджень, думка про ефективність методик, принципів і методологій часто ґрунтується на особистому досвіді, емоційному відгуку і компетенціях менеджера, який їх застосовував. І не завжди вподобана з опису модель буде найкращою для реалізації саме вашого проекту. Тому, чим більше ви знаєте методологій і підходів, тим вище ваша здатність керувати проектами, комбінуючи кращі практики.

Хочете поговорити про те, як найкраще побудувати управління вашим проектом? Пишіть!

10.03.2020

Зображення, використані в статті, були взяті з відкритих джерел і використовуються як ілюстрації.

Источник

Життєвий цикл програмного забезпечення (ПО) – період часу, який починається з моменту прийняття рішення про необхідність створення програмного продукту і закінчується в момент його повного вилучення з експлуатації [1]. Цей цикл – процес побудови і розвитку ПЗ.

Читайте также:  Сон состоит из двух циклов



1. Стандарти життєвого циклу ПО

  • ГОСТ 34.601-90
  • ISO / IEC 12207:1995 (російський аналог – ГОСТ Р ІСО / МЕК 12207-99)

2. Стандарт ГОСТ 34.601-90

Стандарт ГОСТ 34.601-90 передбачає наступні стадії і етапи створення автоматизованої системи:

  1. Формування вимог до АС
    1. Обстеження об’єкта та обгрунтування необхідності створення АС
    2. Формування вимог користувача до АС
    3. Оформлення звіту про виконання робіт і заявки на розробку АС
  2. Розробка концепції АС
    1. Вивчення об’єкта
    2. Проведення необхідних науково-дослідних робіт
    3. Розробка варіантів концепції АС і вибір варіанту концепції АС, що задовольняє вимогам користувачів
    4. Оформлення звіту про виконану роботу
  3. Технічне завдання
    1. Розробка та затвердження технічного завдання на створення АС
  4. Ескізний проект
    1. Розробка попередніх проектних рішень по системі і її частинам
    2. Розробка документації на АС і її частини
  5. Технічний проект
    1. Розробка проектних рішень по системі і її частинам
    2. Розробка документації на АС і її частини
    3. Розробка та оформлення документації на поставку комплектуючих виробів
    4. Розробка завдань на проектування в суміжних частинах проекту
  6. Робоча документація
    1. Розробка робочої документації на АС і її частини
    2. Розробка та адаптація програм
  7. Введення в дію
    1. Підготовка об’єкта автоматизації
    2. Підготовка персоналу
    3. Комплектація АС поставляються виробами (програмними і технічними засобами, програмно-технічними комплексами, інформаційними виробами)
    4. Будівельно-монтажні роботи
    5. Пусконалагоджувальні роботи
    6. Проведення попередніх випробувань
    7. Проведення дослідної експлуатації
    8. Проведення приймальних випробувань
  8. Супровід АС.
    1. Виконання робіт відповідно до гарантійних зобов’язань
    2. Післягарантійне обслуговування

Ескізний, технічний проекти і робоча документація – це послідовне побудова все більш точних проектних рішень. Допускається виключати стадію “Ескізний проект” і окремі етапи робіт на всіх стадіях, об’єднувати стадії “Технічний проект” і “Робоча документація” в “техноробочий проект”, паралельно виконувати різні етапи і роботи, включати додаткові.

Даний стандарт не цілком підходить для проведення розробок в даний час: багато процесів відображені недостатньо, а деякі положення застаріли.



3. Стандарт ISO / IEC 12207 / і його застосування

Стандарт ISO / IEC 12207:1995 “rmation Technology – Software Life Cycle Processes” є основним нормативним документом, який регламентує склад процесів життєвого циклу ПЗ. Він визначає структуру життєвого циклу, що містить процеси, дії і завдання, які повинні бути виконані під час створення ПЗ.

Кожен процес розділений на набір дій, кожна дія – на набір завдань. Кожен процес, дія або завдання ініціюється і виконується іншим процесом в міру необхідності, причому не існує заздалегідь визначених послідовностей виконання. Зв’язки за вхідними даними при цьому зберігаються.



4. Процеси життєвого циклу ПО

  • Основні:
    • Придбання (дії і завдання замовника, що здобуває ПО)
    • Поставка (дії і завдання постачальника, який постачає замовника програмним продуктом або послугою)
    • Розробка (дії і завдання, що виконуються розробником: створення ПО, оформлення проектної та експлуатаційної документації, підготовка тестових та навчальних матеріалів і т. д.)
    • Експлуатація (дії і завдання оператора – організації, що експлуатує систему)
    • Супровід (дії і завдання, що виконуються супроводжує організацією, тобто службою супроводу). Супровід – внесень змін в ПЗ з метою виправлення помилок, підвищення продуктивності або адаптації до нових умов роботи або вимогам.
  • Допоміжні
    • Документування (формалізований опис інформації, створеної протягом ЖЦ ПО)
    • Управління конфігурацією (застосування адміністративних і технічних процедур на всьому протязі ЖЦ ПО для визначення стану компонентів ПЗ, управління його модифікаціями).
    • Забезпечення якості (забезпечення гарантій того, що ІС і процеси її ЖЦ відповідають заданим вимогам та затвердженим планам)
    • Верифікація (визначення того, що програмні продукти, які є результатами певної дії, повністю задовольняють вимогам або умовам, обумовленим попередніми діями)
    • Атестація (визначення повноти відповідності заданих вимог і створеної системи їх конкретному функціональному призначенню)
    • Спільна оцінка (оцінка стану робіт по проекту: контроль планування та управління ресурсами, персоналом, апаратурою, інструментальними засобами)
    • Аудит (визначення відповідності вимогам, планам і умов договору)
    • Дозвіл проблем (аналіз і рішення проблем, незалежно від їх походження чи джерела, які виявлені в ході розробки, експлуатації, супроводу або інших процесів)
  • Організаційні
    • Управління (дії і завдання, які можуть виконуватися будь-якою стороною, що управляє своїми процесами)
    • Створення інфраструктури (вибір та супровід технології, стандартів та інструментальних засобів, вибір і установка апаратних і програмних засобів, що використовуються для розробки, експлуатації чи супроводу ПО)
    • Удосконалення (оцінка, вимір, контроль та вдосконалення процесів ЖЦ)
    • Навчання (початкове навчання і подальше постійне підвищення кваліфікації персоналу)

Кожен процес включає ряд дій. Наприклад, процес придбання охоплює наступні дії:

  1. Ініціювання придбання
  2. Підготовка заявочних пропозицій
  3. Підготовка та коригування договору
  4. Нагляд за діяльністю постачальника
  5. Приймання та завершення робіт

Кожна дія включає ряд завдань. Наприклад, підготовка заявочних пропозицій повинна передбачати:

  1. Формування вимог до системи
  2. Формування списку програмних продуктів
  3. Встановлення умов і угод
  4. Опис технічних обмежень (середовище функціонування системи і т. д.)



5. Стадії життєвого циклу ПЗ, взаємозв’язок між процесами і стадіями

Модель життєвого циклу ПЗ – структура, що визначає послідовність виконання та взаємозв’язку процесів, дій і завдань протягом життєвого циклу. Модель життєвого циклу залежить від специфіки, масштабу і складності проекту і специфіки умов, в яких система створюється і функціонує.

Стандарт ДСТУ ISO / IEC 12207-99 не пропонує конкретну модель життєвого циклу. Його положення є загальними для будь-яких моделей життєвого циклу, методів і технологій створення ІС. Він описує структуру процесів життєвого циклу, не конкретизуючи, як реалізувати або виконати дії і завдання, включені в ці процеси.

Модель ЖЦ ПЗ включає в себе:

  1. Стадії;
  2. Результати виконання робіт на кожній стадії;
  3. Ключові події – точки завершення робіт і прийняття рішень.

Стадія – частина процесу створення ПЗ, обмежена певними тимчасовими рамками і закінчується випуском конкретного продукту (моделей, програмних компонентів, документації), що визначається заданими для даної стадії вимогами.

На кожній стадії можуть виконуватися декілька процесів, визначених у стандарті ДСТУ ISO / IEC 12207-99, і навпаки, один і той же процес може виконуватися на різних стадіях. Співвідношення між процесами і стадіями також визначається використовуваної моделлю життєвого циклу ПЗ.



6. Моделі життєвого циклу ПО

6.1. Водопадна (каскадна, послідовна) модель

Водопадна модель життєвого циклу ( англ. waterfall model ) Була запропонована в 1970 р. Уїнстоном Ройсом. Вона передбачає послідовне виконання всіх етапів проекту в строго фіксованому порядку. Перехід на наступний етап означає повне завершення робіт на попередньому етапі. Вимоги, визначені на стадії формування вимог, суворо документуються у вигляді технічного завдання і фіксуються на весь час розробки проекту. Кожна стадія завершується випуском повного комплекту документації, достатньої для того, щоб розробка могла бути продовжена іншою командою розробників.

Етапи проекту відповідно до каскадної моделлю:

  1. Формування вимог;
  2. Проектування;
  3. Реалізація;
  4. Тестування;
  5. Впровадження;
  6. Експлуатація та супровід.
Читайте также:  Шарлин харрис цикл сьюки стакхаус

Переваги:

  • Повна і узгоджена документація на кожному етапі;
  • Легко визначити терміни і витрати на проект.

Недоліки:

У Водоспадної моделі перехід від однієї фази проекту до іншого передбачає повну коректність результату (виходу) попередньої фази. Однак неточність вимозі або некоректна його інтерпретація в результаті призводить до того, що доводиться “відкочуватися” до ранньої фази проекту і необхідна переробка не просто вибиває проектну команду з графіка, але призводить часто до якісного зростання витрат і, не виключено, до припинення проекту в тій формі, в якій він спочатку замислювався. На думку сучасних фахівців, основне оману авторів Водоспадної моделі полягає в припущеннях, що проект проходить через весь процес один раз, спроектована архітектура хороша і проста у використанні, проект здійснення розумний, а помилки в реалізації легко усуваються в міру тестування. Ця модель виходить з того, що всі помилки будуть зосереджені в реалізації, а тому їх усунення відбувається рівномірно під час тестування компонентів і системи [2]. Таким чином, Водопадна модель для великих проектів мало реалістична і може бути ефективно використана тільки для створення невеликих систем [3].



6.2. Ітераційна модель

Альтернативою послідовної моделі є так звана модель ітеративної і інкрементального розробки ( англ. iterative and incremental development, IID ), Що отримала також від Т. Гілба в 70-і рр.. назву еволюційної моделі. Також цю модель називають ітеративної модель інкрементальний моделлю [4].

Модель IID передбачає розбиття життєвого циклу проекту на послідовність ітерацій, кожна з яких нагадує “міні-проект”, включаючи всі процеси розробки в застосуванні до створення менших фрагментів функціональності, порівняно з проектом в цілому. Мета кожної ітерації – отримання працюючої версії програмної системи, що включає функціональність, визначену інтегрованим змістом всіх попередніх та поточної ітерації. Результат фінальної ітерації містить всю необхідну функціональність продукту. Таким чином, із завершенням кожної ітерації продукт отримує приріст – інкремент – до його можливостей, які, отже, розвиваються еволюційно. Ітеративного, інкрементального і еволюційність в даному випадку є вислів одного і те ж сенсу різними словами зі злегка різних точок зору [3].

За висловом Т. Гілба, “еволюція – прийом, призначений для створення видимості стабільності. Шанси успішного створення складної системи будуть максимальними, якщо вона реалізується в серії невеликих кроків і якщо кожен крок містить в собі чітко певний успіх, а також можливість” відкоту “до попереднього успішному етапу в разі невдачі. Перед тим, як пустити в справу всі ресурси, призначені для створення системи, розробник має можливість одержувати з реального світу сигнали зворотного зв’язку і виправляти можливі помилки в проекті ” [4].

Підхід IID має і свої негативні сторони, які, по суті, – зворотна сторона достоїнств. По-перше, цілісне розуміння можливостей і обмежень проекту дуже довгий час відсутня. По-друге, при ітераціях доводиться відкидати частину зробленої раніше роботи. По-третє, сумлінність фахівців при виконанні робіт все ж знижується, що психологічно зрозуміло, адже над ними постійно тяжіє відчуття, що “все одно все можна буде переробити і поліпшити пізніше” [3].

Різні варіанти ітераційного підходу реалізовані в більшості сучасних методологій розробки ( RUP, MSF, XP).



6.3. Спіральна модель

Спіральна модель ( англ. spiral model ) Була розроблена в середині 1980-х років Баррі Боем. Вона заснована на класичному циклі Демінга PDCA (plan-do-check-act). При використанні цієї моделі ПО створюється в кілька ітерацій (витків спіралі) методом прототипування.

Кожна ітерація відповідає створенню фрагмента або версії ПЗ, на ній уточнюються цілі і характеристики проекту, оцінюється якість отриманих результатів і плануються роботи наступної ітерації.

На кожній ітерації оцінюються:

  • ризик перевищення термінів і вартості проекту;
  • необхідність виконання ще однієї ітерації;
  • ступінь повноти і точності розуміння вимог до системи;
  • доцільність припинення проекту.

Важливо розуміти, що спіральна модель є не альтернативою еволюційної моделі (моделі IID), а спеціально опрацьованим варіантом. На жаль, нерідко спіральну модель або помилково використовують як синонім еволюційної моделі взагалі, або (не менш помилково) згадують як абсолютно самостійну модель поряд з IID [3].

Відмінною особливістю спіральної моделі є спеціальна увага, що приділяється ризикам, що впливає на організацію життєвого циклу, і контрольним точкам. Боем формулює 10 найбільш поширених (за пріоритетами) ризиків:

  1. Дефіцит фахівців.
  2. Нереалістичні терміни і бюджет.
  3. Реалізація невідповідної функціональності.
  4. Розробка неправильного користувальницького інтерфейсу.
  5. Перфекціонізм, непотрібна оптимізація і відточування деталей.
  6. Безперервний потік змін.
  7. Брак інформації про зовнішні компоненти, що визначають оточення системи або залучених до інтеграцію.
  8. Недоліки в роботах, виконуваних зовнішніми (по відношенню до проекту) ресурсами.
  9. Недостатня продуктивність одержуваної системи.
  10. Розрив у кваліфікації фахівців різних областей.

У сьогоднішній спіральної моделі визначено такий загальний набір контрольних точок [5] :

  1. Concept of Operations (COO) – концепція (використання) системи;
  2. Life Cycle Objectives (LCO) – цілі та зміст життєвого циклу;
  3. Life Cycle Architecture (LCA) – архітектура життєвого циклу; тут же можливо говорити про готовність концептуальної архітектури цільової програмної системи;
  4. Initial Operational Capability (IOC) – перша версія створюваного продукту, придатна для дослідної експлуатації;
  5. Final Operational Capability (FOC) – готовий продукт, розгорнутий (встановлений і налаштований) для реальної експлуатації.



7. Методології розробки ПЗ

  • Rational Unified Process (RUP).
  • Microsoft Solutions Framework (MSF). Включає 4 фази: аналіз, проектування, розробка, стабілізація, припускає використання об’єктно-орієнтованого моделювання.
  • Екстремальне програмування ( англ. Extreme Programming, XP ). В основі методології командна робота, ефективна комунікація між замовником і виконавцем протягом усього проекту з розробки ІС. Розробка ведеться з використанням послідовно доопрацьовано прототипів.



Література

  • Братіщенко В. В. Проектування інформаційних систем – Іркутськ: Изд-во БГУЕП, 2004. – 84 с.
  • Вендров А. М. Проектування програмного забезпечення економічних інформаційних систем – М .: Фінанси і статистика, 2000.
  • Грекул В.І., Денищенко Г.Н., Коровкіна Н. Л. Проектування інформаційних систем – М .: Інтернет-університет інформаційних технологій – ІНТУІТ.ру, 2005.
  • Мішенін А. І. Теорія економічних інформаційних систем – М .: Фінанси і статистика, 2000. – 240 с.
  • Орлик С., “Моделі життєвого циклу”



Примітки

  1. Стандарт IEEE Std 610.12, Глосарій
  2. Брукс Ф. Міфічний людино-місяць або як створюються програмні системи: пров. з англ. / Ф. Брукс. – Санкт-Петербург: Символ-Плюс, 1999. – 304 с.: Іл.
  3. ↑ 1 2 3 4 Мірошниченко Є. А. Технології програмування: навчальний посібник / Е. А. Мірошниченко. – 2-е изд., Испр. і доп. – Томськ: Изд-во Томського політехнічного університету, 2008. – 128 с.
  4. ↑ 1 2 Ларман К. Ітеративна і інкрементального розробка: коротка історія / К. Ларман, В. Базілі / / Відкриті системи. – 2003 .- N 9. [1] – www.osp.ru/text/302/183412
  5. Орлик С. Введення в програмну інженерію і управління життєвим циклом ПЗ. [2] – software-testing.ru/library/around-testing/engineering/267-swebok

Источник