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