- •Інженерні основи програмного забезпечення
- •Поняття програмна інженерія. Що вивчає дисципліна «Програмна інженерія»?
- •Поняття системотехніка, бізнес-реінжиніринг.
- •Історія виникнення програмної інженерії.
- •Еволюційна модель розробки програмного забезпечення. Переваги та недоліки.
- •Формальна модель розробки програмного забезпечення. Переваги та недоліки.
- •Модель розробки програмного забезпечення на основі раніше створених компонентів. Переваги та недоліки.
- •Ітераційні моделі розробки програмного забезпечення. Переваги та недоліки.
- •Модель покрокової розробки програмного забезпечення. Переваги та недоліки.
- •Инструменты тестирования:
- •Мови моделювання програмного забезпечення.
- •Методи структурного аналізу.
- •Інформаційне моделювання Мартіна.
- •Структура та архітектура програмного забезпечення
- •Архітектура програмного забезпечення. Проектування архітектури.
- •Архітектурна модель клієнт-сервер.
- •Архітектурна модель абстрактної машини.
- •Архітектурні моделі управління (виклик-повернення та централізоване).
- •Проблемно-залежні архітектури програмного забезпечення.
- •Архітектура розподілених систем.
- •Багатопроцесорна архітектура програмного забезпечення.
- •Архітектура corba.
- •Моделі об’єктно-орієнтованого проектування програмного забезпечення.
- •Проектування систем реального часу.
- •Проектування з повторним використанням компонентів.
- •Проектування інтерфейсу програмного забезпечення.
- •Документування програмних продуктів.
- •Поняття документація на програмне забезпечення, програмний документ. Типи документації.
- •Організації що публікують стандарти.
- •Типовий набір документації проекту.
- •Основні стандарти розробки програмних систем і програмного забезпечення.
- •Стандарти вимог, архітектури, якості і тестування програмного забезпечення.
- •Стандарти серії гост 34.Ххх та гост 19.Ххх.
- •Процеси за стандартом iso/іec 12207.
- •Процеси за стандартом iso/іec 15288.
- •Поняття вимоги. Етапи формування вимог. Рівні вимог.
- •Які розділи містить звіт про виконану роботу та заявку на розробку програмного забезпечення?
- •Склад і зміст робіт на стадії «Опис програмного забезпечення».
- •Поняття ескізний проект. Склад і зміст робіт на стадії «Ескізний проект».
- •Що описує Технічне завдання (тз). З яких етапів складається розробка тз та на основі якого стандарту?
- •З яких розділів складається технічне завдання?
- •Що описує Технічний проект (тп)? з яких етапів складається розробка технічного проекту?
- •Види забезпечень.
- •Статичні і динамічні методи тестування.
- •Тестування «білої скриньки»
- •Тестування «чорної скриньки».
- •Метод "сірої скриньки".
- •Види тестування.
- •Рівні тестування.
- •Помилки на етапах життєвого циклу програмного забезпечення.
- •Поняття помилки, дефекту та відмови.
- •Класи помилок в програмному забезпеченні.
- •Тест план (Test Plan). Тестовий сценарій (Test Cases). Процедури тестування (Test Procedures). Баг Репорт (Bug Report).
- •Моделі якості та надійності програмних систем
- •Якість програмного забезпечення. Модель якості за рівнями.
- •Показники якості.
- •Атрибути функціональності, надійності та зручності застосування.
- •Атрибути ефективності, супроводу та переносимості.
- •Метрики програмного продукту.
- •Метрики процесу створення продукту та використання.
- •Методи оцінки значень показників якості.
- •Методи управління програмним проектом
- •Поняття надійності програмного забезпечення.
- •Класифікації моделей надійності за Гоєлем.
- •Класифікації моделей надійності за Хетчем.
- •Інженерія надійності програмного забезпечення та її складові.
- •На яких процесах жц здійснюється перевірка надіності?
- •Поняття сертифікація програмного забезпечення. Види сертифікації продукту.
- •Евристична модель надійності.
- •Модель надійності Нельсона.
- •Модель надійності Джелінскі-Моранді.
- •Статистична модель надійності Міллса.
- •Поняття Проект (Project). Менеджмент проекту (Project Management). Масштаб проекту (Project Scope).
- •Головні цілі менеджменту проекту.
- •Процес менеджменту проекту.
- •Модель процесу керування проектом.
- •Учасники проекту з розробки програмного забезпечення.
- •Ролі в групі розробників проекту.
- •Мережні методи планування і керування проектом.
- •Метод критичного шляху – срм.
- •Метод аналізу й оцінки проекту – pert.
- •Види планів організації проекту.
- •Моніторинг проекту.
- •Модель оцінки вартості проекту cocomo.
- •Модель оцінки вартості проекту cocomo іі.
- •Поняття ризику у проекті. Причини ризику в проекті.
- •Види ризиків. Моніторинг і контроль ризиків.
- •Поняття конфігурації. Елементи конфігурації.
- •Поняття супроводу програмного забезпечення. Хто здійснює супровід.
- •Поняття підтримки програмного забезпечення. Структура іт-супроводу.
- •Поняття програмна археологія. Інструменти і методи програмної археології.
Еволюційна модель розробки програмного забезпечення. Переваги та недоліки.
Ця модель заснована на наступній ідеї: розробляється первинна версія програмного продукту, яка передається на випробування користувачам, потім вона допрацьовується з урахуванням думки користувачів, виходить проміжна версія продукту, яка також проходить "випробування користувачем", знову допрацьовується і так кілька разів, поки не буде отриманий необхідний програмний продукт (рис. 3.2). Відмінною рисою даної моделі є те, що процеси специфицирования, розробки та атестації ПЗ виконуються паралельно при постійному обміні інформацією між ними.
Розрізняють два підходи до реалізації еволюційного методу розробки.
1. Підхід пробних розробок. Тут велику роль відіграє постійна робота із замовником (або користувачами) для того, щоб визначити повну систему вимог до ПЗ, необхідну для розробки кінцевої версії продукту. У рамках цього підходу спочатку розробляються ті частини системи, які очевидні або добре специфіковані. Система еволюціонує (допрацьовується) шляхом додавання нових засобів у міру їх пропозиції замовником.
2. Прототипування. Тут метою процесу еволюційної розробки ПЗ є поетапне уточнення вимог замовника і, отже, отримання закінченою специфікації, визначальною розроблювану систему. Прототип * зазвичай будується для експериментування з тією частиною вимог замовника, які сформовані нечітко або з внутрішніми протиріччями.
* Під прототипом зазвичай розуміється діючий програмний модуль, який реалізує окремі функції створюваного ПЗ. - Прим. ред.
Більш докладно підходи до еволюційної розробці розглядаються в розділі 8, де описані різні технології прототипування систем.
Еволюційний підхід часто більш ефективний, ніж підхід, побудований на основі каскадної моделі, особливо якщо вимоги замовника можуть змінюватися в процесі розробки системи. Перевагою процесу створення ПЗ, побудованого на основі еволюційного підходу, є те, що тут специфікація може розроблятися поступово, у міру того як замовник (або користувачі) усвідомлює і сформулює ті завдання, які має вирішувати програмне забезпечення. Разом з тим даний підхід має і деякі недоліки.
1. Більшість етапів процесу створення ПЗ не задокументовані. Менеджерам проекту створення ПЗ необхідно регулярно документально відстежувати виконання робіт. Але якщо система розробляється швидко, то економічно не вигідно документувати кожну версію системи.
2. Система часто виходить погано структурованою. Постійні зміни у вимогах призводять до помилок і упущень в структурі ПЗ. З часом внесення змін до системи стає все більш складним і витратним.
3. Часто потрібні спеціальні засоби і технології розробки ПЗ. Це викликано необхідністю швидкої розробки версій програмного продукту. Але, з іншого боку, це може призвести до несумісності деяких застосовуваних засобів і технологій, що, у свою чергу, вимагає наявності в команді розробників фахівців високого рівня.
Я думаю, що еволюційний підхід найбільш прийнятний для розробки невеликих програмних систем (до 100 000 рядків коду) і систем середнього розміру (до 500 000 рядків коду) з відносно коротким терміном життя. На великих довгоживучих системах надто помітно проявляються недоліки цього підходу. Для таких систем я рекомендую змішаний підхід до створення ПЗ, який увібрав би в себе кращі риси каскадної та еволюційної моделей розробки.
При такому змішаному підході для прояснення "темних місць" у системному специфікації можна використовувати прототипування. Частина системних компонентів, для яких повністю визначені вимоги, може створюватися на основі каскадної моделі. Інші системні компоненти, які важко піддаються специфицированием, наприклад користувальницький інтерфейс, можуть розроблятися з використанням прототипування.
