Идеальная разработка ПО

Практические рекомендации.

Э.Орама и Г.Уилсон "Идеальная разработка ПО. Рецепты лучших программистов" Питер, 2012 год, 592 стр., O’Reilly, (86,3 мб, pdf)

Идеальная разработка ПО - это собрание статей разных авторов под общей редакцией Э.Орама и Г.Уилсон - известных уже читателям ИТ-литературы по книге "Идеальный код". Все главы написаны высокопрофессиональными специалистами и экспертами в области разработки ПО, раскрывающими научный подход к методам и технологии программирования в целом.

Порядок чтения глав, может быть любой. Но в общем контексте первая часть (Общие принципы поиска и использования доказательств) дополняет вторую (Конкретные вопросы технологий программирования) и подводит базу для её понимания, что в свою очередь позволит применять самые качественные методы и рецепты на практике.
ISBN 978-5-459-01099-2
Оглавление книги.

Часть 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
(Марсело Катальдо)
Почему возникают проблемы с координацией в 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. Что означает «10х», или Измерение различий в производительности труда программистов 578
(Стив Макконнелл)
Различия в производительности труда программистов 578
Проблемы измерения производительности труда программистов 580
Различия в производительности труда групп 582
Библиография 584

Скачать книгу бесплатно86,3 мб, pdf