- •Характер кризи програмного забезпечення.
- •Характеристика змісту поняття «срібна пуля».
- •Роль і значення моделювання життєвого циклу.
- •4. Еволюційні моделі життєвого циклу.
- •Сутність програмної еволюції.
- •Складові досліджень програмної еволюції.
- •Супроводження програмного забезпечення, як осередок еволюції.
- •Складові супроводження.
- •Сутність, процеси та проблеми супроводження.
- •Межі та інтерфейси супроводження.
- •Модель процесів супроводження. Інженерія еволюції.
- •Методи еволюції программного забезпечення.
- •Базові поняття еволюції.
- •Властивості, механізми та наслідки еволюції.
- •Еволюція і програмне забезпечення – родові терміни.
- •Програми як моделі. Типи програм.
- •Теорія еволюції програмного забезпечення.
- •Закони Лемана.
- •Аналіз еволюції програмного забезпечення.
- •Моделювання еволюційних процесів.
- •Методи та засоби реалізації еволюційних процесів.
- •Еволюція відкритого версійного программного забезпечення.
- •Індекс супроводжуваності.
- •Модель зрілості супроводження програмного забезпечення (sммм).
- •Характеристика росту розміру та складності програмного забезпечення.
- •Розрахунок витрат на еволюцію програмного забезпечення.
- •Метрики супроводження програмного забезпечення.
- •Зворотна інженерія та ре інженерія програмного забезпечення.
- •Версійність програмного забезпечення.
- •Гнучкі технології.
Закони Лемана.
Закон 1:
Безперервні зміни (Continuing Changes) – Е-тип систем повинен постійно адаптуватись(1974 рік).
Згідно з цим законом функціональне наповнення програм Е-типу має поступово збільшуватись, щоб підтримувати задоволеність користувача.
Закон 2:
Зростання складності (Increasing Complexity) – коли Е-типу програми еволюціонують, їх складність зростає не зважаючи на зусилля щодо зменшення(1974 рік).
Закон 3:
Саморегуляція (Self-Regulation) – еволюційний процес Е-типу систем саморегулятивний(1974 рік).
Закон 4:
Організаційна стабільність (Conservation of organizational stability) – середній ефект глобальних дій Е-типу систем, що еволюціонують(1980 рік)
З версіями зростає складність ПЗ, зростає вірогідність дефектів. Мета змін – запобігти дефектам і залишити програму такою, що відповідає вимогам.
Закон 5:
Збереження сімейності(Conservation of Familiarity) – усереднений контент Е-типу систем, що еволюціонують, залишається незмінним протягом життєвого циклу(1980 рік)
Закон 6:
Безперервний ріст(Continuing Growth) – контент Е-типу систем, що еволюціонують, повинен постійно зростати, щоб відповідати вимогам замовника(1980 рік)
Закон 7:
Погіршення якості(Declining Quality) – Замовник повинен розуміти, що якість Е-типу систем, що еволюціонує, може погіршитись(1996 рік)
Закон 8:
Система із зворотнім зв’язком(Feed-back system) – еволюційні процеси в Е-типі систем багаторівневі, багатоциклічні, (-) зі зворотнім зв’язком(1974 – 1995 рр.)
Аналіз еволюції програмного забезпечення.
Феномен еволюції програмного забезпечення спостерігався ще в 1970-х, коли були розроблені перші великі програмні системи. Еволюція програмного забезпечення - це популярний термін в даний час і загальноприйнята область дослідженя в розробці програмного забезпечення. Існують конференції і семінари, які присвячені цій темі, також роботи з еволюції програмного забезпечення часто з'являються і в журналах. У 2004 ACM/IEEE Software Engineering Curriculum Guidelines еволюція програмного забезпечення представлена у списку, як одна з десяти ключових областей програмного забезпечення інженерної освіти. Також існує кілька дослідницьких груп і міжнародних мереж, що працюють над еволюцією програмного забезпечення. Також існують науково-дослідницькі роботи і у під областях еволюції програмного забезпечення, що охоплюють теоретичні дослідження, емпіричні дослідження, інструменти, візуалізацію і так далі.
В даний час, еволюція програмного забезпечення стала дуже активною і шанованою галуззю досліджень в розробці програмного забезпечення.
Терміни еволюція програмного забезпечення та підтримка програмного забезпечення часто використовуються як синоніми.
Існують чотири наступні категорії підтримки програмного забезпечення:
Досконала підтримка – це будь-яка модифікація програмного продукту після його створення для підвищення продуктивності і зручності в експлуатації;
Коригуюча підтримка – це швидка модифікація програмного продукту, що виконується після його створення, щоб виправити недоліки;
Адаптивна підтримка – це модифікація програмного продукту після створення для збереження працездатності комп’ютерної програми у ході змін або мінливих умовах;
Профілактична підтримка – це супровід, що відноситься до змін програмного забезпечення з метою запобігання проблем до їх виникнення.
Важливою темою в галузі дослідження еволюції програмного забезпечення є зворотне проектування. Ця діяльність необхідна, коли є потрібно розібратися в архітектурі або поведінці великого системного програмного забезпечення, в той час як тільки вихідний код є потрібною інформацією.
Однією з головних труднощів еволюції програмного забезпечення є те, що всі артефакти, які виробляються і використовуються протягом усього життєвого циклу програмного забезпечення, можуть бути змінені, починаючи з ранньої стадії проектування. Цей факт автоматично породжує безліч під дисциплін в галузі досліджень еволюції програмного забезпечення, деякі з яких перераховані нижче:
Еволюція вимог. Основні завдання вимог інженерії - визначення мети програмної системи, яка повинна бути реалізована. Вимоги розвиваються тому, що вимоги інженерів і користувачів не можуть передбачити всі можливі застосування системи, бо не всі потреби і цілі можуть бути прийняті до уваги перед розробкою програмного забезпечення.
Еволюція архітектури. Базується на описі вимог до програмного забезпечення, загальної архітектури програмного забезпечення та інше.
Еволюція даних. В інформаційних системах та інших програмних системах важливо мати чіткий і точний опис схем баз даних.
Еволюція часу виконання. Багато комерційних програмних систем, які розкручені великими компаніями повинні бути постійно доступні. Зупинка системи програмного забезпечення, щоб зробити зміни не можлива. Таким чином, необхідні методи для зміни програмного забезпечення в той час як воно продовжує працювати.
Сервісно-орієнтована архітектура. Забезпечує нову парадигму, користувальницько-орієнтованого підходу до програмного забезпечення. Програмне забезпечення розроблене з точки зору користувачів, тобто повинна бути можливість легко додавати, видаляти або адаптувати послуги до їхніх потреб. Хоча такий підхід має багато спільного з компонентно-орієнтованим підходом.
Еволюція мови. При звертанні уваги на мову (програмування, моделювання, мову формальних специфікацій), у багатьох науково-дослідних напрямків з’являлося питання про спільну еволюцію між програмним забезпеченням і мовою. Обидва, підлягають розвитку, але і з різною швидкістю. Також полягає завдання у забезпеченні більшої і кращої підтримки еволюції в контексті багатомовної системи програмного забезпечення та в поліпшенні конструкції мов, щоб зробити їх більш стійкими до еволюції.
