2012г.
Авторы популярной в IT-сообществе книги «Идеальный код» вновь предлагают вашему вниманию подборку лучших решений от признанных экспертов в области разработки ПО. Существует много споров о том, какие же инструменты, технологии и практики могут действительно оптимизировать процесс разработки ПО и усовершенствовать конечный продукт. В новой книге Идеальная разработка ПО. Рецепты лучших программистов. Орам под редакцией Энди Орама и Грега Уилсона известные разработчики делятся своим бесценным опытом и мнениями на эту тему. Авторские эссе и статьи посвящены наиболее эффективным методам работы программиста, а также развенчиванию ряда мифов, существующих в программистском сообществе. Среди авторов книги — такие авторитеты, как Стив Макконнелл, Барри Бэм, Барбара Китченхем и еще 27 известных экспертов в области разработки программного обеспечения.
Содержание книги
Идеальная разработка ПО. Рецепты лучших программистов. Орам
Предисловие........................................................................................... 17
Часть I. Общие принципы поиска и использования
доказательств
Глава 1. Задача сбора убедительных доказательств ........................ 22
Тим Мензес, Форрест Шалл
В начале ...........................................................................................................................................22
Как обстоят дела сегодня ..........................................................................................................23
Что может измениться ...............................................................................................................26
Влияние контекста ......................................................................................................................29
Взгляд в будущее .........................................................................................................................30
Библиография...............................................................................................................................33
Глава 2. Достоверность, или Почему мы настаиваем на том,
чтобы нас убедили ................................................................ 36
Лютц Прекелт, Мэриан Петр
Как появляются доказательства в области технологии программирования ..........36
Достоверность и релевантность .............................................................................................38
Объединение доказательств ....................................................................................................42
Виды доказательств, их сильные и слабые стороны .......................................................44
Общество, культура, технология программирования и вы ...........................................52
Благодарности ..............................................................................................................................53
Библиография...............................................................................................................................53
Глава 3. Что можно узнать из систематического обзора .................. 55
Барбара Китченхэм
Общие сведения о систематических обзорах .....................................................................56
Достоинства и недостатки систематических обзоров .....................................................59
Систематические обзоры в области технологий программирования .......................64
Гибкие методы ..............................................................................................................................66
Заключение ....................................................................................................................................70
Библиография...............................................................................................................................71
Глава 4. Качественные методы в области технологий
программирования ................................................................ 76
Эндрю Ко
Что такое «качественные методы» ........................................................................................77
Чтение результатов качественных исследований ............................................................79
Применение качественных методов на практике .............................................................81
Обобщение результатов качественных исследований ...................................................83
О систематичности качественных методов ........................................................................84
Библиография...............................................................................................................................84
Глава 5. Уроки практического применения: становление
метода QIP ............................................................................. 85
Виктор Р. Базили
Сложность исследований в области технологий программирования ......................85
Реалистичный подход к эмпирическим исследованиям ...............................................86
Лаборатория технологий программирования NASA:
испытательная площадка для эмпирических исследований .....................................87
QIP ....................................................................................................................................................88
Заключение ....................................................................................................................................95
Библиография...............................................................................................................................96
Глава 6. Личность, интеллект и опыт: влияние на разработку ........ 98
Джо Э. Ханней
Как узнать хорошего программиста ......................................................................................99
Индивид и среда.........................................................................................................................114
Расширенная модель интеллекта .........................................................................................117
Заключение ..................................................................................................................................121
Библиография.............................................................................................................................123
Глава 7. Почему так трудно научиться программировать ................ 130
Марк Гуздьял
Действительно ли у студентов возникают трудности ..................................................131
Группа Маккракена ...................................................................................................................132
Группа Листера ...........................................................................................................................133
Естественное понимание ........................................................................................................134
Совершенствование инструментария и визуальное программирование ..............136
Роль контекстуализации .........................................................................................................138
Заключение ..................................................................................................................................141
Библиография.............................................................................................................................142
Глава 8. Кроме количества строк нужны ли дополнительные
метрики сложности? ........................................................... 145
Исраэль Херрайц, Ахмед Э. Хассан
Выбор продукта ..........................................................................................................................146
Метрики исходного кода.........................................................................................................147
Анализ выборки .........................................................................................................................148
Статистический анализ ...........................................................................................................153
Общий анализ .............................................................................................................................153
Замечания по поводу статистической методологии .....................................................159
Так нужны ли дополнительные метрики сложности ....................................................160
Библиография.............................................................................................................................161
Часть II. Конкретные вопросы технологий
программирования
Глава 9. Автоматизированная система прогнозирования
дефектов .............................................................................. 164
Элейн Дж. Вьюкер, Томас Дж. Острэнд
Распределение дефектов .........................................................................................................164
Характеристики дефектных файлов ...................................................................................168
Обзор модели прогнозирования ..........................................................................................169
Репликация и изменение модели прогнозирования .....................................................171
Создание программы ................................................................................................................176
Предупреждение ........................................................................................................................177
Библиография.............................................................................................................................180
Глава 10. Архитектурное планирование. Сколько и когда ............... 181
Барри Бем
Изменяется ли стоимость внесения изменений на протяжении
жизненного цикла проекта? ................................................................................................181
Сколько архитектурного планирования реально необходимо ..................................182
Так сколько архитектурного планирования реально необходимо ...........................198
Нужно ли проводить архитектурное планирование заранее .....................................202
Выводы ..........................................................................................................................................202
Библиография.............................................................................................................................203
Глава 11. Следствие из закона Конвея .............................................. 206
Кристиан Берд
Закон Конвея ..............................................................................................................................206
Координация, конгруэнтность и производительность .................................................208
Координация при разработке продуктов с открытым кодом .....................................213
Заключение ..................................................................................................................................217
Библиография.............................................................................................................................218
Глава 12. Насколько эффективна разработка
через тестирование ............................................................. 219
Бурак Турхан, Лукас Леймен, Мэделайн Дьеп,
Хакан Эрдогму, Форрест Шалл
Лекарство TDD — что это такое ...........................................................................................220
Сводка клинических испытаний TDD...............................................................................221
Выводы ..........................................................................................................................................229
Благодарности ............................................................................................................................230
Общая библиография ..............................................................................................................230
Данные клинических испытаний TDD..............................................................................230
Глава 13. Почему в области компьютерных технологий
так мало женщин? ............................................................... 233
Мишель А. Уайткрафт, Уэнди М. Уильямс
Почему так мало женщин? .....................................................................................................234
А нужно ли? .................................................................................................................................240
Заключение ..................................................................................................................................248
Библиография.............................................................................................................................249
Глава 14. Два сравнения языков программирования ....................... 252
Лютц Прекелт
Сражение языков .......................................................................................................................253
Plat_forms: культура и технологии веб-разработки .......................................................261
И что? ............................................................................................................................................270
Библиография.............................................................................................................................271
Глава 15. Войны качества. Открытый код против
коммерческих продуктов .................................................... 273
Диомидис Спинеллис
Великие сражения прошлого ................................................................................................274
Поле боя ........................................................................................................................................275
В бой ...............................................................................................................................................279
Результаты и последствия ......................................................................................................300
Благодарности и сведения о личной заинтересованности ..........................................305
Библиография.............................................................................................................................305
Глава 16. Разговоры о программном коде ......................................... 309
Роберт Делайн
День из жизни программиста ................................................................................................309
О типичности поведения программистов .........................................................................311
О чем разговор? ..........................................................................................................................312
Получение ответов на вопросы .............................................................................................312
Поиски логического обоснования .......................................................................................314
Прерывания и многозадачность ...........................................................................................315
О чем спрашивают программисты.......................................................................................315
Гибкие методологии лучше подходят для общения? ....................................................321
Программная модель общения .............................................................................................322
Библиография.............................................................................................................................324
Глава 17. Парное программирование ................................................ 325
Лори Уильямс
История парного программирования .................................................................................326
Распределенное парное программирование .....................................................................334
Проблемы .....................................................................................................................................335
Выводы ..........................................................................................................................................336
Благодарности ............................................................................................................................336
Библиография.............................................................................................................................337
Глава 18. Современное рецензирование кода .................................. 343
Джейсон Коэн
Здравый смысл ...........................................................................................................................343
Индивидуальное рецензирование кода .............................................................................344
Динамика в группах ..................................................................................................................347
Заключение ..................................................................................................................................350
Библиография.............................................................................................................................351
Глава 19. Общая мастерская или закрытые двери? ......................... 352
Хорхе Аранда
Закрытые двери ..........................................................................................................................352
Общая мастерская .....................................................................................................................355
Производственные процессы ................................................................................................358
И последнее… ..............................................................................................................................360
Библиография.............................................................................................................................360
Глава 20. Выявление зависимостей и управление ими при
глобальной разработке программного обеспечения ....... 362
Марсело Катальдо
Почему возникают проблемы с координацией в GSD .................................................363
Зависимости и их социально-технический дуализм ....................................................364
От теории к практике ...............................................................................................................375
Перспективные направления ................................................................................................379
Библиография.............................................................................................................................382
Глава 21. Насколько эффективна модуляризация ........................... 385
Нейл Томас, Гейл Мерфи
Системы ........................................................................................................................................386
Что такое изменение .................................................................................................................387
Что такое модуль .......................................................................................................................392
Результаты ...................................................................................................................................394
Угрозы валидности ....................................................................................................................400
Заключение ..................................................................................................................................401
Библиография.............................................................................................................................402
Глава 22. Доказательства в пользу паттернов проектирования ..... 404
Уолтер Тиши
Примеры паттернов проектирования .................................................................................405
Почему паттерны проектирования могут работать .......................................................408
Выводы ..........................................................................................................................................422
Заключение ..................................................................................................................................424
Благодарности ............................................................................................................................425
Библиография.............................................................................................................................425
Глава 23. Научно обоснованное прогнозирование сбоев ................. 427
Начьяппан Нагаппан, Томас Болл
Введение .......................................................................................................................................428
Покрытие кода ............................................................................................................................429
Текучесть кода ............................................................................................................................430
Сложность кода ..........................................................................................................................433
Зависимости кода ......................................................................................................................435
Организационные структуры ................................................................................................436
Интегрированный метод прогнозирования сбоев .........................................................438
Выводы ..........................................................................................................................................443
Благодарности ............................................................................................................................444
Библиография.............................................................................................................................444
Глава 24. Искусство сбора сообщений об ошибках .......................... 447
Рахул Премрадж, Томас Циммерманн
Хорошие и плохие сообщения об ошибках ......................................................................447
Какими свойствами должно обладать хорошее сообщение об ошибке ..................448
Результаты опроса .....................................................................................................................451
Расхождения в представлениях об информации ...........................................................454
Проблемы с сообщениями об ошибках ..............................................................................456
О полезности дублирующихся сообщений об ошибках ..............................................458
Не все ошибки исправляются ...............................................................................................461
Заключение ..................................................................................................................................462
Благодарности ............................................................................................................................463
Библиография.............................................................................................................................463
Глава 25. Откуда берутся дефекты в программных продуктах ....... 465
Дьюэйн Перри
Исследование дефектов в программных продуктах ......................................................465
Контекст исследования ...........................................................................................................467
Фаза 1: Общий опрос ...............................................................................................................468
Фаза 2: Опрос по дефектам проектирования/программирования ..........................474
Дефекты интерфейса и дефекты реализации ..................................................................496
Чему следует верить в этих результатах ............................................................................498
Что мы узнали.............................................................................................................................502
Благодарности ............................................................................................................................504
Библиография.............................................................................................................................504
Глава 26. Первые шаги профессионала: недавний выпускник
в своем первом программном проекте .............................. 507
Эндрю Бегел, Бет Саймон
Методология исследования ...................................................................................................509
Задача разработки программного продукта .....................................................................513
Сильные и слабые стороны начинающих разработчиков ...........................................517
Размышления ..............................................................................................................................520
Первые шаги ................................................................................................................................520
Заблуждения, мешающие обучению ...................................................................................522
О методологии преподавания ...............................................................................................523
Вовлечение в процесс изменений ........................................................................................525
Библиография.............................................................................................................................528
Глава 27. Анализ данных при сборе доказательств ......................... 530
Ким Себастиан Херциг, Андреас Зеллер
Что именно анализировать ....................................................................................................530
Планирование исследования .................................................................................................531
Введение в анализ данных ......................................................................................................532
Что дальше? .................................................................................................................................540
Благодарности ............................................................................................................................541
Библиография.............................................................................................................................541
Глава 28. Копирование кода как принципиальный подход ............. 544
Майкл Годфри, Кори Кэпсер
Пример клонирования кода ...................................................................................................545
Обнаружение клонированного кода в программном продукте .................................546
Практика клонирования кода ...............................................................................................548
Наше исследование ...................................................................................................................553
Заключение ..................................................................................................................................556
Библиография.............................................................................................................................557
Глава 29. Удобны ли ваши API? .......................................................... 558
Стивен Кларк
Почему важно изучать удобство использования API...................................................559
Первые попытки изучения удобства API .........................................................................561
Если не получилось с первого раза .....................................................................................564
Адаптация к разным стилям работы ...................................................................................571
Заключение ..................................................................................................................................576
Библиография.............................................................................................................................577
Глава 30. Что означает «10x», или Измерение различий
в производительности труда программистов ................... 578
Стив Макконнелл
Различия в производительности труда программистов ..............................................578
Проблемы измерения производительности труда программистов .........................580
Различия в производительности труда групп .................................................................582
Библиография.............................................................................................................................584