Обзор Feature-Driven Development и Domain-Driven Design
-
Upload
andrey-bibichev -
Category
Technology
-
view
3.859 -
download
3
description
Transcript of Обзор Feature-Driven Development и Domain-Driven Design
![Page 1: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/1.jpg)
FDD & DDD
Бибичев Андрейдекабрь 2009 г.
![Page 2: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/2.jpg)
I. ПреамбулаСамая ценная часть доклада :)
![Page 3: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/3.jpg)
![Page 4: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/4.jpg)
ДЮДЮКИ:
TDD
DDDBDD
FDDVDD
Test-Driven Development
Test-Driven Design
Behaviour-Driven Development
Feature-Driven Development
Value-Driven Development
Самая известнаяпрактика
Нынче очень модное направление проектирования
Сменщик TDD
Одна из самых навороченных
Agile-методологий Как затуманить заказчику мозги
![Page 5: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/5.jpg)
Зачем?
![Page 6: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/6.jpg)
Scrum – это
Всё дело в том, что
дерьмоудобрение
а
Scrum-команда – это чернозем
плодороднаяпочва
![Page 7: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/7.jpg)
Scrum-команда
![Page 8: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/8.jpg)
Поэтому:
внедрив Scrum,мы обычно думаем,что теперь всё будет
цвести и пахнутьхорошо само собой
![Page 9: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/9.jpg)
Product Owner
![Page 10: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/10.jpg)
Но
в действительности
растет бурьянпроблемы только начинаются
![Page 11: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/11.jpg)
Архитекторпотрудился…
![Page 12: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/12.jpg)
И
если ничего не делать, то
почва истощаетсякоманда разваливается
![Page 13: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/13.jpg)
Рука HR-а
![Page 14: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/14.jpg)
Или
всё скатывается к
копанию в земле по локоть
Code-&-Fix
![Page 15: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/15.jpg)
Менеджер
Аналитик
Архитектор
Контроль качества
![Page 16: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/16.jpg)
Итак,
оказывается еще нужны
семяна и техника
идеи и тех. практики и приемы
что выращивать как выращивать
![Page 17: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/17.jpg)
Прибыльный проект
Обратите внимание на слоистую архитектуру
![Page 18: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/18.jpg)
Шо, опять механизация?RUP
![Page 19: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/19.jpg)
DoWhatever(0)
RUP(120+)
Итеративные процессы
Code-&-Fix(1)
XP(13)
Scrum(9)
Agile
Kanban(3)
Lean
Pull-загрузка задачами
(с) «Процессная ось» имени Хенрика Книберга
![Page 20: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/20.jpg)
• Architecture Reviewer / • Business Designer / • Business-Model Reviewer / • Business-Process Analyst / • Capsule Designer / • Change Control Manager / • Code Reviewer / • Configuration Manager / • Course Developer / • Database Designer / • Deployment Manager / • Design Reviewer / • Designer / • Graphic
Artist / • Implementer / • Integrator / • Process Engineer / • Project Manager / • Project Reviewer / • Requirements Reviewer / • Requirements Specifier / • Software Architect / • Stakeholder / • System
Administrator / • System Analyst / • Technical Writer / • Test Analyst / • Test Designer / • Test Manager / • Tester / • Tool Specialist / • User-Interface Designer / • Architectural analysis / • Assess Viability of architectural proof-of-concept / • Capsule design / • Class design / • Construct architectural proof-ofconcept / • Database design / • Describe distribution / • Describe the run-time architecture / •
Design test packages and classes / • Develop design guidelines / • Develop programming guidelines / • Identify design elements / • Identify design mechanisms / • Incorporate design elements / • Prioritize use cases / • Review the architecture / • Review the design / • Structure the implementation model / • Subsystem design / • Use-case analysis / • Use-case design / • Analysis model / • Architectural proof-
of-concept / • Bill of materials / • Business architecture document / • Business case / • Business glossary / • Business modeling guidelines / • Business object model / • Business rules / • Business use
case / • Business use case realization / • Business use-case model / • Business vision / • Change request / • Configuration audit findings / • Configuration management plan / • Data model / • Deployment model / •
Deployment plan / • Design guidelines / • Design model / • Development case / • Development-organization assessment / • End-user support material / • Glossary / • Implementation model / •
Installation artifacts / • Integration build plan / • Issues list / • Iteration assessment / • Iteration plan / • Manual styleguide / • Programming guidelines / • Quality assurance plan / • Reference architecture / • Release notes / • Requirements attributes / • Requirements management plan / • Review record / • Risk
list / • Risk management plan / • Software architecture document / • Software development plan / • Software requirements specification / • Stakeholder requests / • Status assessment / • Supplementary
business specification / • Supplementary specification / • Target organization assessment / • Test automation architecture / • Test cases / • Test environment configuration / • Test evaluation summary / • Test guidelines / • Test ideas list / • Test interface specification / • Test plan / • Test suite / • Tool
guidelines / • Training materials / • Use case model / • Use case package / • Use-case modeling guidelines / • Use-case realization / • Use-case storyboard / • User-interface guidelines / • User-
interface prototype / • Vision / • Work order / • Workload analysis model
![Page 21: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/21.jpg)
![Page 22: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/22.jpg)
Нам бы чего попроще !погибче
![Page 23: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/23.jpg)
![Page 24: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/24.jpg)
II. FDDFeature-Driven Development
![Page 25: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/25.jpg)
История
1997 год: проект для большого сингапурского банка длительность: 15 месяцев
команда: 50 чел
Jeff De Luca
под влиянием подхода Peter Coad-а к моделированию бизнес-процессов
Интересные факты из биографии:• родился в 1964 году• в 1981 году в возрасте 17-ти лет бросил школу и пошел работать в IBM• быстро стал системным инженером, так и не получив высшего образования (самоучка)• в 1993 ушел из IBM (с должности системного стратега) и организовал собственную компанию• в 1995-1999 гг. выполнил полный реинженирингавтоматизации крупного сингапурского банка
![Page 26: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/26.jpg)
А XP родилось на маленьком in-house
проекте, который кончился fail-ом…
![Page 27: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/27.jpg)
Ну и что! Scrum вообщепредлагает
противоестественноемасштабирование при
помощиScrum-of-Scrum
![Page 28: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/28.jpg)
История
1999 год: книга «Java Modeling in Color With UML» один из соавторов книги – Jeff De Luca (вместе с Peter Coad и Eric
Lefebvre)
в 6-ой главе было дано краткое описание FDD
![Page 29: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/29.jpg)
Всего одна глава!Так – между делом…
По Scrum & XP пришлось написать куда больше книг.
![Page 30: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/30.jpg)
История
2002 год: книга «A Practical Guide To Feature-Driven Development» Stephen Palmer, Mac Felsing
![Page 31: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/31.jpg)
Автор продолжил заниматься делом, а
не исключительноличным PR-ом…
![Page 32: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/32.jpg)
Шикарный подкаст на 40 минут
![Page 33: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/33.jpg)
Feature
<действие> <результат> <кем|чем|чего|для|к> <объект>
<action> the <result> <by|for|of|to> a(n) <object>
Примеры:
Вычислить суммарный объем продаж
Calculate the total amount of a Sale
Определить последнее изменение наличных в кассе для кассира
Determine the most recent Cash Register Assignment for a Cashier
Шаблон именования Feature (функции):
Всегда в терминологии предметной области!Должна быть понятна значимость для бизнеса
![Page 34: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/34.jpg)
Очень похоже наUser Story,
но нет необходимости изобретать персонажи…
![Page 35: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/35.jpg)
Конечно! Каждый считает своим долгом предложить
свой формат для требований. Ладно хоть
Scrum от этого удержался...
![Page 36: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/36.jpg)
Группировка
Область (Major Feature Set, Subject Area) АРМ Кассира
Набор (Feature Set, Activity) Оплата товара
Функция (Feature) Снять деньги с карточки
![Page 37: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/37.jpg)
Дык, это же полный аналог Themes и Epics
при работе с User Stories
![Page 38: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/38.jpg)
Требования к Feature List
Каждая feature должна быть простой
Каждая feature должна быть ценна(хотя бы понятна) заказчику
Каждая feature должна быть проверяема
Каждый feature set может быть закреплен за ведущим разработчиком(Chief Developer)
Feature List должен быть коротким(на столько, на сколько возможно)
![Page 39: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/39.jpg)
Да-да, узнаю старый добрый INVEST:
Independent, Negotiable, Valuable, Estimable,
Small, Testable
![Page 40: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/40.jpg)
Схема процесса
Разработка общей модели
Составление списка функций
Планирование
Build by featureDesign by feature
Список функций(Feature list)
План разработки(A development plan)
Диаграмма классовпредметной области
Отгрузка!
1 – 3 недели
![Page 41: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/41.jpg)
Вау! Здесь есть начальная фаза
проекта!!!Чувствуется, что автор из
IBM…
![Page 42: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/42.jpg)
Процесс по шагам 1:
создание общей модели42
Участвуют:
Главный архитектор
Ведущие разработчики (Chief Developers)
Эксперты в предметной области
Подготовка к созданию:
Выслушивают эксперта в предметной области
По необходимости изучают документы
Обсуждения между собой
![Page 43: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/43.jpg)
Наконец-тознакомые роли!
Архитектор, ведущий разработчик – и снова
здравствуйте
![Page 44: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/44.jpg)
Процесс по шагам 1:
создание общей модели44
Создание модели:
Обязательно разбиваются на небольшие группы
Каждая группа создает свою модель (диаграмму классов)
После этого собираются все вместе, обсуждают различия, выбирают/формируют итоговые решения
В результате:
Диаграмма классов (без детализации)
Комментарии почему выбрано такое решение,альтернативные решения
![Page 45: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/45.jpg)
UML и создание «конкурирующих» моделей – мне это
определенно нравится!
![Page 46: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/46.jpg)
Тоже мне, открыли Америку – всё это
известно со времен Model-Driven
Development/Architecture(MDD/MDA)
![Page 47: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/47.jpg)
Процесс по шагам 2:
формирование Feature List47
Участвуют:
Как и при формировании общей модели
В результате:
Feature List,сгруппированный в наборы (Feature Set),разделенные по областям (Subject Area)
![Page 48: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/48.jpg)
Интересно, а как потом учитываются изменения в требованиях и сколько
сил на это уходит?
![Page 49: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/49.jpg)
Процесс по шагам 3:
планирование49
Основания для планирования: Наборы функций – итерации
Последовательность итераций определяется исходя из:
взаимосвязи функций с точки зрения реализации
сложности набора функций
наличия рисков при реализации функций
равномерное распределение загрузки разработчиков
Участвуют: Руководитель проекта
Ведущие разработчики
В результате:
График реализации наборов функций (Набор – дата)
Ведущие программисты, закрепленные за наборами (Набор – ответственный)
Всем классам назначены владельцы (Класс – владелец)
![Page 50: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/50.jpg)
Что-то это уже конкретно попахивает
водопадом…Да еще персональное
владение кодом… Бррр
![Page 51: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/51.jpg)
Скажи спасибо, что хоть диаграммы Гантастроить не надо
![Page 52: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/52.jpg)
Для тех, кто успел забытьсхему процесса:
Разработка общей модели
Составление списка функций
Планирование
Build by featureDesign by feature
Список функций(Feature list)
План разработки(A development plan)
Диаграмма классовпредметной области
Отгрузка!
1 – 3 недели
![Page 53: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/53.jpg)
Процесс по шагам 4:
Design by feature53
Задачи:
Формирование команд на итерацию
ведущие разработчики динамически формируют команды на итерацию
исходя из того, какие классы затрагивает реализация заданного набора функций (берутся их владельцы)
обычно команды не большие (около 5 человек)
(to be continued)
![Page 54: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/54.jpg)
Динамическое формирование команд на
итерацию – класс!А то:
«слаженная команда –это очень ценно»…
Так их!
![Page 55: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/55.jpg)
Процесс по шагам 4:
Design by feature55
Задачи:(продолжение)
Обзор затрагиваемой предметной области
Изучение необходимых документов
Составление диаграмм взаимодействия
Уточнение и детализация соответствующейчасти диаграммы классов
Написание заголовков методов
В результате:
Краткое описание набора функций, дополнительные комментарии
Диаграммы взаимодействия
Объектная модель (уточнения, исправления), заголовки классов
Задания (To Do) в системе ведения дел для каждого участника команды
![Page 56: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/56.jpg)
Вот! Спецификация API и персональное назначение задач – сразу чувствуется старая школа! И никаких, понимаешь, соплей про
самоорганизацию и кросс-функциональность…
![Page 57: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/57.jpg)
Процесс по шагам 5:
Build by feature57
Задачи: Реализация классов и методов
Code Inspection (Code Review)
до unit-тестирования!
самой командой или даже другой (по решению ведущего программиста)
Unit-тестирование
тесты на класс пишет сам владелец класса
Интеграция (Promote to Build)
Уточнение и детализация соответствующей части диаграммы классов
В результате: Проинспектированные классы и методы
Классы, допущенные в основной ствол проекта
Реализованная функциональность, понятная заказчику (client-valued features)
![Page 58: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/58.jpg)
Супер: вместо парного программирования – Code Inspection/Review; а вместо
мантры «Red-Green-Refactor»– просто написание Unit-
тестов (причем после реализации).
![Page 59: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/59.jpg)
Ну и правильно! Всё равно опросы общественного
мнения показывают, что в парах мало кто кодит, да и
тесты до реализации писать дико – некомпилится ведь!
![Page 60: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/60.jpg)
Важный нюанс
• в FDD нет жесткого time-boxing-а итерации:
– итерация не заканчивается, пока все взятые в неё feature-и не доделают
– т.е. недоделанные feature-и не перетекают в следующую итерацию – их дожимают в текущей, растягивая оную
![Page 61: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/61.jpg)
Разумно, но что они при этом делают со своим
план-графиком?...
![Page 62: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/62.jpg)
Отслеживание хода процесса
62 Стандартная пропорция:
За счет этого ведется графическое отображение хода выполнения:
Обзор
модели
Детализация
модели
(дизайн)
Инспекция
дизайна
Кодирование Инспекция
кода
Интеграция
1% 40% 3% 45% 10% 1%
![Page 63: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/63.jpg)
Отслеживание хода процесса:
для всего проекта63
Области
Наборы функций
![Page 64: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/64.jpg)
Эта штука посильнее будет всяких
Burn-down-ов и –up-ов:и бизнесам показать не
стыдно, и на конфекозырнуть.
![Page 65: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/65.jpg)
--------- Как некий итог ---------
XP
SCRUM
FDD
Уровень процессов
Жесткостьпроцессов
Управлениепроектом
Кодирование
Анархия Водопад
Управлениепроектами
Переченьтребований,Итерации
Unit-тесты,Стандарткодирования,Cont. Integration
Самоорг. команда,Daily Meetings
Индикацияпрогресса
![Page 66: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/66.jpg)
III. DDDDomain-Driven Design
![Page 67: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/67.jpg)
История
2004 годEric Evans
«Domain-Driven Design - Tackling Complexity in the Heart of Software»
![Page 68: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/68.jpg)
![Page 69: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/69.jpg)
![Page 70: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/70.jpg)
![Page 71: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/71.jpg)
Domain (словарь)
• наследственная собственность; имение, поместье; земли; владение
• территория, зона, область, район (отмеченные некоторыми физическими особенностями)
• сфера (интересов), поле (деятельности), область (знаний)
• область определения (мат.)
e.g. DNS
Домен поля таблицы в БД
В данном случае этот смысл
![Page 72: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/72.jpg)
Business Domain
Т.е. это о
и
Business Logic
Предметной области
Бизнес-логики
![Page 73: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/73.jpg)
«Attention was diverted away from rich logic and deep solutions, because there was so much value in just getting data onto the web, along with very simple behavior.
But now that basic level of web usage has largely beenassimilated, and projects are starting to get more ambitious again about business logic.»
![Page 74: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/74.jpg)
Еще раз вспомним про FDD:
Разработка общей модели
Составление списка функций
Планирование
Build by featureDesign by feature
Список функций(Feature list)
План разработки(A development plan)
Диаграмма классовпредметной области
Отгрузка!
1 – 3 недели
![Page 75: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/75.jpg)
DDD
Центральная роль в мышлении,
проектировании, реализации
![Page 76: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/76.jpg)
Пример: есть сайт конференции, надо сделать голосование за доклад
![Page 77: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/77.jpg)
О чем вы прежде всегоначнете думать?
![Page 78: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/78.jpg)
О чем вы прежде всегоначнете думать?
votes
![Page 79: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/79.jpg)
О чем вы прежде всегоначнете думать?
![Page 80: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/80.jpg)
О чем вы прежде всегоначнете думать?
![Page 81: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/81.jpg)
/
![Page 82: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/82.jpg)
Три аспекта DDD
![Page 83: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/83.jpg)
![Page 84: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/84.jpg)
![Page 85: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/85.jpg)
![Page 86: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/86.jpg)
Внимание! Очень важно!
Компоненты нижележащего слояне должны зависеть от
компонентов вышележащегони при каких обстоятельствах
![Page 87: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/87.jpg)
!!!
![Page 88: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/88.jpg)
![Page 89: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/89.jpg)
Постоянно себя спрашивайте:можно ли, используя public API доменной
модели, нарушить целостность, согласованность и консистентность данных?
![Page 90: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/90.jpg)
![Page 91: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/91.jpg)
Хоцца «аналогов» SQL и xxxMyAdminно для компонентов DomainModel, а не СУБД
![Page 92: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/92.jpg)
Этому посвящен значительный объем
всех книг, поэтому здесь мы пропустим
![Page 93: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/93.jpg)
Используете ORM => У вас DDD
!!!
Hibernate Ruby on Rails
http://www.martinfowler.com/bliki/AnemicDomainModel.html
![Page 94: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/94.jpg)
По идее, всё нацелено на достаточно сложные модели:
Но на практике эффективно используетсяи для несложных предметных областей
![Page 95: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/95.jpg)
http://www.infoq.com/presentations/rebuild-guardian-ddd-wills
![Page 96: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/96.jpg)
http://www.infoq.com/presentations/rebuild-guardian-ddd-wills
![Page 97: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/97.jpg)
http://www.infoq.com/presentations/rebuild-guardian-ddd-wills
![Page 98: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/98.jpg)
![Page 99: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/99.jpg)
IV. ЗаключениеВ стиле «Демотиваторы»
![Page 100: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/100.jpg)
«На кой мне это всё?»
Есть Vision
и feedback
и в проектеориентируюсь
яки рыба в воде
артефакты
![Page 101: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/101.jpg)
На одном Scrum-е далеко не уедешь
![Page 102: Обзор Feature-Driven Development и Domain-Driven Design](https://reader033.fdocuments.net/reader033/viewer/2022050723/55540d35b4c90577468b5305/html5/thumbnails/102.jpg)
ВнедрениеScrum
Не подумав вовремя об этом, вы
действуете как кальсонные гномы