Разработка
Качество программного обеспечения
Если со скоростью и простотой все понятно, то качество сложно измерить, потому что его трудно определить. Для разных людей качество означает разные вещи. В Google это стало важным вопросом, на который нужно было ответить.
Это обзор последнего документа из серии «Продуктивность разработчиков для нормальных людей», подготовленной командой по исследованию продуктивности инженеров Google. В прошлом они освещали такие темы, как управление техническим долгом и влияние улучшения времени сборки. В этом документе дается определение качества кода и рассматриваются факторы, влияющие на него.
Краткое резюме
Команда Google по исследованию инженерной продуктивности придерживается мнения, что одна метрика не может измерить продуктивность разработчиков. Вместо этого они разделяют производительность разработки на три измерения: скорость, простота и качество. Каждый раз, когда они определяют одно из трех измерений (например, сколько времени требуется для завершения code review), они также измеряют два других, чтобы выявить потенциальные компромиссы.
Однако если со скоростью и простотой все понятно, то качество сложно измерить, потому что его трудно определить. Для разных людей качество означает разные вещи. В Google это стало важным вопросом, на который нужно было ответить.
Чтобы лучше понять, что значит «качество», исследовательская группа провела две серии интервью с разработчиками в компании, чтобы понять качество кода и качество продукта. Сначала разработчиков попросили дать определение каждому типу качества. Затем их попросили описать, как качество влияет на их собственную производительность, и какие факторы влияют на их удовлетворенность качеством кода и качеством продукта.
Четыре типа качества программного обеспечения
На основе интервью и предыдущих исследований авторы разработали «теорию качества». Согласно этой теории, существует четыре типа качества, которые влияют друг на друга. Ниже приведены их определения, а также комментарии о том, как они влияют друг на друга и как их можно измерить.
1. Качество процесса
Как оно определяется: Качественный процесс включает в себя такие вещи, как всестороннее и детерминированное тестирование, тщательные обзоры кода, организационную последовательность и эффективный процесс планирования.
Как оно связано с другими видами качества программного обеспечения: Существуют убедительные доказательства того, что качество процесса может определить общее качество программного обеспечения: например, многочисленные исследования показали, что метрики, основанные на процессах, в большей степени предсказывают дефекты после релиза, чем существующие метрики качества кода. Вот почему в этой теории все начинается с высококачественного процесса разработки.
2. Качество кода
Как оно определяется: В ходе своего исследования ученые выяснили, что разработчики определяют качество кода как относящееся в первую очередь к сопровождаемости. Сопровождаемость имеет подкатегории, включая тестируемость, понятность, сложность и читабельность. В целом разработчики описывают качество кода как «простоту работы с кодом и его понимания, чтобы они могли легко вносить в него изменения».
Как оно связано с другими видами качества: Исследователи обнаружили, что качество кода улучшает качество системы за счет уменьшения количества дефектов и повышения надежности. Высокое качество кода также приводит к увеличению скорости работы разработчиков.
Следующие две категории — это то, о чем обычно думают руководители и менеджеры по продуктам, когда слышат «качество программного обеспечения». В то время как разработчики думают о качестве кода и процесса, руководители думают о качестве системы и продукта (исследователи отмечают, что это может привести к рассогласованию).
3. Качество системы
Как оно определяется: Качество системы характеризуется ее надежностью, производительностью и количеством дефектов.
Как оно связано с другими видами качества: высокое качество кода — необходимое условие для высокого качества системы.
Авторы добавляют несколько интересных комментариев о качестве системы — в частности они говорят, о том, что его трудно измерить из-за скудости данных. Сбои в системе случаются редко, поэтому даже при отсутствии перебоев в течение определенного периода времени трудно сказать, действительно ли качество системы улучшилось. По этой причине метрики качества процессов и кода полезны для отслеживания показателей, определяющих качество системы.
Авторы продолжают, объясняя, почему эти метрики полезны для понимания качества системы: «Без этих промежуточных показателей заинтересованные стороны могут подумать, что год без сбоев — это свидетельство высокого качества системы… В год без сбоев и инцидентов могут существовать две реальности. В худшем случае разработчики, возможно, обходили различные неэффективные слабые места, чтобы предотвратить появление ошибок в плохо работающей системе. В лучшем случае разработчики работали в системе с низким риском возникновения дефектов и могли сосредоточиться на усовершенствовании и итерации новых функций. Не имея показателей качества кода, руководство не может быть в этом уверено и не знает, как направить усилия инженеров на обеспечение скорости работы разработчиков и качества продукта в долгосрочной перспективе».
4. Качество продукта
Как оно определяется: Качество продукта определяется как наличие трех ключевых компонентов: полезность, удобство использования и надежность.
Как оно связано с другими типами качества: Качество продукта и качество кода взаимосвязаны: низкое качество кода может замедлить скорость разработки и, как следствие, отсрочить усовершенствование продукта или даже сделать его нецелесообразным. Низкое качество кода также может увеличить риск возникновения дефектов, что также влияет на качество продукта.
В своем заключении исследователи советуют: если команда нацелена на улучшение качества программного обеспечения, ей следует определить, какой тип качества она хочет улучшить в первую очередь. Это определит метрики, которые они используют, и действия, которые они предпринимают.
Заключительные мысли
В предыдущей статье я рассказал об отдельном исследовании Google, которое выявило связь между качеством кода и производительностью. Это новое исследование помогает нам лучше понять, как мы можем улучшить качество кода. Оно также дает представление о том, как качество кода влияет на другие виды качества (качество системы и продукта), о которых менеджеры по продукту и руководители обычно заботятся больше.
-
Видео и подкасты для разработчиков1 месяц назад
Lua – идеальный встраиваемый язык
-
Новости1 месяц назад
Poolside, занимающийся ИИ-программированием, привлек $500 млн
-
Новости1 месяц назад
Видео и подкасты о мобильной разработке 2024.40
-
Новости1 месяц назад
Видео и подкасты о мобильной разработке 2024.41