Файл: Руководство по стилю программирования и конструированию по.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 869
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1 ... 73 74 75 76 77 78 79 80 ... 104
ГЛАВА 27 Как размер программы влияет на конструирование
643
Вы не создаете эти документы ради самого факта их существования. Смысл напи- сания плана управления конфигурацией, например, не в том, чтобы потренировать пальцы рук, но в том, чтобы заставить вас тщательно продумать управление кон- фигурацией и объяснить ваш план любому желающему. Документация — это ося- заемый побочный эффект проделанной вами реальной работе по планированию и конструированию системы. Если вам кажется, что вы делаете это ради профор- мы и пишете обобщенные документы, значит, что-то не в порядке.
«Больше» не значит лучше, во всяком случае в том, что касается методо- логии. В своем сравнении быстрых и четко спланированных вариантов методологии Барри Бом и Ричард Тернер предупреждают, что обычно лучше сначала создать небольшие методы, а затем промасштабировать их для большого проекта, чем начать с создания универсального метода, а затем урезать его для маленького проекта (Boehm and Turner, 2004). Некоторые ученые мужи в области ПО говорят о «легковесной» и «тяжеловесной» методологии, но на прак- тике главное — это учесть конкретный размер и тип вашего проекта, а затем найти
«правильновесную» методологию.
Дополнительные ресурсы
Для дальнейшего изучения темы данной главы ознакомьтесь со следующими источниками.
Boehm, Barry и Richard Turner.
Balancing Agility and Discipline:
A Guide for the Perplexed. Boston, MA: Addison-Wesley, 2004. Бом и Тернер рассказы- вают, как размер проекта влияет на применение быстрых и четко спланированных методов, а также рассматривают другие вопросы, касающиеся быстроты и четкого планирования.
Cockburn, Alistair.
Agile Software Development. Boston, MA: Addison-Wesley, 2002. В гла- ве 4 обсуждаются вопросы выбора подходящей методологии проекта, в том чис- ле учитываются размеры проекта. Глава 6 представляет Кристаллическую методо- логию Кокберна (Cockburn’s Crystal Methodologies), в которой определены подходы к разработке проектов различной величины и степени критичности.
Boehm, Barry W.
Software Engineering Economics. Englewood Cliffs, NJ: Prentice Hall, 1981.
Бом всестороннее рассматривает такие зависящие от размера проекта величины,
как стоимость, производительность и качество, а также другие переменные, участву- ющие в процессе разработки ПО. Книга включает обсуждение влияния размера на конструирование и другие операции. Глава 11 содержит отличное объяснение от- рицательных последствий масштабирования ПО. Другая информация о размере проекта распределена по всей книге. Выпущенная в 2000 г. книга Бома
Software Cost
Estimation with Cocomo II содержит больше современной информации относитель- но оценочной модели Бома Cocomo, но более ранняя книга включает более глубо- кое обсуждение вопроса, все еще представляющее интерес.
Jones, Capers.
Estimating Software Costs. New York, NY: McGraw-Hill, 1998. Эта книга заполнена таблицами и графиками, анализирующими источники производитель- ности разработки ПО. Что касается конкретного вопроса влияния размера про- екта, то раздел «The Impact of Program Size» главы 3 изданной в 1986 г. книги Джонса
Programming Productivity содержит отличное обсуждение.
http://cc2e.com/2768
644
ЧАСТЬ VI Системные вопросы
Brooks, Frederick P., Jr.
The Mythical Man-Month: Essays on Software Engineering, An-
niversary Edition (2d ed.). Reading, MA: Addison-Wesley, 1995. Брукс работал в IBM
менеджером разработки OS/360 — гигантского проекта, занявшего 5000 челове- ко-лет. В своем очаровательном эссе он обсуждает вопросы управления, свойствен- ные маленьким и большим командам, и высказывает исключительно яркое мне- ние о командах главных программистов.
DeGrace, Peter, и Leslie Stahl.
Wicked Problems, Righteous Solutions: A Catalogue of Modern
Software Engineering Paradigms. Englewood Cliffs, NJ: Yourdon Press, 1990. Как следу- ет из названия, книга классифицирует подходы к разработке ПО. Как упомина- лось на протяжении всей этой главы, подход должен изменяться при изменении размера проекта, и Дегрейс и Стал делают эту точку зрения очевидной. В разделе
«Attenuating and Truncating» главы 5 обсуждается настройка процессов разработ- ки ПО в соответствии с размером проекта и другими формальностями. Книга содержит описания моделей из НАСА и Минобороны, а также большое количе- ство поучительных иллюстраций.
Jones, T. Capers. «Program Quality and Programmer Productivity».
IBM Technical Report
TR 02.764 (January 1977): 42–78. Статья также доступна в книге Джонса Tutorial:
Programming Productivity: Issues for the Eighties, 2d ed. Los Angeles, CA: IEEE Computer
Society Press, 1986. Эта статья содержит первый глубокий анализ причин, по ко- торым распределение расходов в больших проектах отлично от маленьких. Это исчерпывающее обсуждение различий между большими и маленькими проекта- ми, включающее требования и меры по обеспечению качества. Статья старая, но все еще интересная.
Ключевые моменты
쐽
С ростом размера проекта появляется необходимость поддерживать взаимо- действие. Смысл большинства подходов к методологии состоит в уменьшении проблем взаимодействия, поэтому методология должна жить или умереть в зависимости от ее вклада в облегчение взаимодействия.
쐽
При прочих равных, производительность в больших проектах будет ниже, чем в маленьких.
쐽
При прочих равных большие проекты будут содержать больше ошибок на 1000
строк кода, чем маленькие.
쐽
Деятельность, которая в малых проектах сама собой разумеется, в больших проектах должна быть тщательно спланирована. С ростом размера проекта конструирование занимает все меньшую ее часть.
쐽
Увеличение масштаба легковесной методологии обычно работает лучше, чем уменьшение масштаба тяжеловесной. Наиболее эффективный подход состоит в использовании «правильновесной» методологии.
ГЛАВА 28 Управление конструированием
645
Г Л А В А 2 8
Управление
конструированием
Содержание
쐽
28.1. Поощрение хорошего кодирования
쐽
28.2. Управление конфигурацией
쐽
28.3. Оценка графика конструирования
쐽
28.4. Измерения
쐽
28.5. Гуманное обращение с программистами
쐽
28.6. Управление менеджером
Связанные темы
쐽
Предварительные требования к конструированию: глава 3
쐽
Определение вида ПО, над которым вы работаете: раздел 3.2
쐽
Размер программы: глава 27
쐽
Качество ПО: глава 20
На протяжении нескольких последних десятилетий управление разработкой ПО
является задачей повышенной сложности. Обсуждение общих вопросов управле- ния программными проектами выходит за рамки данной книги, но в этой главе рассматриваются некоторые специальные темы управления, напрямую связанные с конструированием (рис. 28-1). Если вы разработчик, эта глава поможет вам по- нять те вопросы, которые менеджеры должны принимать во внимание; если же менеджер — понять, как менеджеры рассматривают разработчиков, а также как эффективно управлять конструированием. Поскольку глава охватывает широкий спектр вопросов, то в некоторых разделах также приведены источники дополни- тельной информации.
http://cc2e.com/2836
646
ЧАСТЬ VI Системные вопросы
Рис. 28-1. Эта глава охватывает вопросы управления ПО, относящиеся
к конструированию
Если вы интересуетесь управлением разработкой ПО, прочитайте раздел 3.2, что- бы понять различие между традиционными последовательными подходами к раз- работке и современными итеративными подходами. Не забудьте также прочесть главы 20 и 27, поскольку и требования к качеству, и размеры проекта влияют на то, как должно осуществляться управление данным конкретным проектом.
28.1. Поощрение хорошего кодирования
Поскольку код — это основной результат конструирования, то ключевой вопрос в управлении конструированием звучит так: «Как содействовать выработке хоро- шей практики кодирования?» Вообще внедрение строгого набора технических стандартов с позиций менеджера — не очень хорошая идея. Программисты склонны рассматривать менеджеров как низшую ступень технической эволюции, где-то между одноклеточными организмами и мамонтами, вымершими в ледниковый период. Поэтому, если внедрение программных стандартов необходимо, програм- мисты должны в этом участвовать.
Если какой-то участник проекта собирается определять стандарты, это должен быть скорее архитектор, пользующийся уважением, а не менеджер. Программные про- екты опираются в такой же степени на «профессиональную иерархию», как и на
«должностную». Если этот архитектор считается идейным лидером проекта, команда в большинстве случаев будет придерживаться стандартов, установленных им.
Если вы выбрали этот подход, убедитесь, что архитектора действительно уважа- ют. Иногда архитектор проекта — это просто старший по возрасту человек, ко- торый работает достаточно давно и не имеет представления о проблемах промыш- ленного кодирования. Программисты будут протестовать против стандартов, на- вязанных таким «архитектором», поскольку они не имеют ничего общего с их работой.
Вопросы внедрения стандартов
В одних организациях стандарты полезны, в других — не очень. Некоторые раз- работчики приветствуют стандартизацию, потому что она снижает вероятность возникновения случайных разногласий. Если ваша группа сопротивляется приме- нению строгих стандартов, рассмотрите несколько альтернатив: гибкие правила,
предложения вместо правил или набор примеров, иллюстрирующих наилучшую практику.
ГЛАВА 28 Управление конструированием
647
Технологии поощрения хорошего кодирования
Ниже описаны способы достижения хорошего качества кодирования, не столь тяжеловесные, как утверждение жестких стандартов:
Назначьте двух человек на каждую часть проекта
Если над каждой строкой кода приходится работать двоим,
то у вас есть гарантия, что хотя бы два человека думают, что код работает и его можно читать. Механизм работы команды из двух человек может варьироваться от парного программирования до пары
«наставник — стажер» или рецензирования кода методом близнецов.
Рецензируйте каждую строку кода В рецензировании кода обычно участвует программист и минимум два рецен- зента. Это значит, что каждую строку кода читают не менее трех человек. Другое название парного рецензирования —
«парное давление» (peer pressure). Кроме предоставления страховки на тот слу- чай, если первоначальный программист покинет проект, рецензирование кода улучшает его качество, так как программист знает, что его код будут читать дру- гие. Даже если у вас нет явных стандартов кодирования, рецензирование позво- ляет незаметно продвигаться к созданию группового стандарта — в процессе ре- цензирования группа принимает решения, которые со временем могут стать ее стандартами.
Введите процедуру подписания кода В других отраслях технические черте- жи утверждаются и подписываются управляющим инженером. Подпись означает,
что в соответствии с уровнем квалификации инженера, этот чертеж технически компетентен и не содержит ошибок. Некоторые компании обращаются с кодом так же: только код, подписанный старшим техническим персоналом, считается за- вершенным.
Распространяйте для ознакомления хорошие примеры кода Важной со- ставляющей хорошего управления является способность ясно донести свои тре- бования. Для этих целей вы можете распространять хороший код между програм- мистами или выставлять его на всеобщее обозрение. Так вы предоставляете яс- ный пример того качества, которого вы добиваетесь. Точно так же кодовые стан- дарты могут состоять главным образом из «листингов отличного кода». Присвое- ние определенному листингу «знака качества» — пример для подражания. Подоб- ные руководства легче обновлять, чем писаные (словами) стандарты. Кроме того,
так легко показать тонкости стиля кодирования, которые тяжело по пунктам опи- сать словами.
Подчеркивайте, что код — это общее имущество
Иногда программисты считают, что код, который они на- писали, — «их» личная собственность. Хотя это результат их работы, но он является частью всего проекта и должен быть доступен любому участнику проекта. Он должен просмат- риваться другими хотя бы во время рецензирования и со- провождения.
Перекрестная ссылка О парном программировании см. раздел
21.2.
Перекрестная ссылка О рецен- зировании см. разделы 21.3
и 21.4.
Перекрестная ссылка Большая часть программирования состо- ит в сообщении результатов ва- шей работы другим людям (см.
разделы 33.5 и 34.3).