Основная цель книги — показать, что разработка программного обеспечения — это все-таки инженерная дисциплина. Я описываю практический подход к разработке, который подразумевает намеренно рациональный научный стиль мышления для решения задач. Эта идея сформировалась у меня на основе последовательного применения знаний о разработке за последние несколько десятилетий. Мне хочется убедить вас, что инженерия в действительности отличается от ваших представлений о ней и ее можно успешно и эффективно использовать при создании программных продуктов. Я расскажу об основах инженерного подхода к разработке и поясню, почему он работает.

ПЕРЕОСМЫСЛЕНИЕ ПОНЯТИЯ ПРОГРАММНОЙ ИНЖЕНЕРИИ.
Я буквально выстрадал название этой книги. Не потому, что я не знал, как ее озаглавить, а потому, что в нашей сфере понятие инженерии настолько трансформировалось, что приобрело почти противоположное значение.
В разработке этот термин часто употребляют как простой синоним кодирования либо, наоборот, для обозначения чрезмерной бюрократии или следования формальным процедурам. Но это не имеет ничего общего с настоящей инженерией.
В других сферах инженерия означает «что-то, что работает». Это те процессы и методы, которые вы используете, чтобы добиться нужного результата.
Если при использовании методов того, что мы называем программной инженерией, нам не удается разработать лучший продукт в более быстрые сроки, значит, это не инженерные методы и их следует изменить, — вот основная идея данной книги.
ОГЛАВЛЕНИЕ.
О книге «Современная программная инженерия».
Вступительное слово.
Введение.
Определение программной инженерии.
Структура книги.
Благодарности.
Об авторе.
От издательства.
I ЧТО ТАКОЕ ПРОГРАММНАЯ ИНЖЕНЕРИЯ.
ГЛАВА 1. ВВЕДЕНИЕ.
Инженерия — практическое применение теоретической науки.
Что такое программная инженерия?.
Переосмысление понятия программной инженерии.
Зарождение программной инженерии.
Меняя парадигму.
Итоги.
ГЛАВА 2. ЧТО ТАКОЕ ИНЖЕНЕРИЯ?.
Производство не наша проблема.
Инженерия проектная, а не производственная.
Рабочее определение инженерии.
Инженерия — это не код.
Почему инженерия важна?.
Ограничения ремесленного производства.
Точность и масштабируемость.
Управление сложностью.
Повторяемость и точность измерений.
Инженерия, креативность и ремесло.
Почему то, чем мы занимаемся, — это не программная инженерия.
Компромиссы.
Иллюзия прогресса.
От ремесла к инженерному делу.
Ремесла недостаточно.
Пришло ли время мыслить иначе?.
Итоги.
ГЛАВА 3. ОСНОВЫ ИНЖЕНЕРНОГО ПОДХОДА.
Разработка — это индустрия изменений?.
Важность измерений.
Использование метрик стабильности и пропускной способности.
Основы программной инженерии.
Экспертное познание.
Экспертное управление сложностью.
Итоги.
II ОПТИМИЗАЦИЯ ДЛЯ ОБУЧЕНИЯ.
ГЛАВА 4. ИТЕРАТИВНЫЙ ПОДХОД.
Практические преимущества итеративного подхода.
Итерация как стратегия защитного проектирования.
Сила планирования.
Практическая ценность итеративного подхода.
Итоги.
ГЛАВА 5. ОБРАТНАЯ СВЯЗЬ.
Практический пример важности обратной связи.
Обратная связь в кодировании.
Обратная связь в интеграции.
Обратная связь в дизайне.
Обратная связь в архитектуре.
Быстрая обратная связь предпочтительнее.
Обратная связь в дизайне продукта.
Обратная связь в организации и культуре.
Итоги.
ГЛАВА 6. ИНКРЕМЕНТАЛИЗМ.
Важность модульности.
Инкрементализм в организации.
Инструменты инкрементализма.
Ограничение влияния изменений.
Инкрементальный дизайн.
Итоги.
ГЛАВА 7. ЭМПИРИЗМ.
Основано на реальности.
Отделяйте эмпиризм от эксперимента.
«Я знаю ошибку!».
Избегайте самообмана.
Изобретайте реальность, соответствующую аргументам.
Опирайтесь на реальность.
Итоги.
ГЛАВА 8. БЫТЬ ЭКСПЕРИМЕНТАТОРОМ.
Что значит быть экспериментатором?.
Обратная связь.
Гипотеза.
Измерения.
Управление переменными.
Автоматизированное тестирование как эксперимент.
Помещая результаты тестирования в контекст.
Объем эксперимента.
Итоги.
III ОПТИМИЗАЦИЯ ДЛЯ УПРАВЛЕНИЯ СЛОЖНОСТЬЮ.
ГЛАВА 9. МОДУЛЬНОСТЬ.
Признаки модульности.
Недооценка важности хорошего дизайна.
Важность тестируемости.
Тестируемость повышает модульность.
Службы и модульность.
Развертываемость и модульность.
Модульность в разных масштабах.
Модульность в системах, создаваемых человеком.
Итоги.
ГЛАВА 10. СВЯЗНОСТЬ.
Модульность и связность: основы дизайна.
Базовое снижение связности.
Контекст имеет значение.
Высокопроизводительное программное обеспечение.
Отсылка к связанности.
Обеспечение высокой связности с помощью TDD.
Как добиться связности.
Цена плохой связности.
Связность в человеческих системах.
Итоги.
ГЛАВА 11. РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТИ.
Внедрение зависимости.
Разделение необходимой и случайной сложности.
Важность DDD.
Тестируемость.
Порты и адаптеры.
Когда использовать порты и адаптеры.
Что такое API?.
Использование TDD для разделения ответственности.
Итоги.
ГЛАВА 12. СОКРЫТИЕ ИНФОРМАЦИИ И АБСТРАКЦИЯ.
Абстракция или сокрытие информации.
Почему образуются большие комки грязи?.
Организационные и культурные проблемы.
Технические вопросы и вопросы проектирования.
Страх чрезмерного усложнения.
Повышение абстракции с помощью тестирования.
Сила абстракции.
Дырявые абстракции.
Выбор подходящих абстракций.
Абстракции из предметной области.
Абстрактная случайная сложность.
Изолируйте код от сторонних систем-.
Всегда скрывайте информацию, если это возможно.
Итоги.
ГЛАВА 13. УПРАВЛЕНИЕ СВЯЗАННОСТЬЮ.
Стоимость связанности.
Масштабирование.
Микросервисы.
Снижение связанности может означать больше кода.
Слабая связанность — не единственная важная деталь.
Выбор в пользу слабой связанности.
В чем отличие от разделения ответственности?.
DRY — это слишком просто.
Асинхронность как инструмент слабой связанности.
Проектирование слабой связанности.
Слабая связанность в организациях.
Итоги.
IV ИНСТРУМЕНТЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ.
Глава 14. ИНСТРУМЕНТЫ ИНЖЕНЕРНОЙ ДИСЦИПЛИНЫ.
Что такое программная разработка.
Тестируемость как инструмент.
Точки измерения.
Сложности с обеспечением тестируемости.
Как улучшить тестируемость.
Развертываемость.
Скорость.
Управление переменными.
Непрерывная доставка.
Общие инструменты для поддержки разработки.
Итоги.
Глава 15. СОВРЕМЕННЫЙ ИНЖЕНЕР-РАЗРАБОТЧИК.
Инженерия как человеко-ориентированный процесс.
Организации — лидеры в цифровой сфере.
Результаты и механизмы.
Устойчивость и широкая применимость.
Основы инженерной дисциплины.
Итоги.
Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Современная программная инженерия, Фарли Д., 2023 - fileskachat.com, быстрое и бесплатное скачивание.
Скачать pdf
Ниже можно купить эту книгу, если она есть в продаже, и похожие книги по лучшей цене со скидкой с доставкой по всей России.Купить книги
Скачать - pdf - Яндекс.Диск.
Дата публикации:
Теги: учебник по программированию :: программирование :: Фарли
Смотрите также учебники, книги и учебные материалы:
Предыдущие статьи:








