domain context integration
TRANSCRIPT
1 © L
uxof
t Tra
inin
g 20
12
Как увидеть динамику данных в статике кода
DomainContext
Integration
Андрей Гордиенков
softblog.violet-tape.ru
2 © L
uxof
t Tra
inin
g 20
12
О докладчике
Фанат программирования и рассказов о программировании
Ведет свой блог 3 года: статьи и видео
АОП евангелист
Очень ленив, поэтому ищет пути как писать меньше, а делать больше
3 © L
uxof
t Tra
inin
g 20
12
Введение в проблему Цели доклада
Классический взгляд на бизнес-разработку
Проблема взаимодействия
Ментальные модели
Domain, Context, Integration
Заключение
Как люди думают
Неоднозначность объектов
Расширение сознания
Определение
Построение
Использование
Pros & Cons
Ссылки
Контакты
Содержание
4 © L
uxof
t Tra
inin
g 20
12В
вед
ение
в п
робл
ему
Решить проблему статичности кода, возможность увидеть потоки данных. Целью будет понимание принципов DCI.
Решить проблему «вспоминания» логики приложения
Новый взгляд на привычный подход DDD
Тренировка ума, нашего главного инструмента
Узнать что-то новое, конференция все же!
Зачем это все вам?
5 © L
uxof
t Tra
inin
g 20
12В
вед
ение
в п
робл
ему
MVC
Model – бизнес-логика
View – визуальная часть
Controller – логика взаимодействия
Domain Driven Design (DDD)
Доменные объекты > Данные и взаимодействие
Сервисы > Взаимодействие, бизнес-логика
Классический взгляд
6 © L
uxof
t Tra
inin
g 20
12В
вед
ение
в п
робл
ему
Классический взгляд
7 © L
uxof
t Tra
inin
g 20
12В
вед
ение
в п
робл
ему
Взаимодействие
8 © L
uxof
t Tra
inin
g 20
12В
вед
ение
в п
робл
ему
Взаимодействие
Как это увидеть из кода?
9 © L
uxof
t Tra
inin
g 20
12В
вед
ение
в п
робл
ему
Взаимодействие
10 © L
uxof
t Tra
inin
g 20
12М
ента
льн
ые
мод
ели
Ментальная модель
MVVM, MVC и так далее
class Person{
Position{get; set;}
void DoJob()
IsOnSite{get;set;}
void RequestVacation()
….
}
Тут картинка юзера Ивана и его мыслей
Повысить Василия
Делать работу Утвердить отпуск Николаю
Попросить отпуск у босса
11 © L
uxof
t Tra
inin
g 20
12М
ента
льн
ые
мод
ели
Неоднозначность
42
12 © L
uxof
t Tra
inin
g 20
12М
ента
льн
ые
мод
ели
Неоднозначность
WoW Level
Время выступления
Денег на счету
Температура
Возраст
Длина
Универсальный ответ на всеЧто угодно!
Это и не хорошо и не плохо, просто нужен контекст!
42
13 © L
uxof
t Tra
inin
g 20
12М
ента
льн
ые
мод
ели
Расширить сознание
Объект != класс
Человечек != Worker
Модель как фильтр для сырых данных
Статичный объект человек > доменный объект (domain)
Не статичное поведение > контекст и взаимодействие (context & interaction)
14 © L
uxof
t Tra
inin
g 20
12D
omai
n, C
onte
xt, I
nteg
ratio
n
Определение DCI
Data: данные живут в доменных объектах в доменных классах
Context: связывает объекты и роли в сценариях
Interaction: описывает алгоритм взаимодействия в терминах ролей, которые присутствуют в голове пользователя
15 © L
uxof
t Tra
inin
g 20
12D
omai
n, C
onte
xt, I
nteg
ratio
n
Схема DCI
Конечный объект получаетсясовмещением роли и класса
И используется к конкретном контексте через интерфейс
Да, в некотором роде это Dependency Injecton
16 © L
uxof
t Tra
inin
g 20
12D
omai
n, C
onte
xt, I
nteg
ratio
n
Context
Ограниченный набор функций для конкретного контекста (use case)
17 © L
uxof
t Tra
inin
g 20
12D
omai
n, C
onte
xt, I
nteg
ratio
n
Пример
18 © L
uxof
t Tra
inin
g 20
12З
акл
юче
ние
Главная цель
Сделать единой ментальную модель работы с программой и реализацию
19 © L
uxof
t Tra
inin
g 20
12З
акл
юче
ние
Pros & Cons
Pros Быстрый ввод в проект новых людей
Легкое тестирование
Контроль поведения компилятором
Поведение описано более компактно
Cons Некоторая неприспособленность ООП языков
Много дочерних классов
Необкатанность в настоящих проектах
20 © L
uxof
t Tra
inin
g 20
12З
акл
юче
ние
Ссылки на материалы
http://www.leansoftwarearchitecture.com/home/dci-tutorials - видео
http://www.artima.com/articles/dci_vision.html - теория
21 © L
uxof
t Tra
inin
g 20
12
Всем спасибо за внимание!
Контакты
Почта: [email protected]
Блог: softblog.violet-tape.ru