Емпіричні методи досліджень відіграють «впливову» роль в інженерії програмного забезпечення і їх застосування складають одну з інженерій - емпіричну інженерію програмного забезпечення.
На відміну від прямої та оберненої інженерії мста емпіричної інженерії - не розробка або переробка програмного забезпечення, а здобуття знань про програмне забезпечення. Тому її основу складають два кола методів та засобів. Перше пов'язане із збиранням інформації щодо властивостей програмного забезпечення. Переважно це робиться шляхом застосування вимірювань. Друге складають методи та засоби обробки нагромадженої інформації і здобуття знань стосовно програмного забезпечення, що досліджується.
Головним методом досліджень програмного забезпечення є вимірювання. Для контролю процесів, продуктів та ресурсі в життєвого циклу програмного забезпечення слід використовувати величини характеризуючи їх властивості, що називаються метриками.
Величина - це певна властивість предмета, з якою можна зіставити значення. Для синтезу величини варто визначити властивість (семантику величини), систему значень (шкалу) та спосіб зіставлення значень з величиною.
У теорії вимірювання виділяють три основні шкали вимірювань - номінальну, порядкову і кількісну. Номінальна (класифікаційна) шкала включає значення, що проявляє себе лише у відношенні еквівалентності або може бути зіставлена з властивістю предмета (не упорядкованих один стосовно іншого). Наприклад, можна зіставити з вихідним текстом програми величину «мова програмування», значенням якої може бути назва однієї з мов (наприклад, «С», «С++», «Pascal», «Java» тощо). Такий же тип має шкала класифікування призначення модулів програмного забезпечення (наприклад, «Бази даних», «Математичні пакети», «Операційні системи» тощо). До номінальних величин застосовується тільки операція перевірки на еквівалентність. Порядкова (ординальна) шкала спостерігає за упорядкуванням одного значення стосовно іншого, до яких належать операції порівняння. Порядкову пікапу можна задати для більшості експертних оцінок, наприклад, оцінювання читабельності тексту програм - «незадовільно», «задовільно», «добре», «відмінно» або для оцінювання рівня інкапсуляції програмних компонентів - «лексичний», «операторний», «процедурний», «класний», «модульний». Кількісна шкала включає в себе значення, що проявили себе стосовно еквівалентності, порядку і адекватності. Такі величини дають змогу виковувати адекватні і мультиплікативні операції над значеннями (віднімання, множення, ділення). До них належать, наприклад, такі кількість рядків коду, складання коментарю, оцінювання трудозатрат на створення коду.
Очевидно, що велику цінність являють собою кількісні (адитивні) величини, оскільки вони не тільки відображають властивість програмного забезпечення, які можна використовувати для обробки і аналізу, а й мають більш повиний набір операцій над значеннями. Однак для використання величини з більш високою інкалою вимірювань слід мати достатні знання про характер відношень між цими значеннями.
Як правило, значущу шкалу вдається досить просто задати для величин, маючи вузький, добре інтерпретований зміст. Очевидно, що перехід від номінальної шкали до порядкової і від порядкової до кількісної потребує підвищення знань про характер відношень між значеннями величин. Ці знання мають імперичну природу і з'являються шляхом досвідченого виявлення залежно від значення.
Отримане значення величини, виявлене стосовно еквівалентності, зводиться до завдання класифікації стану об'єкта вимірювання, що визначається сукупністю ознак, значення яких дають змогу ідентифікувати кожен стан. Наприклад, під час визначення мови програмування, яку використано для написання програмного модуля («с», «cpp», «h», «pas», «ada», «htm»). Як датчик ознаки має виступати прилад, що виділяє розширення з імені файла. Вирішальний пристрій має реалізувати виявлення значень на основі правил виду: «іf», «розширення» = «.pas» or «.dpr», zen значення = «Pascal». Для тримання значення номінальної величини достатньо, щоб вибрані ознаки також мали властивості еквівалентності.
Для величин, які виявили себе стосовно адитивності, значення дорівнює числовій оцінці сумарної виміряної величини Nxe, що виникла в результаті складання порівнюваних однорідних величин, і має дорівнювати сумі числових оцінок цих порівнюваних, а сума іменованих чисел xNj відображає порівняння, що повинне дорівнювати іменному числу xNe відображаючи сумарну величину:
; ,
тоді
і qx =qxі при будь-якому i,
де qx- значення величини, що має числове значення 1.
Наявність властивості адитивності у величині дає змогу використовувати для визначення значення міру, яка забезпечує відновлюваність величини заданого розміру.
Оскільки тексти програм мають дискретну природу, то для визначення значень адитивності величини необхідно мати одиничну міру, що дорівнює кванту величини і пристрій для додавання міри та рахунку квантів. Наприклад, під час вимірювання довжини програми, як кількісна міра може вважатися рядок, а як вимірювальний пристрій - сканер тексту, підраховуючи кількість рядків,
У випадку номінальних і порядкових величин значення виявляється певною функцією від показників, які також є величинами:
,
де V- номінальна чи порядкова величина; v1 ....vn - величини показників.
Оскільки властивості номінальних і порядкових величин не задовольняють вимоги вимірювань, то для реалізації процесу вимірювання як показники, можна вважати лише адитивні величини.
Основними частинами статистичного аналізу стосовно програмного забезпечення можна вважати первинний статистичний аналіз, кореляційний аналіз та регресійний аналіз (рис. 5.8).
Первинний статистичний аналіз - не визначення закону розподілу випадкової величини. На етапі первинного статистичного аналізу досліджуються вхідні статистичні дані. У ході дослідження спочатку виявляється графічний вигляд (гістограма) закону розподілу. Для уточнення законів розподілу визначаються статистичні характеристики, такі як: математичне сподівання, середнє квадратичне відхилення, коефіцієнти асиметрії та ексцесу. На основі значень математичного сподівання проводиться вилучення аномальних явищ (відхилень), при якому за допомогою квантилів розподілу Стьюдента визначаються «грубі» значення, тобто такі, що не потрапляють під заданий закон розподілу і значно віддалені від математичного сподівання. Після видалення аномальних явищ обчислюються коефіцієнти асиметрії та ексцесу.
Рис. 5.8. Схема використання статистичного аналізу
Далі всі статистичні характеристики обчислюються у зсуненому та в незсуненому виглядах. Зсунені дані являють собою обчислені результати вимірів, незсунені - теоретичні значення, що повинні приймати характеристики за «нормальності» розподілу. Потім проводиться інтервальне оцінювання параметрів. Для всіх отриманих значень, що пройшли попередній етап, проводиться порівняння коефіцієнтів асиметрії та ексцесу із заданим теоретично. Після цього на основі гістограм та висновків аналізу числових характеристик робиться висновок про закон розподілу величини.
На цьому етапі дослідник програмного забезпечення може отримати декілька результатів для подальшого використання.
Кореляційний аналіз пар метрик проводиться таким чином. Спочатку, за визначеними раніше законами розподілу, всі досліджувані значення класифікуються на ті, що мають нормальний розподіл і ті, що його не мають. Для пар метрик, що мають нормальний закон розподілу, проводиться просте визначення коефіцієнта кореляції та його оцінювання. Якщо коефіцієнт кореляції дорівнює нулю, ніякого зв'язку в парі немає. У разі знаходження коефіцієнта кореляції між мінус 1 і плюс 1, наявний лінійний регресійний зв'язок. Якщо ж коефіцієнт кореляції дорівнює 1, то має місце функціональний зв'язок. Далі проводиться визначення значущості коефіцієнта кореляції (висувається гіпотеза, що коефіцієнт кореляції дорівнює 0), при якому використовується t - тест на основі статистичної характеристики, яка має t розподіл Стьюдента. Якщо це значення значущості менше, ніж задане табличне, ця пара відсіюється з подальших досліджень. У разі значущості проводиться дослідження на довірчі інтервали. Під час потрапляння коефіцієнта в довірчі інтервали можна зробити висновок про те, що досліджувані величини мають між собою лінійну регресійну залежність. В іншому випадку вони відсіюються.
Для пар досліджуваних величин, які не мають нормального закону розподілу, проводиться парна рангова кореляція. Суть парної рангової кореляції полягає в порівнянні не самих значень величин чи їх статистичних характеристик, а рангів, тобто номерів досліджуваних величин у відповідних матрицях (наборах статистичних даних). Визначається парна рангова кореляція методом обчислення коефіцієнта Спірмена чи Кендала. Якщо значення коефіцієнта виявилось рівним 0. то робиться висновок про відсутність кореляції і пара досліджуваних величин «відкидається». Якщо коефіцієнт кореляції набуває значення 1, чому відповідає повний збіг коефіцієнтів, то робиться висновок про прямо пропорційну залежність (тобто лінійну), якщо мінус 1, то робиться висновок про обернено пропорційну залежність (тобто також лінійну). Якщо ж коефіцієнт кореляції набуває іншого значення, то далі його перевіряють на значущість, перевіряючи гіпотезу, що коефіцієнт дорівнює 0.
Отже, результатом цього етапу с відсіювання незалежних між собою пар досліджуваних величин та визначення за можливістю виду залежності для інших пар.
Регрессійний аналіз залежних величин - останній етап у дослідженні залежностей. Спочатку проводиться ідентифікація регресії. Вона передбачає як графічну побудову, так і аналітичні дослідження. Рис. 5.9. Кореляційні поля: а - вписується в коло; б- вписується в еліпс (спадного вигляду); в - вписується в еліпс (вихідного вигляду); г- складної конфігурації
Графічна побудова розпочинається з визначення кореляційного поля. Приклади кореляційних полів показано на рис. 5.9.
Рис. 5.9. Кореляційні поля: а - вписується в коло; б- вписується в еліпс (спадного вигляду); в - вписується в еліпс (вихідного вигляду); г- складної конфігурації
Якщо кореляційне поле мас форму еліпса, робиться висновок про лінійний регресійний зв'язок. Далі проводиться побудова лінійної peгрeciї і її оцінювання. Якщо побудовані точки кореляційного поля потрапляють у коло, то робиться висновок про відсутність залежності. Якщо ж кореляційне поле не вписується в коло чи еліпс, а має інший вигляд, то робиться висновок про нелінійну залежність у лінії регресії. Потім будуються і аналізуються найімовірніші наближені лінії регресії. Серед них вибирається найточніша шляхом обчислення відхилення значень залежної Змінної Висновок про найточніше припущення робиться для функції, у якої відхилення найменше. Для нелінійної залежності проводиться лінеаризація коефіцієнтів, тобто зведення функції до лінійного вигляду.
Завершальним етапом є довірче оцінювання ліній регресій [8]. Довірче оцінювання регресії відбувається в декілька етапів. Першим етаном є визначення коефіцієнта детермінації, який показує ступінь залежності між величинами. Далі проводиться оцінювання відхилення окремих значень залежної величини від емпіричної регресії шляхом порівняння практичних та теоретичних значень залежної змінної. Останнім кроком є побудова довірчого інтервалу лінії регресії.
Якщо пара пройшла всі етапи і не була відсіяною, робиться висновок, що одна метрика залежить певним чином від іншої з силою, що показує коефіцієнт детермінації, а вигляд залежності визначає лінія регресії.
Для реалізації емпіричних методів в інженерії програмного забезпечення створюються спеціальні середовища - Computer Aided Empirical Software Engineering (CAESE) (рис. 5.10). Як видно, CAESE забезпечує вивчення проблем, пов'язаних з програмним забезпеченням на основі емпіричних даних, отриманих шляхом проведення експериментів.
Рис. 5.10 Структура САЕSЕ
Взаємозв'язок прямої і оберненої інженерії у вигляді програмного забезпечення показано на рис. 5.11. Видно, що оберненій інженерії відводиться інформаційна роль, наприклад, для формування депозитарію для інформації про програмне забезпечення.
Рис. 5.11. Обіг програмного забезпечення
На основі взаємодії обох інженерій будується методологія розробки і супроводу програмного забезпечення. Суть її полягає в тому, що з наявного програмного забезпечення застосуванням методів оберненої інженерії будується репозитарій проектних вирішень домена, відтак на основі репозитарію методами прямої інженерії створюються нові застосування.