domain context integration

21
1 Luxoft Training 2012 Как увидеть динамику данных в статике кода Domain Context Integration [email protected] Андрей Гордиенков softblog.violet-tape.ru

Upload: andrey-gordienkov

Post on 08-Aug-2015

34 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Domain Context Integration

1 © L

uxof

t Tra

inin

g 20

12

Как увидеть динамику данных в статике кода

DomainContext

Integration

[email protected]

Андрей Гордиенков

softblog.violet-tape.ru

Page 2: Domain Context Integration

2 © L

uxof

t Tra

inin

g 20

12

О докладчике

Фанат программирования и рассказов о программировании

Ведет свой блог 3 года: статьи и видео

АОП евангелист

Очень ленив, поэтому ищет пути как писать меньше, а делать больше

Page 3: Domain Context Integration

3 © L

uxof

t Tra

inin

g 20

12

Введение в проблему Цели доклада

Классический взгляд на бизнес-разработку

Проблема взаимодействия

Ментальные модели

Domain, Context, Integration

Заключение

Как люди думают

Неоднозначность объектов

Расширение сознания

Определение

Построение

Использование

Pros & Cons

Ссылки

Контакты

Содержание

Page 4: Domain Context Integration

4 © L

uxof

t Tra

inin

g 20

12В

вед

ение

в п

робл

ему

Решить проблему статичности кода, возможность увидеть потоки данных. Целью будет понимание принципов DCI.

Решить проблему «вспоминания» логики приложения

Новый взгляд на привычный подход DDD

Тренировка ума, нашего главного инструмента

Узнать что-то новое, конференция все же!

Зачем это все вам?

Page 5: Domain Context Integration

5 © L

uxof

t Tra

inin

g 20

12В

вед

ение

в п

робл

ему

MVC

Model – бизнес-логика

View – визуальная часть

Controller – логика взаимодействия

Domain Driven Design (DDD)

Доменные объекты > Данные и взаимодействие

Сервисы > Взаимодействие, бизнес-логика

Классический взгляд

Page 6: Domain Context Integration

6 © L

uxof

t Tra

inin

g 20

12В

вед

ение

в п

робл

ему

Классический взгляд

Page 7: Domain Context Integration

7 © L

uxof

t Tra

inin

g 20

12В

вед

ение

в п

робл

ему

Взаимодействие

Page 8: Domain Context Integration

8 © L

uxof

t Tra

inin

g 20

12В

вед

ение

в п

робл

ему

Взаимодействие

Как это увидеть из кода?

Page 9: Domain Context Integration

9 © L

uxof

t Tra

inin

g 20

12В

вед

ение

в п

робл

ему

Взаимодействие

Page 10: Domain Context Integration

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

11 © L

uxof

t Tra

inin

g 20

12М

ента

льн

ые

мод

ели

Неоднозначность

42

Page 12: Domain Context Integration

12 © L

uxof

t Tra

inin

g 20

12М

ента

льн

ые

мод

ели

Неоднозначность

WoW Level

Время выступления

Денег на счету

Температура

Возраст

Длина

Универсальный ответ на всеЧто угодно!

Это и не хорошо и не плохо, просто нужен контекст!

42

Page 13: Domain Context Integration

13 © L

uxof

t Tra

inin

g 20

12М

ента

льн

ые

мод

ели

Расширить сознание

Объект != класс

Человечек != Worker

Модель как фильтр для сырых данных

Статичный объект человек > доменный объект (domain)

Не статичное поведение > контекст и взаимодействие (context & interaction)

Page 14: Domain Context Integration

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

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

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

17 © L

uxof

t Tra

inin

g 20

12D

omai

n, C

onte

xt, I

nteg

ratio

n

Пример

Page 18: Domain Context Integration

18 © L

uxof

t Tra

inin

g 20

12З

акл

юче

ние

Главная цель

Сделать единой ментальную модель работы с программой и реализацию

Page 19: Domain Context Integration

19 © L

uxof

t Tra

inin

g 20

12З

акл

юче

ние

Pros & Cons

Pros Быстрый ввод в проект новых людей

Легкое тестирование

Контроль поведения компилятором

Поведение описано более компактно

Cons Некоторая неприспособленность ООП языков

Много дочерних классов

Необкатанность в настоящих проектах

Page 20: Domain Context Integration

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

21 © L

uxof

t Tra

inin

g 20

12

Всем спасибо за внимание!

Контакты

Почта: [email protected]

Блог: softblog.violet-tape.ru