Поддержка метрик кода с тематическими исследованиями

Мне преимущественно интересно в случае, если исследования метрик кода, связывая удобочитаемость кода для дезертирства сокращения, которые выравнивают по ширине берущую серьезно цикломатическую сложность или некоторую подобную метрику. Википедия имеет этот пример:

Много исследований исследовали корреляцию цикломатической сложности к количеству дефектов, содержавшихся в модуле. Большинство таких исследований находит сильную положительную корреляцию между цикломатической сложностью и дефектами: модули, которые имеют самую высокую сложность, имеют тенденцию также содержать большинство дефектов. Например, исследование 2008 года контролирующего метрику поставщика программного обеспечения Enerjy проанализировало классы JAVA-приложений с открытым исходным кодом и разделило их на два набора на основе того, как обычно отказы были найдены в них. Они нашли сильную корреляцию между цикломатической сложностью и их дефектностью, с классами с объединенной сложностью 11 наличия вероятности того, чтобы быть склонным к отказу всего из 0.28, повысившись до 0,98 для классов со сложностью 74.

Это хорошо, но я надеюсь знать, существует ли больше исследований (или возможно подобных исследований для других метрик, таких как SLOC).

Я также нашел статью в IBM, которая продвигает контролирующие значения CC, но она испытывает недостаток в поддержке тематического исследования, показывающей числам ROI. Затем существует статья Coding Horror о "коде стрелки", который располагает сводку тематического исследования, но не предлагает тематическое исследование (исследования) самостоятельно, ни фактические числа, которые выровняли по ширине заключение:

Исследования показывают корреляцию между цикломатической сложностью программы и ее ошибочной частотой. Низкая цикломатическая сложность способствует понятности программы и указывает, что это поддается модификации в более низком риске, чем более сложная программа. Цикломатическая сложность модуля является также сильным индикатором своей тестируемости.

Конечно, цикломатическая сложность (CC) поможет определить код стрелки, но мне все еще нужны тематические исследования то шоу значения ROI. Например, "организация X включила макс. CC 10 на методах/функциях и уменьшила дефекты 20% в следующем повторении разработки".

Без таких данных трудно заставить управление заботиться. Кто-либо может указать на меня на несколько упорных занятий? Даже просто можно было бы помочь...

1
задан Brent Arias 21 July 2010 в 21:06
поделиться

3 ответа

В данном случае вы получите немного больше от оригинальной статьи, чем от Википедии. Его техническая статья о том, как собирались данные и тому подобное, показывает 95% уровень доверия к выводам.

Вы правы, что это не дает информации о ROI напрямую. По крайней мере, для данного исследования это было бы довольно сложно - например, они использовали проекты с открытым исходным кодом для своих учебных данных, а фактические затраты на проекты с открытым исходным кодом обычно трудно даже оценить, а тем более измерить. В то же время, они использовали то, что я бы счел по крайней мере разумным приближением к истинным данным о рентабельности инвестиций: они искали в системе контроля исходных кодов каждого из своих "учебных" проектов те отметки, которые, как оказалось, были связаны с исправлением ошибок, дефектов и т.д.. Затем они использовали алгоритм наивного Байеса, чтобы найти корреляцию между метриками, которые они использовали, и проблемами, которые были выявлены в коде. Хотя эти результаты, несомненно, могут быть улучшены, мне кажется, что они должны хоть что-то значить.

Стоит также отметить, что те же люди, которые проводили исследование, ведут индекс по большому количеству проектов с открытым исходным кодом. Если бы вы хотели получить больше достоверных данных, вы могли бы сверить их индекс с журналами контроля исходных кодов некоторых из этих проектов, и, вероятно, вы могли бы использовать их данные, чтобы получить больше прямых результатов типа ROI. Одно замечание, однако: их индекс основан на довольно многих метриках исходного кода, а не только на цикломатической сложности, поэтому я не уверен, насколько точно он может рассказать исключительно о CC в отличие от других метрик, на которые они смотрят.

0
ответ дан 2 September 2019 в 22:51
поделиться

"...Мне все еще нужны тематические исследования, показывающие значения ROI."

Почему ROI так сложно?

Вот почему.

Индивидуальная производительность программистов варьируется как минимум на один, а иногда и на два порядка.

http://forums.construx.com/blogs/stevemcc/archive/2008/03/27/productivity-variations-among-software-developers-and-teams-the-origin-of-quot-10x-quot.aspx

Индивидуальная изменчивость превосходит любой другой эффект, который вы можете искать. Вы не можете провести сравнение "голова к голове", "яблоки к яблокам". Когда вы сравниваете две похожие команды, использующие разные методики (т.е. разные пороги сложности), вы обнаруживаете, что индивидуальные различия в производительности просто доминируют в данных, и почти все является шумом.

"Без таких данных трудно добиться заинтересованности руководства".

Если руководство не заботится о качестве, у вас большие проблемы. Цифры ROI не повлияют на руководство, чтобы оно изменило обстановку.

Вы должны проводить собственные эксперименты на собственном коде в собственной организации.

Собирайте цикломатическую сложность, количество дефектов, заявки на решение проблем, сбои, все, что сможете. Попытайтесь соотнести сложность с другими плохими метриками. Спорный менеджер всегда может выиграть, указав на индивидуальные различия между членами команд.

Используйте реальные данные в вашей реальной организации. Это лучшее, что вы можете сделать. И это не "какое-то исследование" или "какой-то whitepaper" Это ваша реальная организация.

1
ответ дан 2 September 2019 в 22:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: