domain context integration

Post on 08-Aug-2015

33 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1 © L

uxof

t Tra

inin

g 20

12

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

DomainContext

Integration

my@violet-tape.net

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

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

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

Контакты

Почта: my@violet-tape.net

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

top related