Технология программирования
Информатика и вычислительная техника
  • формат djvu
  • размер 19.09 МБ
  • добавлен 27 декабря 2010 г.
Эванс Эрик. Предметно-ориентированное проектирование (DDD): структуризация сложных программных систем
Пер. с англ. — М.: Вильямc, 2011. — 448 с.: ил.
Оригинал: Domain-Driven Design: Tackling Complexity in the Heart of Software

Предисловие Мартина Фаулера

ISBN 978-5-8459-1597-9 (рус. )
ББК 32.973.26-018.2.75
Файл содержит OCR и ссылочное оглавление.

Классическая книга Э. Эванса освещает наиболее общий, стратегический круг вопросов, связанных с объектно-ориентированной разработкой программного обеспечения. Это переработка и структуризация знаний о предметных областях, применение типовых архитектурных шаблонов, построение и анализ моделей предметных областей, проектирование программных объектов с точки зрения качества их взаимодействия и передачи логической структуры знаний, организация программ на основе крупномасштабных структур, выработка общего языка и стратегии коммуникации в группе. Подход автора строится на динамичном рефакторинге модели и постоянной дистилляции знаний. Это позволяет достигнуть высокой степени гармонии между логикой предметной области и кодом программы, а также достаточной гибкости программной архитектуры для целей удобной доработки и интеграции программного обеспечения. Книга насыщена практическими примерами из реальных проектов.
Мировое сообщество программистов признает, что моделирование предметных областей - ключевой раздел проектирования программного обеспечения. В моделях предметных областей разработчики выражают сложные функции своих программ, реализуя их затем в таком виде, который отвечает реальным потребностям пользователей. Но несмотря на очевидную важность предмета, существует очень мало пособий по эффективному внедрению моделирования предметных областей в практику разработки программ.
Книга Эрика Эванса заполняет этот пробел. Она посвящена не отдельным технологиям, а систематическому предметно-ориентированному подходу. В ней представлен широкий набор приемов и методик, основанных на практическом опыте, и фундаментальных принципов, помогающих в реализации программных проектов из сложных предметных областей. Органично переплетая практику проектирования и реализации программ, эта книга содержит множество фактических примеров, иллюстрирующих применение общих стратегических принципов в реальных программных проектах.
Из книги читатель узнает, как с помощью модели предметной области придать разработке сложной системы нужную направленность и динамику. Выделены основные приемы и образцы-шаблоны, образующие общий язык группы разработчиков. Особо подчеркивается необходимость рефакторинга не только кода, но и модели в его основе, что в сочетании с итерационной agile-методикой приводит к углублению знаний о предметной области и повышению качества взаимодействия между специалистами и программистами. Подход книги строится именно на этом фундаменте, предлагая модели и архитектуры для систем и организаций любой сложности.

Содержание

Введение
Модель предметной области в работе
    Роль и выбор модели
    Алгоритмическая часть программы
• Переработка знаний
    Составляющие эффективного моделирования
    Переработка знаний
    Непрерывное обучение
    Информоемкая архитектура
    Извлечение скрытого понятия
    Углубленные модели
• Коммуникация и язык
    Единый язык
    Моделирование вслух
    Одна команда — один язык
    Документация, диаграммы, схемы
    Письменная проектная документация
    Выполняемый код решает все
    Пояснительные модели
• Связь между моделью и реализацией
    Проектирование по модели
    Парадигмы моделирования и средства программирования
    Анатомия модели: зачем модель нужна пользователю
    Моделировщики-практики
Структурные элементы предметно-ориентированного проектирования
• Изоляция предметной области
    Многоуровневая архитектура
    Связь между уровнями
    Архитектурные среды
    Уровень предметной области - вместилище модели
    Антишаблон интеллектуального интерфейса пользователя
    Другие виды изоляции
• Модель, выраженная в программе
    Ассоциации
    Сущности (указуемые объекты)
    Моделирование сущностей
    Проектирование операций идентификации
    Объекты-значения
    Проектирование объектов-значений
    Проектирование ассоциаций с помощью ОБЪЕКТОВ-ЗНАЧЕНИЙ
    Службы
    Службы и изоляция уровня предметной области
    Степень модульности
    Доступ к службам
    Модули (пакеты)
    Гибкая модульность
    Ловушки инфраструктуры
    Парадигмы моделирования
    Причины доминирования объектной парадигмы
   He-объекты в объектном мире
    Проектирование по модели в условиях смешения парадигм
• Цикл существования объектов модели
    Агрегаты
    Фабрики
    Выбор фабрик и их местонахождения
    Когда достаточно конструктора
    Проектирование интерфейса
    Где реализовать логику инвариантов?
    Отличия между фабриками сущностей и фабриками объектов-значений
    Восстановление хранимых объектов
    Хранилища
    Запросы к хранилищам
    Клиентам безразлична реализация хранилищ, а разработчикам - - нет
    Реализация хранилища
    Работа в рамках архитектурной среды
    Связь с фабриками
    Проектирование объектов для реляционной базы данных
• Работа с языком: расширенный пример
    Введение в систему управления доставкой
    Изоляция предметной области: добавление прикладных операций
    Отделение сущностей от значений
    Роль и другие атрибуты
    Проектирование ассоциаций в модели
    Границы агрегатов
    Выбор хранилищ
    Проход по сценариям
    Пример рабочей функции: изменение места назначения груза
    Пример рабочей функции: повторение заказов
    Создание объектов
    Фабрики и конструкторы для объекта Груз
    Добавление объекта Манипуляция
    Перерыв на рефакторинг: альтернативный агрегат Груз
    Модули в модели грузопоставок
    Новая функция: распределение заказов ,
    Связь между двумя системами
    Усовершенствование модели: введение подразделений
    Оптимизация быстродействия
    Итоги
Углубляющий рефакторинг
    Уровни рефакторинга
    Углубленные модели
    Углубленная модель и гибкая архитектура
    Процесс познания
• Качественный скачок
    История успеха
    Модель неплоха, но.
    Скачок
    Углубленная модель
    Трезвое решение
    Воздаяние
    Потенциал
    Концентрация на основах
    Каскад озарений
• Перевод неявных понятий в явные
    Извлечение понятий
    Внимание к языку
    Выявление узких мест
    Размышление над противоречиями
    Чтение книг
    Метод проб и ошибок
    Моделирование неочевидных понятий
    Явные условия-ограничения
    Процессы как объекты предметной области
    Спецификация
    Применение и реализация спецификаций
• Гибкая архитектура
    Информативные интерфейсы
    Функции без побочных эффектов
    Утверждения
    Концептуальные контуры
    Изолированные классы
    Замкнутость операций
    Декларативная архитектура
    Декларативный стиль архитектуры
    Углы атаки
    Выделение подобластей
    Использование сложившихся формальных систем
• Применение аналитических шаблонов
    Аналитические шаблоны как источник знания
• Шаблоны и модель
    Стратегия
    Композит
    Почему не мелкий объект (flyweight)?
• Углубляющий рефакторинг
    Инициирование
    Исследовательские группы
    Предыдущие наработки
    Архитектура для разработчиков
    Расчет времени
    Кризис как потенциальная возможность
Стратегическое проектирование
• Поддержание целостности модели
    Ограниченный контекст
    Распознавание дефектов внутри ограниченного контекста
    Непрерывная интеграция
    Карта контекстов
    Тестирование в границах контекста
    Организация и документирование карт контекстов
    Взаимосвязи между ограниченными контекстами
    Общее ядро
    Группы заказчик-поставщик
    Конформист
    Предохранительный уровень
    Проектирование интерфейса предохранительного уровня
    Реализация предохранительного уровня
    Поучительная история
    Отдельное существование
    Службы с открытым протоколом
    Общедоступный язык
    Унификация слона
    Выбор стратегии построения контекстов
    Уровень принятия решений: разработчики или выше
    Помещение самих себя в контекст
    Преобразование границ
    Принятие того, что нельзя изменить: контуры внешних систем
    Взаимоотношения с внешними системами
    Проектируемая система
    Учет особых случаев отдельными моделями
    Установка системы
    Компромиссы
    Если проект уже в работе
    Преобразования
    Слияние контекстов: от отдельного существования к общему ядру
    Слияние контекстов: от общего ядра к непрерывной интеграции
    Вытеснение устаревшей системы
    От открытого протокола к общедоступному языку
• Дистилляция
    Смысловое ядро
    Выбор ядра
    Как распределить работу
    Эскалация дистилляции
    Неспециализированные подобласти
    Неспециализированный не значит хорошо переносимый
    Управление рисками в проекте
    Введение в предметную область
    Схематическое ядро
    Дистилляционный документ
    Разметка ядра
    Дистилляционный документ как методическое средство
    Связные механизмы
    Сравнение связных механизмов и неспециализированных подобластей
    Когда механизм входит в смысловое ядро
    Дистилляция к декларативному стилю
    Выделенное ядро
    Цена создания выделенного ядра
    Эволюция коллективных решений
    Абстрактное ядро
    Дистилляция в углубленных моделях
    Выбор целей рефакторинга
• Крупномасштабная структура
    Эволюционная организация
    Метафорический образ системы
    Наивный образ: почему он нам не нужен
    Уровни разделения обязанностей
    Выбор подходящих уровней
    Уровень знаний
    Среда подключаемых компонентов
    Насколько жесткой должна быть структура
    Структурирующий рефакторинг
    Минимализм
    Коммуникативность и самодисциплина
    Реструктуризация дает гибкую архитектуру
    Дистилляция
• Объединение стратегических подходов
    Сочетание крупномасштабных структур и ограниченных контекстов
    Сочетание крупномасштабной структуры и дистилляции
    Первоначальная оценка
    Кому планировать стратегию
    Самозарождение структуры в ходе разработки
    Смежная группа по разработке архитектуры
    Шесть принципов принятия решений при стратегическом проектировании
    То же верно и для технических сред проектирования
    Долой генеральный план
Заключение
    Взгляд в будущее
Приложение. Использование шаблонов в этой книге
Глоссарий
Похожие разделы
Смотрите также

Андон Ф.И., Коваль Г.И., Коротун Т.М., Лаврищева Е.М., Суслов В.Ю. Основы инженерии качества программных систем

  • формат pdf
  • размер 8.1 МБ
  • добавлен 11 августа 2011 г.
Андон Ф.И., Коваль Г.И., Коротун Т.М., Лаврищева Е.М., Суслов В.Ю. Основы инженерии качества программных систем. 2-е изд., перераб. и доп. - К.: Академпериодика, 2007. – 672 с. Определяется ядро знаний в области инженерии качества программных систем. Рассматриваются процессы жизненного цикла, связанные с обеспечением качества – процессы верификации, валидации, тестирования, измерения, управления риском, обеспечения гарантии качества, управления...

Канер Сэм, Фолк Джек, Нгуен Кек Енг. Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений

  • формат pdf
  • размер 23.63 МБ
  • добавлен 10 октября 2009 г.
Книга именитых специалистов в области разработки программного обеспечения посвящена одному из наиболее важных и нетривиальных аспектов в рамках процесса создания сложных программных систем. Книгу отличает, прежде всего, привязка к условиям реального мира на примерах известных компаний-разработчиков, находящихся в Силиконовой долине. Подробно рассматривается широкий спектр вопросов: от организации процесса тестирования до собственно тестирования п...

Лаврищева Е.М., Грищенко В.Н. Сборочное программирование. Основы индустрии программных продуктов

  • формат pdf
  • размер 3.32 МБ
  • добавлен 17 августа 2011 г.
Лаврищева Е.М., Грищенко В.Н. Сборочное программирование. Основы индустрии программных продуктов: 2-изд. Дополненное и переработанное.–Киев: Наук. думка, 2009.–372с.– ISВN 978-966-00-0848-1. В монографии систематизированы существующие подходы и методы сборки сложных программ из более простых программных ресурсов (модулей, компонентов, компонентов повторного использования – КПИ и программ). Приведено теоретическое обобщение и обоснование метода...

Липаев В.В. Документирование сложных программных средств

  • формат doc
  • размер 416.57 КБ
  • добавлен 16 декабря 2008 г.
Документация в жизненном цикле сложных программных средств. Стандартизация документирования процессов и продуктов сложных программных средств. Структура и содержание – Шаблоны документов сложных программных средств

Липаев В.В. Качество программных средств

  • формат djvu
  • размер 5.65 МБ
  • добавлен 09 ноября 2010 г.
2002 г. В методических рекомендациях рассмотрены основные понятия, факторы и методы обеспечения качества в жизненном цикле (ЖЦ) сложных программных средств (ПС). Систематически изложены основы стандартизации в области качества ПС, а также содержание комплекса международных стандартов, регламентирующих качество их ЖЦ. Представлены принципы и методы верификации, тестирования и испытаний сложных комплексов программ.

Липаев В.В. Программная инженерия

  • формат pdf
  • размер 9.33 МБ
  • добавлен 28 августа 2008 г.
Методологические основы. (Лекции). Москва 2006 г. Курс лекций предназначен для представления студентам, аспирантам и менеджерам проектов современного комплекса задач, методов и стандартов программной инженерии - создания и развития сложных, многоверсионных, тиражируемых программных средств и баз данных требуемого высокого качества. Содержание: Предисловие. Программная инженерия в жизненном цикле программных средств. Профили стандартоы жизненного...

Липаев В.В. Сертификация программных средств. Учебник

  • формат pdf
  • размер 6.96 МБ
  • добавлен 27 сентября 2011 г.
Липаев В.В. Сертификация программных средств. Учебник. - М.: СИНТЕГ, 2010. - 344с. ISBN 978-5-89638-114-3 В учебнике изложены принципы, методы и средства обеспечения качества в жизненном цикле сложных программных средств (ПС), контроль и подтверждение их соответствие исходным требованиям заказчиков с учетом действующей законодательной базы сертификации и требований национальных и международных стандартов. Качество ответственных программных продук...

Орлов С. Технологии разработки программного обеспечения

  • формат doc
  • размер 2.39 МБ
  • добавлен 14 июня 2008 г.
Учебник посвящен систематическому изложению принципов, моделей и методов, используемых в инженерном цикле разработки сложных программных продуктов. Изложены классические основы программной инженерии, показаны последние научные и практические достижения, характеризующие динамику развития этой области; продемонстрирован комплексный подход к решению наиболее важных вопросов, возникающих в больших программных проектах. В основу материала положен двен...

Силаенков А.Н. Лекции по технологии программирования

  • формат doc
  • размер 3.88 МБ
  • добавлен 24 мая 2009 г.
Введение в технологию программирования. Характеристики программного обеспечения. Жизненный цикл программного обеспечения. Этапы решения задач на ЭВМ. Этапы разработки программы. Структурное программирование. Пошаговая детализация - основной метод построения текста программного модуля. Объектно-ориентированное программирование. Программирование ветвлений и циклов. Объектно - ориентированное программирование. Программирование обработки таблиц. Объе...

Соммервилл, Иан. Инженерия программного обеспечения

  • формат doc
  • размер 14.2 МБ
  • добавлен 08 июня 2008 г.
Соммервилл, Иан. Инженерия программного обеспечения, 6-е издание.: Пер. с англ. – М.: Издательский дом "Вильямс", 2002. – 624 с.: ил. === Данная книга является прекрасным введением в инженерию программного обеспечения. Здесь дана широкая панорама тем инженерии ПО, охватывающих все этапы и технологии разработки программных систем. В семи частях книги представлен весь спектр процессов, ведущих к созданию программного обеспечения: от начальной разра...