Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornye_TSPP_2.doc
Скачиваний:
17
Добавлен:
07.06.2015
Размер:
1.44 Mб
Скачать

Метрики стилістики й зрозумілості програм. Метрика рівня коментованості програм

Найбільш простою метрикою стилістики й зрозумілості програм є оцінка рівня коментованості програми F:

F=Nком/Nстр, (5)

де Nком - кількість коментарів у програмі;

Nстр - кількість рядків або операторів вихідного тексту.

Таким чином, метрика F відбиває насиченість програми коментарями.

Виходячи із практичного досвіду прийнято вважати, що F>=0.1, тобто на кожні десять рядків програми повинен доводитися мінімум один коментар.

Більше вдалий варіант, коли вся програма розбивається на n рівних сегментів і для кожного з них визначається Fi:

Fi = sign (Nком/Nстр - 0.1),

при цьому

n

F=Сума(Fi).

i=1

Рівень коментованості програми вважається нормальним, якщо виконується умова: F=n. У противному випадку який-небудь фрагмент програми доповнюється коментарями до номінального рівня.

Метрики Холстеда

Наступні п'ять характеристик є продовженням метрики Холстеда.

1. Для виміру теоретичної довжини програми N^М. Холстед уводить апроксимуючу формулу:

N^ = n1*log2(n1) + n2*log2(n2), (6)

де n1 - словник операторів;

n2 - словник операндів програми.

М. Холстед затверджує, що для стилістично коректних програм відхилення в оцінці теоретичної довжини N^ від реальної N не перевищує 10%.

На практиці N і N^ часто істотно розрізняються.

2. Іншою характеристикою, що належить до метрик коректності програм, по М. Холстеду, є рівень якості програмування L (рівень програми):

L=V*/V, (7)

де V і V* визначається відповідно вираженнями (2) і (3).

Вихідним для введення цієї характеристики є припущення про те, що при зниженні стилістичної якості програмування зменшується змістовне навантаження на кожний компонент програми й, як наслідок, розширюється обсяг реалізації вихідного алгоритму. З огляду на це, можна оцінити якість програмування на підставі ступеня розширення тексту щодо потенційного обсягу V*. Очевидно, для ідеальної програми L=1, а для реальної - завжди L<1.

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

L^ = 2*n2 / (n1*N2).

4. Маючи у своєму розпорядженні характеристику L^, Холстед уводить характеристику I, що розглядає як інтелектуальний зміст конкретного алгоритму, інваріантне стосовно використовуваних мов реалізації:

I = L^ * V. (8)

На наш погляд, та й на думку самого автора, термін інтелектуальність не зовсім удала. Перетворивши вираження (8) з обліком (7), одержуємо

I = L^V = LV = V*V/V = V*.

Еквівалентність I і V* свідчить про те, що ми маємо справу з характеристикою інформативності програми.

Введення характеристики I дозволяє визначити розумові витрати на створення програми. Процес створення програми умовно можна представити як ряд операцій:

1) осмислення пропозиції відомого алгоритму;

2) запис пропозиції алгоритму в термінах використовуваної мови програмування, тобто пошук у словнику мови відповідної інструкції, її значеннєве наповнення й запис.

Використовуючи цю формалізацію в методиці Холстеда, можна сказати, що написання програми по заздалегідь відомому алгоритмі є N^-кратна вибірка операторів і операндів зі словника програми n, причому число порівнянь (за аналогією з алгоритмами сортування) складе log2(n).

Якщо врахувати, що кожна вибірка-порівняння містить, у свою чергу, ряд уявних елементарних рішень, то можна поставити у відповідність змістовному навантаженню кожної конструкції програми складність і число цих елементарних рішень. Кількісно це можна характеризувати за допомогою характеристики L, оскільки 1/L має сенс розглядати як середній коефіцієнт складності, що впливає на швидкість вибірки для даної програми. Тоді оцінка необхідних інтелектуальних зусиль за написанням програми може бути обмірювана як

E = N^ * log2(n/L). (9)

Таким чином, E характеризує число необхідних елементарних рішень при написанні програми.

Однак варто помітити, що E адекватно характеризує лише початкові зусилля за написанням програм, оскільки при побудові E не враховуються відладочні роботи, які вимагають інтелектуальних витрат іншого характеру.

Суть інтерпретації цієї характеристики складається в оцінці не витрат на розробку програми, а витрат на сприйняття готової програми. При цьому замість теоретичної довжини програми N^ використовується її реальна довжина:

E' = N * log2(n/L).

Характеристика E' уведена виходячи мз припущення, що інтелектуальні зусилля на написання й сприйняття програми дуже близькі по своїй природі. Однак якщо при написанні програми стилістичні погрішності в тексті практично не повинні відбиватися на інтелектуальній трудомісткості процесу, то при спробі зрозуміти таку програму їхня присутність може привести до серйозних ускладнень. Ця посилка досить добре погодиться з нашими виводами щодо взаємозв'язку N і N^, викладеними вище.

Перетворивши формулу (9) з урахуванням виражень (2) і (7), одержуємо

E = V * V / V*.

Таке подання E', а відповідно й E, тому що E=E', наочно ілюструє доцільність розбивки програм на окремі модулі, оскільки інтелектуальні витрати виявляються пропорційними квадрату обсягу програми, що завжди більше суми квадратів обсягів окремих модулів.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]