Метрика програмного забезпечення
Метрика програмного забезпечення (англ. software metric) — це міра, що дозволяє отримати числове значення деяких властивостей програмного забезпечення та його специфікацій. Кількісні методи оцінювання добре показали себе в інших сферах науки, а тому багато теоретиків та практиків в галузі інформаційних технологій, спробували перенести цей підхід в розробку програмного забезпечення. В загальному випадку застосування метрик дозволяє визначити складність розробленого проєкта, або проєкта, що перебуває у розробці, оцінити об'єм робіт, стилістику розроблюваного проєкту і зусилля, витрачені кожним розробником для реалізації того чи іншого рішення, однак метрики можуть служити лише рекомендаційними характеристиками.
Набір метрик складається з:
- порядок зростання (мається на увазі аналіз алгоритмів, в термінах теорії складності обчислень)
- кількість рядків коду
- цикломатична складність
- ООП - метрики коду
- аналіз функціональних точок
- кількість помилок на рядок коду
- ступінь покриття коду тестуванням
- покриття вимог
- кількість класів та інтерфейсів
- метрики від Роберта Сесіль Мартіна. (Software package metrics[en])
- зв'язність (англ. coupling)
- пов'язаність (англ. cohesion)
- час завантаження програми
- час виконання програми
- розмір бінарних файлів
- та інше.
Потенційні недоліки підходу, на які націлена критика:
- Неетичність: стверджується, що неетично зводити оцінку роботи людини до декількох числових параметрів та за ними судити про продуктивності. Менеджер може назначити найталановитішого програміста на дуже важку частину роботи; це не значить, що розробка цієї частини займе найбільше часу та буде зроблено найбільше помилок, через складність роботи. Інший менеджер, що не знає про ці деталі, може вирішити, що програміст зробив свою роботу погано.
- Заміна «управління людьми» на «управління цифрами», які не враховують досвід програмістів та інші якості.
- Спотворення процесу. Процес розробки може бути перекрученим через те, що програмісти знають про метрики та намагаються оптимізувати ці показники, а не свою роботу. Наприклад, якщо кількість рядків вихідного коду є важливим показником, то програмісти зможуть писати неоптимальні рішення, які займають багато місця на екрані. Так, в середовищі програмістів є фразеологізм «індуський код».
- Неточність: нема метрик, які б були одночасно значущими та досить точними. Наприклад, кількість рядків коду — це просто кількість рядків, цей показник не демонструє складність рішення проблеми. Аналіз функціональних точок був розроблений з метою кращого вимірювання складності коду та специфікацій, але він використовує особисті оцінки оцінювача, тому різні люди отримують різні результати.