Онлайн книга
Оглавление книги
- Предисловие
- Вступление
- Благодарности
- Об авторе
- Часть I. Введение
- Глава 1. Что такое дизайн и архитектура?
- Цель?
- Пример из практики
- Причины неприятностей
- Точка зрения руководства
- Что не так?
- Заключение
- Глава 2. История о двух ценностях
- Поведение
- Архитектура
- Наибольшая ценность
- Матрица Эйзенхауэра
- Битва за архитектуру
- Часть II. Начальные основы: парадигмы программирования
- Глава 3. Обзор парадигм
- Структурное программирование
- Объектно-ориентированное программирование
- Функциональное программирование
- Пища для ума
- Заключение
- Глава 4. Структурное программирование
- Доказательство
- Объявление вредным
- Функциональная декомпозиция
- Формальные доказательства отсутствуют
- Наука во спасение
- Тестирование
- Заключение
- Глава 5. Объектно- ориентированное программирование
- Инкапсуляция?
- Наследование?
- Полиморфизм?
- Сильные стороны полиморфизма
- Инверсия зависимости
- Заключение
- Глава 6. Функциональное программирование
- Квадраты целых чисел
- Неизменяемость и архитектура
- Ограничение изменяемости
- Регистрация событий
- Заключение
- Часть III. Принципы дизайна
- Глава 7. Принцип единственной ответственности
- Признак 1: непреднамеренное дублирование
- Признак 2: слияния
- Решения
- Заключение
- Глава 8. Принцип открытости/закрытости
- Мысленный эксперимент
- Управление направлением
- Сокрытие информации
- Заключение
- Глава 9. Принцип подстановки Барбары Лисков
- Руководство по использованию наследования
- Проблема квадрат/прямоугольник
- LSP и архитектура
- Пример нарушения LSP
- Заключение
- Глава 10. Принцип разделения интерфейсов
- Принцип разделения интерфейсов и язык
- Принцип разделения интерфейсов и архитектура
- Заключение
- Глава 11. Принцип инверсии зависимости
- Стабильные абстракции
- Фабрики
- Конкретные компоненты
- Заключение
- Часть IV. Принципы организации компонентов
- Глава 12. Компоненты
- Краткая история компонентов
- Перемещаемость
- Компоновщики
- Заключение
- Глава 13. Связность компонентов
- Принцип эквивалентности повторного использования и выпусков
- Принцип согласованного изменения
- Сходство с принципом единственной ответственности
- Принцип совместного повторного использования
- Связь с принципом разделения интерфейсов
- Диаграмма противоречий для определения связности компонентов
- Заключение
- Глава 14. Сочетаемость компонентов
- Принцип ацикличности зависимостей
- Еженедельные сборки
- Устранение циклических зависимостей
- Влияние циклов в графе зависимостей компонентов
- Разрыв цикла
- «Изменчивость»
- Проектирование сверху вниз
- Принцип устойчивых зависимостей
- Устойчивость
- Метрики устойчивости
- Не все компоненты должны быть устойчивыми
- Абстрактные компоненты
- Принцип устойчивости абстракций
- Куда поместить высокоуровневые правила?
- Введение в принцип устойчивости абстракций
- Мера абстрактности
- Главная последовательность
- Зона боли
- Зона бесполезности
- Как не попасть в зоны исключения
- Расстояние до главной последовательности
- Заключение
- Часть V. Архитектура
- Глава 15. Что такое архитектура
- Разработка
- Развертывание
- Эффективность работы
- Сопровождение
- Сохранение разнообразия вариантов
- Независимость от устройства
- Нежелательная почта
- Физическая адресация
- Заключение
- Глава 16. Независимость
- Варианты использования
- Эффективность работы
- Разработка
- Развертывание
- Сохранение разнообразия вариантов
- Разделение уровней
- Разделение вариантов использования
- Режим разделения
- Возможность независимой разработки
- Возможность независимого развертывания
- Дублирование
- Режимы разделения (еще раз)
- Заключение
- Глава 17. Границы: проведение разделяющих линий
- Пара печальных историй
- FitNesse
- Какие границы проводить и когда?
- О вводе и выводе
- Архитектура с плагинами
- Аргумент в пользу плагинов
- Заключение
- Глава 18. Анатомия границ
- Пересечение границ
- Ужасный монолит
- Компоненты развертывания
- Потоки выполнения
- Локальные процессы
- Службы
- Заключение
- Глава 19. Политика и уровень
- Уровень
- Заключение
- Глава 20. Бизнес-правила
- Сущности
- Варианты использования
- Модели запросов и ответов
- Заключение
- Глава 21. Кричащая архитектура
- Тема архитектуры
- Цель архитектуры
- А что насчет Веб?
- Фреймворки — это инструменты, а не образ жизни
- Тестируемые архитектуры
- Заключение
- Глава 22. Чистая архитектура
- Правило зависимостей
- Сущности
- Варианты использования
- Адаптеры интерфейсов
- Фреймворки и драйверы
- Толька четыре круга?
- Пересечение границ
- Какие данные пересекают границы
- Типичный сценарий
- Заключение
- Глава 23. Презентаторы и скромные объекты
- Шаблон «Скромный объект»
- Презентаторы и представления
- Тестирование и архитектура
- Шлюзы к базам данных
- Преобразователи данных
- Службы
- Заключение
- Глава 24. Неполные границы
- Пропустить последний шаг
- Одномерные границы
- Фасады
- Заключение
- Глава 25. Уровни и границы
- Охота на Вампуса
- Чистая архитектура?
- Пересечение потоков
- Разбиение потоков
- Заключение
- Глава 26. Главный компонент
- Конечная деталь
- Заключение
- Глава 27. Службы: большие и малые
- Сервисная архитектура?
- Преимущества служб?
- Заблуждение о независимости
- Заблуждение о возможности независимой разработки и развертывания
- Проблема с животными
- Спасение в объектах
- Службы на основе компонентов
- Сквозные задачи
- Заключение
- Глава 28. Границы тестов
- Тесты как компоненты системы
- Проектирование для простоты тестирования
- Программный интерфейс для тестирования
- Структурная зависимость
- Безопасность
- Заключение
- Глава 29. Чистая встраиваемая архитектура
- Тест на профпригодность
- Привязка к оборудованию — узкое место
- Чистая встраиваемая архитектура — архитектура, поддерживающая тестирование
- Не раскрывайте деталей об оборудовании пользователям HAL
- Принцип DRY и директивы условной компиляции
- Заключение
- Часть VI. Детали
- Глава 30. База данных — это деталь
- Реляционные базы данных
- Почему системы баз данных настолько распространены?
- Сохранятся ли диски?
- Детали
- А производительность?
- История
- Заключение
- Глава 31. Веб — это деталь
- Бесконечный маятник
- Вывод
- Заключение
- Глава 32. Фреймворки — это деталь
- Авторы фреймворков
- Неравный брак
- Риски
- Решение
- Объявляю вас
- Заключение
- Глава 33. Практический пример: продажа видео
- Продукт
- Анализ вариантов использования
- Компонентная архитектура
- Управление зависимостями
- Заключение
- Глава 34. Недостающая глава
- Упаковка по уровням
- Упаковка по особенностям
- Порты и адаптеры
- Упаковка по компонентам
- Дьявол в деталях реализации
- Организация и инкапсуляция
- Другие режимы разделения
- Заключение: недостающий совет
- Часть VII. Приложение
- Архитектурная археология
- Профсоюзная система учета
- Laser Trim
- Контроль алюминиевого литья под давлением
- 4-TEL
- Компьютер зоны обслуживания
- Выбор ремонтников для отправки
- Архитектура
- Великая модернизация
- Европа
- В заключение о SAC
- Язык C
- C
- BOSS
- pCCU
- Ловушка планирования
- DLU/DRU
- Архитектура
- VRS
- Название
- Архитектура
- В заключение о VRS
- Электронный секретарь
- Конец электронного секретаря
- Система командирования ремонтников
- Clear Communications
- Обстановка
- Дядюшка Боб
- Телефонный звонок
- ROSE
- Продолжение дискуссий
- ...Под любым другим именем
- Регистрационные экзамены для архитекторов
- Заключение
Автор книги - Роберт Сесил Мартин
Роберт Сесил Мартин / Robert Cecil Martin, также известный как Дядя Боб / Uncle Bob - консультант и автор в области разработки ПО.
Мартин является профессионалом в области разработки ПО с 1970 года, а с 1990 года становится международным консультантом в этой области. За последние 40 лет он участвовал в различных качествах в сотнях проектов. В 2001 году он организует встречу группы, которая создала гибкую методологию разработки ПО из техник экстремального программирования и был первым председателем "Agile Alliance" - группы из семнадцати независимых практиков нескольких ...