Практичне заняття №2

 

Тема:  Використання метрик коду для аналізу якості програмного забезпечення.

 

Мета: Використовуючи можливості сучасних систем розробки, проаналізувати вихідний код програми з використанням метрик. Скласти програму для розв’язування системи лінійних рівнянь використовуючи симплекс метод. Описати метрики коду для аналізу якості програмного забезпечення.

 

Постановки задачі:

 

Розробники повинні мати зворотній зв'язок про якість коду відразу після коду написано.

Метрики коду забезпечують зворотний зв'язок з розробниками на наступні фактори:

1.        Кількість рядків коду.

Цей показник є найвідомішим через його некоректне використання. Тому використовувати його треба обережно, в ідеалі тільки для інформації; тобто щоб побачити, наскільки об’ємним є клас або метод.

2.        Індекс складності внесення змін в систему (супроводу): цей показник обчислюється за допомогою формули:

 

Індекс = 171 - 5,2 * log2 (Холстед Том) - 0,23 * (ціклічна складність) - 16,2 * log2 (рядків коду).

 

Діапазон значень індексу супроводу становить від 0 до 100, де 0 це код, що є найменш підтриманим, а 100 - абсолютно підтриманий код.

Ціклічна складність: це значення оцінок, для кожної частини коду.

 

3.       Глибина успадкування: це число являє собою кількість типів, які знаходяться вище типу в дереві успадкування. Ця величина вимірюється від об'єкта класу, який знаходиться на рівні 0.

Хід роботи

1)        Завантажити та встановити програмне забезпечення  для розв’язування системи лінійних рівнянь.

2)       Скласти програму розв’язування  системи лінійних рівнянь відповідно до варіанту.

3)       Виконати обчислення метрик коду для усього рішення.

4)       Проаналізувати отримані результати, ідентифікувати проблемні ділянки коду, що потребують рефакторингу.

5)        Виконати рефакторинг для покращення значень метрик.

6)        Створити порівняльний звіт (метрики до проведення рефакторингу і після).

7)        Оволодіти теоретичним підґрунтям на основі якого виконується обчислення метрик.

8)       Оформити звіт.

 

Теоретичні відомості

Розглянемо системи вигляду

                    

 

Її матричний вигляд   АХ=С.                                            

 

Тут А – {[],(i,j=)} - матриця коефіцієнтів системи,

 

С= ,     X= - вектори-стовпці.

 

Методи чисельного розв’язання систем лінійних алгебраїчних рівнянь (СЛАР) поділяються на точні і наближені. Метод вважають точним, якщо, нехтуючи похибками округлення, він дає точний результат після виконання певної кількості обчислювальних операцій. Математичні пакети прикладних програм для ПЕОМ містять стандартні процедури розв’язання СЛАР такими поширеними точними методами, як метод Гаусса. До наближених методів розв’язання СЛАР відносять метод простої ітерації та метод Зейделя. Вони дозволяють отримати послідовність  наближень до розв’язку , таку, що .

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

Метод простої ітерації

Розглянемо СЛАР у матричному вигляді (1.7) (діагональні коефіцієнти aii не дорівнюють нулю для всіх i). Приведемо її до вигляду X=BX+D, де B=[bij] - квадратна матриця порядку n:

         .

 

При цьому СЛАР набуде вигляду

 

        

 

Взявши довільне початкове наближення , будуємо ітераційний процес за формулою   (k=1,2,…).

 Метод Зейделя

Ітераційний процес Зейделя відрізняється від методу простої ітерації тим, що при розв’язуванні систем вигляду X=BX+D обчислення наступного наближеного значення xi при 1<i<n використовується при обчисленні раніше невідомих наближених значень x1,x2,…,xi-1.

Розглянемо тепер систему AX=C (1.7) з n рівнянь із n невідомими, як і раніше припускаючи, що діагональні коефіцієнти aii не дорівнюють нулю для всіх i. Перетворимо вихідну систему вигляду AX=C до вигляду X=BX+D, де B=[bij] - квадратна матриця порядку n:

         .

У цьому випадку ітераційний процес методу Зейделя має вигляд

        

 

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

тобто коли наближені розв’язки  і   стануть досить близькими і  Величина ∆ пов'язана з точністю ε розв’язання системи таким співвідношенням: , де - норма матриці з коефіцієнтів при невідомих у правих частинах рівнянь перетвореної системи: X=BX+D. Норма матриці може бути визначена по-різному, наприклад, як  або

 

Варіанти прикладів:

 

1.

2.

3.

4.

5.

6.

7.

8.

9.

 

 

10.

11.

12.

13.

14.

 

 

15.

16.

17.

18.

19.

 

 

20.

 

Питання для самоконтролю:

1.  Навести методи доведення програм.

2.  Назвіть формальні методи перевірки правильності програм.

3.  Назвіть основні задачі процесу валідації програм.

4.  Порівняйте задачі процесів верифікації і валідації програм.

5.  У чому відмінність верифікації і валідації?

6.  Виділити основні характеристики, що є спільними для всіх моделей якості.