Jump to content

Обзор кода

(Перенаправлено из обзоров кода )
Инженеры-программисты («программисты»), проверяющие программу

Проверка кода (иногда называемая экспертной проверкой ) — это деятельность по обеспечению качества программного обеспечения , при которой один или несколько человек проверяют программу , в основном путем просмотра и чтения частей ее исходного кода либо после реализации, либо в случае прерывания реализации. По крайней мере один из людей не должен быть автором кода. Лица, осуществляющие проверку, за исключением автора, называются «рецензентами». [1] [2]

Хотя прямое обнаружение проблем качества часто является основной целью, [3] Проверка кода обычно выполняется для достижения нескольких целей: [4] [5]

  • Лучшее качество кода . Улучшите качество внутреннего кода и удобство сопровождения (например, читаемость, единообразие и понятность).
  • Поиск дефектов . Улучшайте качество в отношении внешних аспектов, особенно правильности, а также находите такие проблемы, как проблемы с производительностью, уязвимости безопасности и внедренное вредоносное ПО.
  • Обучение/передача знаний . Помогите передать знания о базе кода, подходы к решению и ожидания качества как рецензентам, так и автору.
  • Повысить чувство взаимной ответственности . Повысить чувство коллективной ответственности и солидарности.
  • Поиск лучших решений . Генерируйте идеи для новых и лучших решений, а также идеи, выходящие за рамки конкретного кода.
  • Соответствие рекомендациям по обеспечению качества, стандартам ISO/IEC . Проверка кода обязательна в некоторых контекстах, например, в программном обеспечении для воздушного движения и критически важном для безопасности программном обеспечении.

Такое определение проверки кода отличает ее от связанных с ней методов обеспечения качества программного обеспечения , таких как статический анализ кода , самопроверка , тестирование и парное программирование . При статическом анализе кода основную проверку выполняет автоматизированная программа, при самопроверке код проверяет только автор, при тестировании выполнение кода является неотъемлемой частью, а парное программирование выполняется непрерывно в ходе реализации, а не как отдельный этап. . [1]

Типы отзывов [ править ]

Существует множество вариантов процессов проверки кода, некоторые из которых подробно описаны ниже. Дополнительные типы проверки являются частью IEEE 1028.

IEEE 1028-2008 перечисляет следующие типы проверок: [6]

  • Отзывы руководства
  • Технические обзоры
  • Инспекции
  • Проходы
  • Аудиты

Инспекция (формальная) [ править ]

назвал «Инспекция» Исторически первый процесс проверки кода, который был изучен и подробно описан, его изобретатель Майкл Фэган . [7] Эта инспекция Фэгана представляет собой формальный процесс, который включает в себя тщательное и детальное выполнение с участием нескольких участников и нескольких этапов. Формальные проверки кода — это традиционный метод проверки, при котором разработчики программного обеспечения посещают серию встреч и проверяют код построчно, обычно используя печатные копии материала. Формальные проверки чрезвычайно тщательны и доказали свою эффективность при обнаружении дефектов в проверяемом коде. [7]

Регулярный анализ кода на основе изменений (проходы) [ править ]

В последние годы, [ когда? ] Многие отраслевые команды ввели более легкий тип проверки кода, при котором объем каждой проверки зависит от изменений в кодовой базе, выполненных в заявке, пользовательской истории, коммите или какой-либо другой единице работы. [8] [3] Более того, существуют правила или соглашения, которые встраивают задачу проверки в процесс разработки (например, «каждая заявка должна быть проверена»), обычно как часть запроса на включение , вместо явного планирования каждой проверки. Такой процесс проверки называется «регулярной проверкой кода на основе изменений». [1] Существует множество вариаций этого основного процесса. Опрос 240 команд разработчиков, проведенный в 2017 году, показал, что 90% команд используют процесс проверки, основанный на изменениях (если они вообще используют проверки), а 60% используют регулярную проверку кода на основе изменений. [3] Кроме того, большинство крупных корпораций программного обеспечения, таких как Microsoft, [9] Google, [10] и Facebook следуют процессу проверки кода на основе изменений.

Эффективность и результативность отзывов [ править ]

Текущий анализ компании Capers Jones более 12 000 проектов по разработке программного обеспечения показал, что уровень обнаружения скрытых дефектов при формальной проверке находится в диапазоне 60-65%. При неофициальном осмотре этот показатель составляет менее 50%. Уровень обнаружения скрытых дефектов для большинства форм тестирования составляет около 30%. [11] [12] Тематическое исследование проверки кода, опубликованное в книге « Наилучшие хранимые секреты одноранговой проверки кода», противоречит исследованию Кэйперса Джонса: [11] обнаружили, что упрощенные проверки могут выявить столько же ошибок, что и формальные проверки, но они выполняются быстрее и экономичнее. [13]

Исследования показали, что до 75% комментариев по обзору кода влияют на возможность развития и сопровождения программного обеспечения, а не на его функциональность. [14] [15] [4] [16] предполагая, что обзоры кода являются отличным инструментом для компаний-разработчиков программного обеспечения с длительным жизненным циклом продукта или системы. [17] Это также означает, что менее 15% проблем, обсуждаемых в обзорах кода, связаны с ошибками. [18]

Рекомендации [ править ]

Было обнаружено, что эффективность проверки кода зависит от скорости проверки.Скорость проверки кода должна составлять от 200 до 400 строк кода в час. [19] [20] [21] [22] Проверка и проверка более чем нескольких сотен строк кода в час для критически важного программного обеспечения (например, встроенного программного обеспечения, критически важного для безопасности ) может быть слишком быстрой для обнаружения ошибок. [19] [23]

Вспомогательные инструменты [ править ]

Программное обеспечение для статического анализа кода облегчает задачу разработчика по проверке больших фрагментов кода за счет систематической проверки исходного кода на наличие известных уязвимостей и типов дефектов. [24] Исследование, проведенное в 2012 году VDC Research, сообщает, что 17,6% опрошенных инженеров встраиваемого программного обеспечения в настоящее время используют автоматизированные инструменты для поддержки коллегиальной проверки кода, а 23,7% планируют использовать их в течение двух лет. [25]

См. также [ править ]

Внешние ссылки [ править ]

Ссылки [ править ]

  1. ^ Jump up to: Перейти обратно: а б с Баум, Тобиас; Лискин, Ольга; Никлас, Кай; Шнайдер, Курт (2016). «Схема многогранной классификации процессов проверки промышленных кодексов, основанных на изменениях». Международная конференция IEEE по качеству, надежности и безопасности программного обеспечения (QRS) 2016 г. стр. 74–85. дои : 10.1109/QRS.2016.19 . ISBN  978-1-5090-4127-5 . S2CID   9569007 .
  2. ^ Колава, Адам; Хейзинга, Дорота (2007). Автоматизированное предотвращение дефектов: лучшие практики управления программным обеспечением . Издательство компьютерного общества Wiley-IEEE. п. 260. ИСБН  978-0-470-04212-0 .
  3. ^ Jump up to: Перейти обратно: а б с Баум, Тобиас; Лессманн, Хендрик; Шнайдер, Курт (2017). «Выбор процесса проверки кода: обзор состояния практики». Улучшение процесса разработки программного обеспечения, ориентированного на продукт . Конспекты лекций по информатике. Том. 10611. стр. 111–127. дои : 10.1007/978-3-319-69926-4_9 . ISBN  978-3-319-69925-7 .
  4. ^ Jump up to: Перейти обратно: а б Бачелли, А; Берд, К. (май 2013 г.). «Ожидания, результаты и проблемы современной проверки кода» (PDF) . Материалы 35-й Международной конференции IEEE/ACM по программной инженерии (ICSE 2013) . Проверено 2 сентября 2015 г.
  5. ^ Баум, Тобиас; Лискин, Ольга; Никлас, Кай; Шнайдер, Курт (2016). «Факторы, влияющие на процессы проверки кода в промышленности». Материалы 24-го Международного симпозиума ACM SIGSOFT по основам программной инженерии, 2016 г. - FSE 2016 . стр. 85–96. дои : 10.1145/2950290.2950323 . ISBN  9781450342186 . S2CID   15467294 .
  6. ^ Стандарт IEEE для проверок и аудита программного обеспечения . ИИЭР СТД 1028-2008. Август 2008 г. стр. 1–53. дои : 10.1109/ieeestd.2008.4601584 . ISBN  978-0-7381-5768-9 .
  7. ^ Jump up to: Перейти обратно: а б Фэган, Майкл (1976). «Проверки дизайна и кода для уменьшения ошибок при разработке программ». Системный журнал IBM . 15 (3): 182–211. дои : 10.1147/sj.153.0182 .
  8. ^ Ригби, Питер; Птица, Кристиан (2013). «Конвергентные методы экспертной оценки современного программного обеспечения». Материалы 9-го совместного совещания по основам программной инженерии 2013 г. стр. 202–212. CiteSeerX   10.1.1.641.1046 . дои : 10.1145/2491411.2491444 . ISBN  9781450322379 . S2CID   11163811 .
  9. ^ Маклауд, Лаура; Грейлер, Микаэла; Стори, Маргарет-Энн; Птица, Кристиан; Червонка, Яцек (2017). «Анализ кода: проблемы и лучшие практики» (PDF) . Программное обеспечение IEEE . 35 (4): 34. дои : 10.1109/MS.2017.265100500 . S2CID   49651487 . Проверено 28 ноября 2020 г.
  10. ^ Садовски, Кейтлин; Содерберг, Эмма; Черч, Люк; Сипко, Михал; Баачелли, Альберто (2018). «Современный анализ кода: пример использования Google». Материалы 40-й Международной конференции по программной инженерии: Программная инженерия на практике . стр. 181–190. дои : 10.1145/3183519.3183525 . ISBN  9781450356596 . S2CID   49217999 .
  11. ^ Jump up to: Перейти обратно: а б Джонс, Каперс (июнь 2008 г.). «Измерение потенциала дефектов и эффективности устранения дефектов» (PDF) . Перекрестные помехи, Журнал оборонной разработки программного обеспечения. Архивировано из оригинала (PDF) 6 августа 2012 г. Проверено 5 октября 2010 г.
  12. ^ Джонс, Каперс; Эберт, Кристоф (апрель 2009 г.). «Встроенное программное обеспечение: факты, цифры и будущее». Компьютер . 42 (4): 42–52. дои : 10.1109/MC.2009.118 . S2CID   14008049 .
  13. ^ Джейсон Коэн (2006). Самые сокровенные секреты одноранговой проверки кода (Современный подход. Практические советы) . Smart Bear Inc. ISBN  978-1-59916-067-2 .
  14. ^ Червонка, Яцек; Грейлер, Микаэла; Тилфорд, Джек (2015). «Проверки кода не обнаруживают ошибок. Как текущие лучшие практики проверки кода нас замедляют». 37-я Международная конференция IEEE/ACM по программной инженерии, 2015 г. (PDF) . Том. 2. С. 27–28. дои : 10.1109/ICSE.2015.131 . ISBN  978-1-4799-1934-5 . S2CID   29074469 . Проверено 28 ноября 2020 г.
  15. ^ Мантила, МВ; Лассениус, К. (2009). «Какие типы дефектов действительно обнаруживаются при проверке кода?» (PDF) . Транзакции IEEE по разработке программного обеспечения . 35 (3): 430–448. CiteSeerX   10.1.1.188.5757 . дои : 10.1109/TSE.2008.71 . S2CID   17570489 . Проверено 21 марта 2012 г.
  16. ^ Беллер, М; Бачелли, А; Зайдман, А; Юргенс, Э. (май 2014 г.). «Современные обзоры кода в проектах с открытым исходным кодом: какие проблемы они решают?» (PDF) . Материалы 11-й рабочей конференции по репозиториям программного обеспечения для майнинга (MSR 2014) . Проверено 2 сентября 2015 г.
  17. ^ Сий, Харви; Вотта, Лоуренс (1 декабря 2004 г.). «Имеет ли ценность современная проверка кода?» (PDF) . unomaha.edu . Архивировано из оригинала (PDF) 28 апреля 2015 г. Проверено 17 февраля 2015 г.
  18. ^ Босу, Амиангшу; Грейлер, Микаэла; Берд, Крис (май 2015 г.). «Характеристики полезных проверок кода: эмпирическое исследование в Microsoft» (PDF) . 2015 IEEE/ACM 12-я рабочая конференция по репозиториям программного обеспечения для майнинга . Проверено 28 ноября 2020 г.
  19. ^ Jump up to: Перейти обратно: а б Кемерер, CF; Полк, MC (17 апреля 2009 г.). «Влияние проверок дизайна и кода на качество программного обеспечения: эмпирическое исследование, основанное на данных PSP». Транзакции IEEE по разработке программного обеспечения . 35 (4): 534–550. дои : 10.1109/TSE.2009.27 . hdl : 11059/14085 . S2CID   14432409 .
  20. ^ «Метрики проверки кода» . Откройте проект безопасности веб-приложений . Архивировано из оригинала 9 октября 2015 г. Проверено 9 октября 2015 г.
  21. ^ «Лучшие практики для коллегиальной проверки кода» . Умный Медведь . Программное обеспечение «Умный Медведь». Архивировано из оригинала 9 октября 2015 г. Проверено 9 октября 2015 г.
  22. ^ Бизант, Дэвид Б. (октябрь 1989 г.). «Метод проверки двумя людьми для повышения производительности программирования» . Транзакции IEEE по разработке программного обеспечения . 15 (10): 1294–1304. дои : 10.1109/TSE.1989.559782 . S2CID   14921429 . Проверено 9 октября 2015 г.
  23. ^ Ганссл, Джек (февраль 2010 г.). «Руководство по проверке кода» (PDF) . Группа Ганссле . Проверено 5 октября 2010 г.
  24. ^ Балачандран, Випин (2013). «Сокращение человеческих усилий и повышение качества коллегиальных проверок кода с использованием автоматического статического анализа и рекомендаций рецензентов». 2013 35-я Международная конференция по программной инженерии (ICSE) . стр. 931–940. дои : 10.1109/ICSE.2013.6606642 . ISBN  978-1-4673-3076-3 . S2CID   15823436 .
  25. ^ Исследования ВДК (01 февраля 2012 г.). «Автоматическое предотвращение дефектов для обеспечения качества встроенного программного обеспечения» . Исследования ВДЦ . Проверено 10 апреля 2012 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 7ce4017cdcf2b890984165467995a0b2__1716055800
URL1:https://arc.ask3.ru/arc/aa/7c/b2/7ce4017cdcf2b890984165467995a0b2.html
Заголовок, (Title) документа по адресу, URL1:
Code review - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)