Чи є якась робота над застосуванням заходів складності Halstead для визначення якості програмного забезпечення?


14

У 1977 році Моріс Говард Холстед представив свої заходи щодо складності програмних систем , які включали вимірювання програмної лексики, довжини програми, обсягу, складності, зусиль та приблизну кількість помилок у модулі. Згідно з Вікіпедією, складність пов'язана з труднощами розуміння програми під час її читання або написання, а зусилля можуть бути переведені на час, необхідний для кодування програми, де Час = (зусилля / 18) секунд.

Вимірювання марно, якщо дані та розрахунки не стосуються певного аспекту розробки програмного забезпечення. Однак я не знайшов жодної роботи, яка б стверджувала, що складність певного значення або вище має тенденцію до статистично значущого збільшення дефектів або взаємозв'язку між труднощами та часом для читання коду (складність N дає середнє витрачене M годин розуміння бази коду) або будь-який аналіз можливості обчислити час після того, як факт корисний для визначення якості (тим більше, що час для запису повинен був бути записаний вже як вимірювання). Мене особливо цікавить оцінка помилок Halstead (яка не згадується у Вікіпедії) - кількість помилок у додатку можна оцінити за Volume / 3000 або Effort ^ (2/3) / 3000.

Я шукаю дві речі:

  • Хтось використовував заходи комплексності програмного забезпечення Halstead в додатку в реальному світі для оцінки якості програмного забезпечення? Якщо так, то як ви їх застосували і чи виявилися вони корисними, достовірними та / або надійними вимірюваннями?
  • Чи є які-небудь академічні дослідження у формі опитувань, аналізів або тематичних досліджень, які обговорюють обгрунтованість (або недійсність) заходів складності Halstead, коли вони застосовуються до якості програмного забезпечення?
  • Чи є які-небудь академічні дослідження у формі опитувань, аналізів або тематичних досліджень, які демонструють використання вихідних ліній коду (SLOC) для обчислення чогось подібного до показників Гальстеда об’ємності, складності, зусиль, часу та помилок? Я б підозрював, що Об'єм може просто відповідати кількості SLOC, а складність може відповідати цикломатичній складності (і, можливо, іншим заходам). Я також добре знаю, що вимірювання зусиль, продуктивності чи часу в SLOC потенційно вводить в оману.

У вас будуть проблеми з пошуку результатів протягом останніх 15 років, оскільки робота з метрикою Галстеда була зроблена більше, як 30-40 років тому, і сильна кореляція з SLOC була виявлена ​​майже одразу. (Це з пам’яті, з розмови нового кандидата кафедри доктора наук в УТ Остін, 1977 р.)
Джон Р. Стром

Дякую за це. Я оновлю це питання і переорієнтую на пошукові роботи сина старші документи.
Томас Оуенс

Відповіді:


5

Microsoft Research зробила певну роботу в цій галузі. Перевірте цю сторінку: http://research.microsoft.com/en-us/people/nachin/ . Хоча Начі та його команда спеціально не ґрунтуються на Галстеді, Начі та його команда провели певне розслідування, використовуючи Холстеда, цикломатичну складність, зміна коду та інші заходи для оцінки відносного ризику та крихкості для внесення змін у області коду. Також є цікавий документ про те, як організаційна ефективність також відіграє велику роль, але це поза темою. :)


Мені доведеться прочитати хоча деякі з них. Безумовно, щось мене цікавить, але мене (принаймні зараз), особливо цікавить Халстед, тому я буду зосередитися на цьому. Я зробив закладки на сайті, щоб я міг прочитати його, коли отримаю ще трохи часу, але ось +1 на даний момент.
Томас Оуенс

Цикломатична складність МакКейба показала, що в реальному коді дуже сильно співвідноситься з необробленою SLOC, до того, що в її обчисленні немає жодного додаткового значення.
Джон Р. Стром

0

Таких досліджень досить багато. Google - ваш ДРУЗЬ.

Показники Галстеда не прихильні, коли було продемонстровано, що всі вони були сильно корельовані з необробленими SLOC (вихідними рядками коду). В цей момент стає простіше виміряти SLOC і зробити це з ним.

Ось результат із Google Книг .


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

1
@Thomas: Справа не в тому, що показники Галстеда "пов'язані" зі SLOC, це те, що вони сильно корелюються. Статистика 102. Скажімо, що Y і X сильно корелюються, це означає, що відношення Y / X є по суті постійним для всіх наборів даних. Коли це так, немає сенсу вимірювати Y, якщо простіше виміряти X, оскільки Y насправді не говорить тобі нічого, чого ти ще не знаєш від X.
Джон Р. Стром

Що має сенс. Показники Галстеда засновані на кількості чітких та сумарних операторів та операндів. Це здоровий глузд, що більш тривала програма матиме більше загальних операторів / операндів і, швидше за все, матиме більше чітких операторів / операндів. Показники обсягу та складності можна отримати за допомогою SLOC замість операторів / операндів. Однак це не стосується дійсності, застосувань та значення (або відсутність сенсу) показників зусиль, часу та помилок. Навіть коли вони обчислюються з SLOC замість операторів / операндів, чи ці показники говорять про щось значиме про систему?
Томас Оуенс

SLOC легше порахувати і, мабуть, корисніше. Оцінки SLOC використовуються декількома методами оцінки витрат, відслідковуються в PSP і TSP, і можуть використовуватися в інших показниках, таких як щільність дефектів. Це, на мій погляд, каже, що підрахунок SLOC може бути кращим, ніж підрахунок операторів / операндів. По-друге, і без відповіді поки що - це обгрунтованість показників зусиль, часу та помилок, незалежно від того, які вимірювання використовуються для їх обчислення. Я погоджуюся, що обчислити їх за допомогою SLOC, можливо, буде краще, але навіть якби я це зробив, вони означали б щось?
Томас Оуенс

@ThomasOwens: Напевно, ні. Якщо зусилля, час і помилки всі сильно співвідносяться з SLOC, то це говорить вам про те, що всі програми заданого розміру займають приблизно однаковий час і зусилля і мають однакову кількість помилок. Перші два - це те, на чому ґрунтується оцінка на основі SLOC (наприклад, COCOMO), і вони нагадують, як вода мокра. Третя насправді вам не допомагає.
Джон Р. Стром

0

Те, що об'єм Гальстеда співвідноситься зі SLOC, цікаво, але обмежено. Основна статистика: лінійна кореляція не є перехідною. X корелює з Y, Y співвідноситься з Z НЕ означає, що X корелює зі Z.


Коли X і Y просто співвідносяться, а Y і Z просто співвідносяться, так, X і Z не обов'язково співвідносяться через відносно високі рівні шуму в перших двох кореляціях. Коли X і Y сильно співвідносяться між собою, а Y і Z сильно корелюються, в них задіяний дуже-дуже мало шуму, і в будь-якому випадку стає великою ймовірністю того, що X і Z виявляться корельованими.
Джон Р. Стром
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.