Вы не
Качество программного обеспечения действительно сложно измерить объективно. Достаточно сложно, что нет решения. В этом ответе я воздерживаюсь от размышлений над вопросом, можно ли вообще найти решение, но просто укажу, почему определить его будет действительно сложно.
Рассуждение о статус-кво
Как отметил Килиан Фот, если бы существовала простая мера для «хорошего» программного обеспечения, мы все использовали бы его, и каждый требовал бы его.
Есть проекты, в которых менеджеры решили применить определенные метрики. Иногда это работало, иногда нет. Я не знаю каких-либо существенных корреляций. Особенно критическое системное программное обеспечение (например, самолеты, автомобили и т. Д.) Предъявляет множество требований к метрикам для «обеспечения» качества ПО - мне не известны какие-либо исследования, показывающие, что эти требования действительно приводят к повышению качества, и у меня есть личный опыт наоборот.
Рассуждение контрразведки
Также уже намекается на Килиана и в более общем виде формулируется как «каждая метрика может и будет сыграна».
Что значит играть в метрику? Это забавная игра для разработчиков: вы гарантируете, что значения метрик выглядят действительно хорошо, в то же время делая действительно дерьмовые вещи.
Допустим, вы измеряете дефекты по LOC. Как я буду играть в это? Легко - просто добавьте больше кода! Создайте глупый код, который приводит к бездействию более 100 строк, и внезапно у вас появляется меньше дефектов на LOC. Лучше всего: вы таким образом снизили качество программного обеспечения.
Недостатками инструментов злоупотребляют, определения растягиваются до максимума, изобретаются совершенно новые способы ... в основном, разработчики - действительно умные люди, и если в вашей команде будет только один разработчик, который будет весело играть в метрики, тогда ваши метрики будут сомнительными.
Это не значит, что показатели всегда плохие, но отношение команды к этим показателям имеет решающее значение. В частности, это подразумевает, что это не будет работать хорошо для любых отношений субподрядчика / стороннего поставщика.
Рассуждение по неправильному таргетингу
То, что вы хотите измерить, это качество программного обеспечения. То, что вы измеряете, это один или несколько показателей.
Существует разрыв между тем, что вы измеряете, и тем, что, по вашему мнению, вам это скажет. Этот разрыв довольно большой.
Это происходит постоянно во всех сферах деятельности вокруг нас. Когда-нибудь видели решения, основанные на KPI (ключевые показатели эффективности)? Это та же самая проблема - вы хотите, чтобы компания преуспела, но вы измеряете что-то другое.
Рассуждение количественно
Метрики могут быть измерены. Который является единственной причиной, по которой мы имеем с ними дело вообще. Однако качество программного обеспечения простирается далеко за пределы этих измеримых сущностей и имеет много общего с количественным определением: насколько читабелен исходный код? Насколько расширяем ваш дизайн? Насколько сложно новым членам команды попасть на борт? и т. д.
Оценка качества программного обеспечения только по метрикам и закрытие глаз на части качества, которые вы не можете измерить, определенно не сработают.
редактировать:
Резюме
Позвольте мне отметить, что все вышесказанное связано с объективной оценкой, является ли программное обеспечение хорошим или плохим, на основе метрик. Это означает, что ничего не говорится о том, следует ли и когда применять метрики.
Фактически, это однонаправленное следствие: плохие метрики подразумевают плохой код. Однонаправленный означает, что плохой код не гарантирует плохие метрики, а хорошие метрики не гарантируют хороший код. С другой стороны, это само по себе означает, что вы можете применять метрики для оценки части программного обеспечения - когда вы помните об этом.
Вы измеряете программное обеспечение А, а показатели получаются очень плохими. Тогда вы можете быть уверены, что качество кода плохое. Вы измеряете программное обеспечение B, и показатели в порядке, тогда вы не имеете ни малейшего представления о качестве кода. Не думайте, что «метрика хорошая = хороший код», когда это просто «хороший код => хорошая метрика».
По сути, вы можете использовать метрики, чтобы найти проблемы с качеством, но не само качество.