НОУ ІНТУІТ, Лекція, Життєвий цикл та процеси розробки ПЗ

Поняття життєвого циклу ПЗ

У першій лекції йшлося у тому, що складну програмну систему побудувати " простими " методами неможливо. Її розробка неминуче буде теж складною діяльністю.

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

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

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

Однак для коректного з погляду інженерії та економіки розгляду питань створення складних систем необхідно, щоб були порушені питання експлуатації системи, внесення до неї змін, а такожнайперші дії в ході її створення - аналіз потреб користувачів та вироблення рішень, "винахід" функцій, що задовольняють ці потреби. Без цього неможливо, з одного боку, врахувати реальну ефективність системи у вигляді ставлення отриманих результатів до всіх зроблених витрат і, з іншого боку, правильно оцінювати під час розробки ступінь відповідності системи реальним потребам користувачів та замовників.

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

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

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

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

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

Життєвий цикл ПЗ є складовою життєвого циклу програмно-апаратної системи, в яку це ПЗ входить. Тому часто його аспекти розглядаються у зв'язку з елементами життєвого циклу системи загалом.

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

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