Файл: Руководство по стилю программирования и конструированию по.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 774
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
486
ЧАСТЬ V Усовершенствование кода тики. Разработчики, не имеющие опыта участия в инспекциях, не смогут показать все, на что они способны. Если вы хотите, чтобы они внесли свой вклад в общее дело, анализ может оказаться оптимальной методикой обзора.
Инспекция более целенаправленна, чем анализ, и обычно более выгод- на. Следовательно, если вы выбираете стандартную методику обзора для своей организации, выберите сначала инспекцию, если только у вас нет убедительной причины поступить иначе.
Чтение кода
Чтение кода — альтернатива инспекции и анализу. Данная методика подразуме- вает, что вы читаете исходный код в поисках ошибок, обращая при этом внима- ние и на его качественные аспекты, такие как проект, стиль, удобочитаемость,
удобство сопровождения и эффективность.
Исследование, проведенное в Лаборатории проектирования ПО NASA,
показало, что при чтении кода разработчики находили около 3,3 дефек- та в час, а при тестировании — около 1,8 ошибки в час (Card, 1987). Кроме того, на всем протяжении проекта чтение кода позволяло найти на 20–60% боль- ше ошибок, чем разные виды тестирования.
Как и анализ, чтение кода не имеет точного определения. Обычно при чтении кода двое или более человек независимо изучают код, после чего обсуждают его вме- сте с автором. Методика чтения кода описана ниже.
쐽
В начале подготовки к собранию автор кода раздает листинги участникам обзора. Листинги включают от 1000 до 10 000 строк; типичный объем — 4000
строк.
쐽
Двое или более разработчиков читают код. Чтобы поддержать дух соревнова- ния, привлекайте к чтению кода минимум двух человек. Если в чтении кода уча- ствуют три человека или более, оценивайте вклад каждого из них, чтобы вы знали, как дополнительные участники влияют на результаты.
쐽
Участники обзора читают код независимо друг от друга. Обычно продуктив- ность составляет примерно 1000 строк в день.
쐽
После того как участники обзора завершили чтение кода, автор кода прово- дит собрание. Собрание продолжается один-два часа и фокусируется на про- блемах, обнаруженных при чтении кода. Никто не пытается анализировать код строку за строкой. Строго говоря, собрание даже не является необходимостью.
쐽
Автор кода исправляет обнаруженные проблемы.
Различие между чтением кода и инспекцией и анализом в том, что чте- ние кода в большей степени ориентировано на индивидуальный обзор кода, а не на собрание. Это позволяет каждому участнику обзора уделять больше времени непосредственно поиску проблем. Меньше времени тратится на проведение собраний, предполагающих, что каждый участник активен только часть времени, и требующих значительных усилий для координации действий группы.
Меньше времени тратится на отсрочку собрания до тех пор, пока каждый член группы не найдет два свободных часа. Чтение кода особенно полезно, если учас- тников обзора разделяют большие расстояния.
1 ... 55 56 57 58 59 60 61 62 ... 104
ГЛАВА 21 Совместное конструирование
487
Изучив результаты 13 обзоров, специалисты AT&T обнаружили, что важ- ность собраний, посвященных обзору, была относительно невысокой: 90%
дефектов разработчики находили при подготовке к собраниям и только около 10% во время самих собраний (Votta, 1991; Glass, 1999).
Презентация
Презентацией (dog-and-pony show) называют обзор, при котором система демон- стрируется заказчику. Такие обзоры — обычное дело при разработке ПО для пра- вительственных организаций, которые часто требуют выполнения обзоров тре- бований, проектов и кода. Цель презентации — показать заказчику, что работа продвигается успешно, так что это обзор, выполняемый руководителями, а не технический обзор.
Не рассматривайте презентации как способ повышения технического качества продукции. Подготовка к ним может оказывать косвенное влияние на техниче- ское качество, но обычно при этом больше времени тратится на подготовку эф- фектных слайдов, а не на повышение качества ПО. Для повышения технического качества ПО используйте инспекции, анализ или чтение кода.
21.5. Сравнение методик совместного
конструирования
Каковы различия между разными методиками совместного конструирования?
Основные характеристики каждой методики указаны в табл. 21-1.
Табл. 21-1. Сравнение методик совместного конструирования
Парное
Формальная
Неформальный
Характеристика
программирование
инспекция
обзор (анализ)
Назначаются ли участникам Да
Да
Нет конкретные роли?
Проводится ли формальное Возможно
Да
Нет обучение исполнению конкретных ролей?
Кто «управляет»
Разработчик, сидящий
Координатор
Обычно автор сотрудничеством?
за клавиатурой
Фокус сотрудничества
Проектирование, коди- Только обнаруже- Разный рование, тестирование ние дефектов и исправление дефектов
Сфокусирован ли обзор?
Действия фокусируются Да
Нет
Направляются ли усилия неформально, если на поиск наиболее частых вообще фокусируются типов ошибок?
Выполняется ли контроль
Да
Да
Нет исправления найденных ошибок?
Предоставляется ли отдель- Это второстепенный
Да
Это второсте- ным программистам подроб- фактор пенный фактор ная обратная связь для сокращения числа ошибок в будущем?
(
см. след. стр.)
488
ЧАСТЬ V Усовершенствование кода
Табл. 21-1. (окончание)
Парное
Формальная
Неформальный
Характеристика
программирование
инспекция
обзор (анализ)
Используется ли анализ
Нет
Да
Нет результатов для повышения эффективности процесса?
Полезна ли методика
Возможно
Да
Да не на этапе конструиро- вания?
Типичный процент
40–60%
45–70%
20–40%
обнаруживаемых дефектов
В отличие от формальных инспекций эффективность парного программирова- ния не подтверждена десятилетиями исследований, но первоначальные данные свидетельствуют о том, что оно примерно эквивалентно инспекциям; отзывы компаний, использующих парное программирование, также положительны.
Если парное программирование и формальные инспекции примерно эквивален- тны по показателям качества итогового кода, стоимости и быстроты разработки,
при выборе одной из этих двух методик можно руководствоваться личными пред- почтениями, а не техническими аспектами. Кому-то нравится работать в одиноч- ку, лишь иногда отказываясь от этого режима для проведения инспекционных собраний. Кто-то предпочитает сотрудничество с коллегами. Выбрать методику можно на основе предпочтений конкретных членов группы, а подгруппам мож- но позволить самим выбрать способ выполнения большей части работы. Можете комбинировать разные методики, если это целесообразно.
Дополнительные ресурсы
Ниже я указал ряд работ, посвященных методикам совмес- тного конструирования.
Парное программирование
Williams, Laurie and Robert Kessler.
Pair Programming Illuminated. Boston, MA: Add- ison Wesley, 2002. В этой книге подробно рассматриваются все аспекты парного программирования, в том числе соответствие личностей (например, эксперт и новичок, интроверт и экстраверт) и другие вопросы реализации.
Beck, Kent.
Extreme Programming Explained: Embrace Change. Reading, MA: Addison
Wesley, 2000. Кент Бек вкратце рассматривает парное программирование и пока- зывает, как его улучшить, дополнив другими методиками, такими как определение стандартов кодирования, частая интеграция и регрессивное тестирование.
Reifer, Donald. «How to Get the Most Out of Extreme Programming/Agile Methods»,
Pro-
ceedings, XP/Agile Universe 2002. New York, NY: Springer; pp. 185–196. В этой статье обобщен опыт использования экстремального программирования и методик гибкой разработки, а также указаны условия успешности парного программирования.
http://cc2e.com/2106
ГЛАВА 21 Совместное конструирование
489
Инспекции
Wiegers, Karl.
Peer Reviews in Software: A Practical Guide. Boston, MA: Addison Wesley,
2002. В этой книге подробно рассматриваются разные виды обзоров, в том числе формальные инспекции и менее формальные методики. Она основана на тщатель- ных исследованиях, имеет практическую направленность и легко читается.
Gilb, Tom and Dorothy Graham.
Software Inspection. Wokingham, England: Addison-
Wesley, 1993. В этой книге подробно обсуждаются инспекции, выполнявшиеся в начале 1990-х. Она имеет практическую направленность и включает исследова- ния конкретных инспекционных программ, проводившихся в нескольких орга- низациях.
Fagan, Michael E. «Design and Code Inspections to Reduce Errors in Program Develop- ment».
IBM Systems Journal, 15, no. 3 (1976): 182–211.
Fagan, Michael E. «Advances in Software Inspections».
IEEE Transactions on Software
Engineering, SE-12, no. 7 (July 1986): 744–51. Две этих статьи написаны разработ- чиком методики инспекций. В них вы найдете суть того, что нужно знать для проведения инспекций, в том числе описание всех стандартных форм инспекций.
Соответствующие стандарты
IEEE Std 1028-1997 — стандарт обзоров ПО.
IEEE Std 730-2002 — стандарт планирования контроля качества ПО.
Ключевые моменты
쐽
Как правило, методики совместной разработки позволяют находить больше дефектов, чем тестирование, и делать это более эффективно.
쐽
Методики совместной разработки и тестирование приводят к обнаружению разных типов ошибок, поэтому программа контроля качества ПО должна вклю- чать и обзоры, и тестирование.
쐽
Главными аспектами формальной инспекции, обеспечивающими максималь- ную эффективность обнаружения дефектов, являются использование конт- рольных списков, подготовка, назначение хорошо определенных ролей и по- стоянное улучшение процесса. Формальная инспекция — более эффективный способ обнаружения дефектов, чем анализ проекта или кода.
쐽
Парное программирование и инспекции примерно эквивалентны по показа- телям расходов и качества итогового кода. Парное программирование может оказаться особенно полезным, если вы хотите сократить срок разработки си- стемы. Некоторые разработчики предпочитают работать в паре, а не самосто- ятельно.
쐽
Формальные инспекции можно использовать для проверки не только кода, но и других результатов труда, таких как требования, проекты и тесты.
쐽
Анализ и чтение кода — альтернативы инспекциям. Чтение кода позволяет каждому участнику более эффективно использовать свое время.