Програмна інженерія — це застосування системного, вимірного підходу до розроблення, використання та супроводу програмного забезпечення, та дослідження цих підходів, тобто застосування принципів інженерії до програмного забезпечення. SWEBOK Вперше термін «програмна інженерія ()» був використаний в 1968 році на конференції з програмної інженерії, що була організована Науковим комітетом NATO.
Дисципліни Програмна інженерія може бути розділена на такі дисципліни: Вимоги: виявлення, аналіз, специфікація, перевірка вимог. Проєктування: процес визначення архітектури, складу компонентів, інтерфейсів та інших характеристик до системи. Конструювання: кодування, модульне та інтеграційне тестування, відлагодження. Тестування: перевірка поведінки системи на відповідність до специфікації, пошук дефектів. Супровід програмного забезпечення: поліпшення, оптимізація системи та процесів роботи з нею після вводу до експлуатації. Конфігураційне керування: систематизує зміни до системи, що роблять розробники в процесі розробки та супроводу. Попереджують небажані та непередбачені ефекти. Менеджмент: застосування методів та практик менеджменту для керування учасниками процесу розробки ПЗ. Цикл розробки ПЗ: визначення, реалізація, оцінювання, вимірювання, керування та покращення циклу розробки ПЗ як такого. Інструменти комп'ютерних наук: різні комп'ютерні системи що допомагають та дозволяють проводити процес розробки. Якість програмного забезпечення: відповідність програмного продукту вимогам.
Вимоги до програмного забезпечення
Вимоги - це властивості, якими має володіти ПЗ для адекватного визначення функцій, умов і обмежень виконання ПЗ, а також обсягів даних, технічного забезпечення та середовища функціонування;
Типи моделей життєвого циклу
Розглянуті підходи щодо побудови різних видів моделей життєвого циклу програмного забезпечення базуються на процесному підході до виконання програмних проєктів. Вони використовувалися на практиці під час створення різних типів моделей життєвого циклу програмного забезпечення, до яких належать такі моделі: каскадна, спіральна, інкрементна, еволюційна та ін.
Керування конфігурацією Керування конфігурацієюЛаврищева К. М. «Програмна інженерія» http://www.programsfactory.univ.kiev.ua/content/books/2/29 — це ідентифікація компонентів системи, визначення функціональних, фізичних характеристик системи, апаратного і програмного забезпечення для контролю виконання, внесення змін і трасування конфігурації. Процес керування визначено як один з допоміжних процесів життєвого циклу (ISO/IEC 12207), що виконується технічним і адміністративним менеджментом проєкту. При цьому складаються звіти про зміни, внесені у конфігурацію, і ступінь їхньої реалізації, а також проводиться перевірка відповідності внесених змін заданим вимогам.
Конфігурація системи — це склад функцій, програмного і технічного забезпечення системи, можливі їх комбінації залежно від наявності устаткування, загальносистемних засобів і вимог до продукту.
Конфігурація ПЗ складається з набору функціональних і технічних характеристик ПЗ, заданих у технічній документації і реалізованих у готовому продукті. Це сполучення різних елементів продукту з заданими процедурами збирання компонентів і настроювання на середовище. Вхідними елементами конфігурації є графік розробки, проєктна документація, вихідний виконуваний код, бібліотека компонентів, інструкції з установки і розгортання системи.
Область знань «Керування конфігурацією ПЗ (Software Configuration Management — SCM)» складається з таких розділів:
керування процесом конфігурації (Management of SMC Process), ідентифікація конфігурації ПЗ (Software Configuration Identification), контроль конфігурації ПЗ (Software Configuration Control), облік статусу (поведінка або стани) конфігурації ПЗ (Software Configuration Status Accounting), аудит конфігурації ПЗ (Software Configuration Auditing), керування версіями ПЗ і доставкою (Software Release Management and Delivery).
Керування процесом конфігурації. Це діяльність з контролю еволюції і цілісності продукту при ідентифікації, змінах і забезпеченні звітною інформацією, що стосується конфігурації. Вона містить у собі:
систематичне відстеження внесених змін в окремі складові частини конфігурації, виконання аудита змін і автоматизованого контролю за внесенням змін у конфігурацію системи або в ПЗ; підтримку цілісності конфігурації, її аудит і забезпечення внесення змін в елементи конфігурації; ревізію конфігурації з метою перевірки наявності розроблених програмних або апаратних засобів і узгодження версії конфігурації з заданими вимогами; трасування змін у конфігурації на процесах супроводу й експлуатації ПЗ.
Ідентифікація конфігурації ПЗ полягає в документуванні функціональних і фізичних характеристик елементів конфігурації, а також в оформленні технічної документація на елементи конфігурації.
Контроль конфігурації ПЗ — це роботи з координації, затвердження або відкидання реалізованих змін в елементах конфігурації після ідентифікації, а також з аналізу вхідних компонентів конфігурації.
Облік статусу або стану конфігурації ПЗ — комплекс заходів для визначення ступеня зміни конфігурації, а також правильності внесених змін у систему при супроводі. Інформація і кількісні показники накопичуються у відповідній БД і використовуються при складанні звітності, оцінюванні якості і виконанні процесів життєвого циклу.
Аудит конфігурації — це діяльність, що виконується для оцінки відповідності продукту і процесів стандартам, інструкціям, планам і процедурам. Аудит визначає ступінь задоволення конфігурації функціональним і фізичним (апаратним) характеристикам системи.
Керування версіями ПЗ — це відстеження наявної версії компонентів конфігурації; складання компонентів; створення нових версій системи на основі існуючих шляхом внесення змін у конфігурацію; узгодження версії продукту з вимогами і проведеними змінами на процесах ЖЦ; забезпечення оперативного доступу до інформації про елементи конфігурації і системи, до яких вони належать. Дане керування містить у собі такі основні поняття.
Базис (baseline) — формально позначений набір елементів ПЗ, зафіксований на процесах життєвого циклу.
Бібліотека ПЗ — колекція об'єктів ПЗ і документації, призначена для полегшення процесу розроблення, використання і супроводження.
Складання ПЗ — об'єднання коректних елементів і конфігураційних даних у єдину виконувану програму.
Керування інженерією програмного забезпечення Керування інженерією ПЗ (Software Engineering Management)Лаврищева К. М. «Програмна інженерія» http://www.programsfactory.univ.kiev.ua/content/books/2/30 — керування роботами команди розробників ПЗ у процесі виконання плану проєкту, визначення критеріїв ефективності роботи цієї команди й оцінка процесів і продуктів проєкту з використанням загальних методів планування і контролю робіт.
Як будь-яке керування, воно полягає у плануванні, координації, контролі, вимірі й обліку виконаних робіт у процесі розроблення програмного проєкту. Координацію людських, фінансових і технічних ресурсів виконує менеджер проєкту аналогічно до того, як це робиться в технічних проєктах. У його обов'язки входить дотримання запланованих бюджетних і часових характеристик і обмежень, стандартів і сформульованих вимог.
Загальні питання керування проєктом містяться в ядрі знань PMBOK , а також у стандарті ISO/IEC 12207 — Software life cycle processes, де керування проєктом розглядається як організаційний процес ЖЦ.
Область знань «Керування інженерією ПЗ (Software Engineering Management)» складається з таких розділів:
організаційне керування (Organizational Management), керування процесом/проєктом (Process/Project Management), інженерія вимірювання ПЗ (Software Engineering Measurement).
Організаційне керування — це планування і складання графіка робіт, підбір і керування персоналом, контроль виконання й оцінка вартості робіт згідно з прийнятими стандартами і договорами з замовником. Головним об'єктом організаційного керування проєктом є персонал (навчання, мотивація й ін.), комунікації між співробітниками (зустрічі, презентації й ін.), а також попередження й усунення ризику невиконання проєкту. Для керування проєктом створюється спеціальна структура колективу. Фахівці розподіляються за видами робіт і розв'язують задачі проєкту під керуванням менеджера з урахуванням заданої вартості і термінів розробки. Для реалізації задач проєкту підбираються необхідні програмні, інструментальні й апаратні засоби.
Керування проєктом/процесом — це складання плану проєкту, побудова графіків робіт (мережних або часових діаграм) з урахуванням наявних ресурсів, розподіл персоналу за видами робіт у проєкті, виходячи з заданих термінів і вартості їх виконання. Для ефективного керування проєктом проводиться аналіз фінансової, технічної, операційної і соціальної політики організації-розробника для вибору правильної стратегії виконання робіт і контролю плану, а також проміжних продуктів (проєктних рішень, діаграм UML, алгоритмів і ін.).
У задачі керування проєктом входять також уточнення вимог, перевірка їх відповідності заданим специфікаціям характеристик якості, а також верифікація функцій проєкту. Процес керування базується на планових термінах, що відображені мережними діаграмами PERT (Program Evaluation and Review Technique), СРМ (Critical Path Method). У них указуються роботи, зв'язки між ними і час виконання.
На сьогоднішній день найбільш поширена мережна діаграма PERT — граф, у вершинах якого розміщуються роботи, а дуги задають взаємні зв'язки між цими роботами. Інший тип мережної діаграми — СРМ — є становим. У його вершинах указують події, а роботи задають лініями між двома вузлами-подіями. Очікуваний час виконання робіт за допомогою мережних діаграм оцінюється середнім ваговим значенням трьох оцінок: оптимістичної, песимістичної й очікуваної, тобто імовірнісної. Ці оцінки надають експерти, що враховують обсяги виконаної роботи і відведений на неї час.
Коректно складений план забезпечує виконання вимог і цілей проєкту. Контроль здійснюється при виконанні і внесенні змін у проєкт з урахуванням ризиків і прийнятих рішень щодо їх мінімізації.
Під ризиком розуміють імовірність виникнення несприятливих обставин, що можуть негативно вплинути на керування розробкою (наприклад, звільнення співробітника і відсутність заміни для продовження робіт і ін.). При складанні плану проєкту проводиться ідентифікація й аналіз ризику, планування непередбачених ситуацій щодо ризиків. Запобігання ризику полягає у виконанні дій, що знімають ризик (наприклад, збільшення часу розробки й ін.). Причиною появи ризику може бути реорганізація проєкту, БД або транзакцій, а також помилки при виконанні ПЗ.
Інженерія вимірювання ПЗ проводиться з метою визначення окремих характеристик продуктів і процесів (наприклад, кількість рядків у продукті, помилок у специфікаціях тощо). Попередньо проводяться роботи з вибору метрик процесів і продуктів з урахуванням обставин, що впливають на вимірювання характеристик програмного продукту.
Інженерії вимірювання — удосконалювання процесів керування проєктом; оцінювання часових витрат і вартості ПЗ, їх регулювання; визначення категорій ризиків і відстеження чинників для регулярного розрахунку ймовірностей їх виникнення; перевірка заданих у вимогах показників якості окремих продуктів і проєкту в цілому.
Проведення різного роду вимірювань — важливий принцип будь-якої інженерної діяльності. У програмному проєкті результати вимірювань необхідні замовнику і споживачу для встановлення правильності реалізації проєкту. Без вимірювань в інженерії ПЗ процес керування стає неефективним і перетворюється в самоціль. Прикладне (систематичне) програмування До методів систематичного програмування відносять такі методи:
— структурний;
— об'єктно-орієнтований;
— UML-метод;
— компонентний;
— аспектно-орієнтований;
— генерувальний;
— сервісний;
— агентний й ін.