DDD — эффективный способ работы в условиях системной сложностиCUSTIS
Выступление Максима Цепкова, нашего главного архитектора дирекции по развитию решений, на конференции CEE-SECR 2011 (31 октября – 3 ноября 2011 года, Москва).
Domain Driven Design (DDD) — подход, предложенный Эриком Эвансом для эффективного проектирования и реализации приложений в сложных предметных областях. Основой его является создание модели будущей системы на едином языке (ubiquitous launguage), разрабатываемом для проекта и обеспечивающим надежные коммуникации между всеми участниками проекта. Модель, описанная на этом языке, согласуется с бизнес-заказчиком и верифицируется им, а затем отражается в реализацию системы с использованием типовых шаблонов, так что элементы и конструкции модели могут быть прослежены в коде. Таким образом обеспечивается соответствие поведения готовой системы потребностям заказчика, без чего сложные IT-проекты едва ли могут стать успешными.
В докладе будет дан общий обзор DDD на основе многолетнего успешного опыта его применения для разработки приложений — от построения модели с формированием единого языка до выработки шаблонов реализации типовых элементов модели.
Domain Driven Design - как, почему и зачем?ngrebnev
Одной из самых серьезных проблем в разработке программного обеспечения является борьба со сложностью решаемой задачи. Более того сложность задач решаемых разработчиками с каждым годом стремительно растет. Для решения этой проблемы хорошо себя зарекомендовал на практике набор подходов и методов, объединенных общим названием Domain Driven Design (DDD).
DDD позволяет существенно увеличить скорость разработки, снизить стоимость сопровождения и повысить качестве программного обеспечения. Но, несмотря на это, внедрение DDD на практике сталкивается с множеством трудностей и препятствий, что нередко приводит к полному отказу от применения данного похода в проекте.
Доклад посвящен описанию того как Domain Driven Design может быть использован в вашем проекте, зачем это вам нужно и почему это работает. Будут освещены преимущества и недостатки DDD, трудности с которыми приходится сталкиваться при его использовании и какой результат принесет его применение.
DDD — эффективный способ работы в условиях системной сложностиCUSTIS
Выступление Максима Цепкова, нашего главного архитектора дирекции по развитию решений, на конференции CEE-SECR 2011 (31 октября – 3 ноября 2011 года, Москва).
Domain Driven Design (DDD) — подход, предложенный Эриком Эвансом для эффективного проектирования и реализации приложений в сложных предметных областях. Основой его является создание модели будущей системы на едином языке (ubiquitous launguage), разрабатываемом для проекта и обеспечивающим надежные коммуникации между всеми участниками проекта. Модель, описанная на этом языке, согласуется с бизнес-заказчиком и верифицируется им, а затем отражается в реализацию системы с использованием типовых шаблонов, так что элементы и конструкции модели могут быть прослежены в коде. Таким образом обеспечивается соответствие поведения готовой системы потребностям заказчика, без чего сложные IT-проекты едва ли могут стать успешными.
В докладе будет дан общий обзор DDD на основе многолетнего успешного опыта его применения для разработки приложений — от построения модели с формированием единого языка до выработки шаблонов реализации типовых элементов модели.
Domain Driven Design - как, почему и зачем?ngrebnev
Одной из самых серьезных проблем в разработке программного обеспечения является борьба со сложностью решаемой задачи. Более того сложность задач решаемых разработчиками с каждым годом стремительно растет. Для решения этой проблемы хорошо себя зарекомендовал на практике набор подходов и методов, объединенных общим названием Domain Driven Design (DDD).
DDD позволяет существенно увеличить скорость разработки, снизить стоимость сопровождения и повысить качестве программного обеспечения. Но, несмотря на это, внедрение DDD на практике сталкивается с множеством трудностей и препятствий, что нередко приводит к полному отказу от применения данного похода в проекте.
Доклад посвящен описанию того как Domain Driven Design может быть использован в вашем проекте, зачем это вам нужно и почему это работает. Будут освещены преимущества и недостатки DDD, трудности с которыми приходится сталкиваться при его использовании и какой результат принесет его применение.
Domain driven design (DDD) - отражение модели предметной области в код (Максим Цепков на Software People 2013). Подробнее http://mtsepkov.org/DDD_problem_and_solving
Практический анализ и визуальное моделирование на UMLNikolai Kireev
Презентация курса online-тренингов, проводимых совместно Школой Системного Анализа г. Москва и IT-Студией WebMax.BY г. Минск.
Запись на курс по ссылке: http://school.system-analysis.ru/uml-online/
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...DEVTYPE
Основы современной методологии объектно-ориентированного анализа и проектирования. Особенности визуального моделирования информационных систем. Базовые семантические конструкции языка UML 2 и их описание с помощью специальных обозначений. Основные элементы нотации языка UML 2 и их отличие от языка UML 1. Особенности моделей представления структуры и поведения в проектах разработки сложных программных систем и бизнес-процессов. Канонические диаграммы языка UML 2 и их общая характеристика. Механизмы расширения языка UML 2.
Проектирование Программных Систем. Лекция 01Dima Dzuba
Лекция рассказывает о базовых принципах построения программного обеспечения. Проводится сравнение гибких (Agile) и водопадных методологий разработки программного обеспечения.
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...Alex V. Petrov
На примере одной специализированной, но значимой для большинства высокопроизводительных систем точки оптимизации исходного кода — работы с кэш-памятью — доклад «Достижима ли в C++ эффективность языка "среднего уровня"?», сделанный на DEV Labs 2013, показывает, какими несложными приемами и техниками можно достичь желаемого уровня эффективности объектно-ориентированного кода, и развеивает миф о языке C++ как языке «архитектурной астронавтики», предлагая аудитории ряд действенных рецептов повышения производительности исходного кода.
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]Alex V. Petrov
Прошедший в «Академии информационных систем» (г. Москва) семинар «Как измерить архитектуру ПО?» ответил на вопрос о том, реально ли оценить архитектуру программной системы и сказать, насколько она полна, качественна, подвержена тем или иным недостаткам. В ходе семинара слушатели узнали, какие архитектурные метрики существуют, какие из них — признаны отраслью, в чем состоит их польза и как подходить к их применению в условиях производства.
Choose method for requirements Tsepkov Analyst Days-2017Maxim Tsepkov
Как выбрать для проекта практики проектирования и работы с требованиями (Максим Цепков на AnalystDays-2017). Страница доклада http://mtsepkov.org/Methods4req
Основы "мобильной" разработки на примере платформы iOs (iPhone)Pavel Tsukanov
Легкая обзорная лекция по платформе iOS. Рассмотрим специфику разработки под мобильные платформы, средства разработки, язык Objective-C, концепции применяемые при разработке под iOS. Расскажу шаги которые нужно сделать для создания вашего первого мобильного приложения.
Domain driven design (DDD) - отражение модели предметной области в код (Максим Цепков на Software People 2013). Подробнее http://mtsepkov.org/DDD_problem_and_solving
Практический анализ и визуальное моделирование на UMLNikolai Kireev
Презентация курса online-тренингов, проводимых совместно Школой Системного Анализа г. Москва и IT-Студией WebMax.BY г. Минск.
Запись на курс по ссылке: http://school.system-analysis.ru/uml-online/
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...DEVTYPE
Основы современной методологии объектно-ориентированного анализа и проектирования. Особенности визуального моделирования информационных систем. Базовые семантические конструкции языка UML 2 и их описание с помощью специальных обозначений. Основные элементы нотации языка UML 2 и их отличие от языка UML 1. Особенности моделей представления структуры и поведения в проектах разработки сложных программных систем и бизнес-процессов. Канонические диаграммы языка UML 2 и их общая характеристика. Механизмы расширения языка UML 2.
Проектирование Программных Систем. Лекция 01Dima Dzuba
Лекция рассказывает о базовых принципах построения программного обеспечения. Проводится сравнение гибких (Agile) и водопадных методологий разработки программного обеспечения.
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...Alex V. Petrov
На примере одной специализированной, но значимой для большинства высокопроизводительных систем точки оптимизации исходного кода — работы с кэш-памятью — доклад «Достижима ли в C++ эффективность языка "среднего уровня"?», сделанный на DEV Labs 2013, показывает, какими несложными приемами и техниками можно достичь желаемого уровня эффективности объектно-ориентированного кода, и развеивает миф о языке C++ как языке «архитектурной астронавтики», предлагая аудитории ряд действенных рецептов повышения производительности исходного кода.
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]Alex V. Petrov
Прошедший в «Академии информационных систем» (г. Москва) семинар «Как измерить архитектуру ПО?» ответил на вопрос о том, реально ли оценить архитектуру программной системы и сказать, насколько она полна, качественна, подвержена тем или иным недостаткам. В ходе семинара слушатели узнали, какие архитектурные метрики существуют, какие из них — признаны отраслью, в чем состоит их польза и как подходить к их применению в условиях производства.
Choose method for requirements Tsepkov Analyst Days-2017Maxim Tsepkov
Как выбрать для проекта практики проектирования и работы с требованиями (Максим Цепков на AnalystDays-2017). Страница доклада http://mtsepkov.org/Methods4req
Основы "мобильной" разработки на примере платформы iOs (iPhone)Pavel Tsukanov
Легкая обзорная лекция по платформе iOS. Рассмотрим специфику разработки под мобильные платформы, средства разработки, язык Objective-C, концепции применяемые при разработке под iOS. Расскажу шаги которые нужно сделать для создания вашего первого мобильного приложения.
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.Pavel Tsukanov
Доклад посвящен краткому обзору существующих алгоритмов шифрования, их реализации для платформы .net. Также, помимо шифрования будут рассмотрены и другие варианты защиты данных.
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИPavel Tsukanov
Поговорим об относительно новой библиотеке, разработанной Дэвидом Фаулером и Дамьеном Эдвардсом, основной задачей которой является мгновенный обмен сообщениями в Web приложениях, написанных на платформе .Net
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...Pavel Tsukanov
Видео на http://tuladev.net/events/128
Расскажу про нейронные сети, генетические алгоритмы, машинное зрение и нечёткую логику. Всё с реальными примерами. Подискутирую что-же такое ИИ (как же без этого :) ). Если хотите услышать что ещё оставляйте свои комментарии. На самом деле тема обширная, можно рассказать о многом, главное начать.
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.Pavel Tsukanov
Мы расскажем что такое конечный автомат (Finite State Machine - FSM) и как его использовать при разработке ПО. Поделимся опытом использования, расскажем как улучшить дизайн программы или её отдельные части при помощи FSM. Рассмотрим некоторые реализации FSM.
Нас окружает мир сетей, мобильных устройств, сайтов, облаков. Чтобы работать с этим миром, придумано невероятное количество технологий и языков программирования. Есть ли среди них место для языков Си/Си++? Стоит ли тратить время на их изучение, стоит ли использовать их в своих проектах? Не пора ли этим языкам на пенсию? Эти темы в своем докладе обсудит Андрей Карпов, активно участвующий в жизни сообщества Си++-программистов. Забегая вперед можно утверждать - языки Си/Си++ живее всех живых. Андрей расскажет о развитии языка и новых возможностях, появившихся в Си++11. Многие возможности существенно облегчают работу программиста и сокращают объем кода.
TDD (Test-driven Development) как стиль разработки.Pavel Tsukanov
Как превратить рутинное написание Unit тестов в увлекательный процесс? Как побороть страхи, что система не будет работать должным образом? Как уверенно решать самые сложные для себя задачи? Я расскажу как TDD поможет найти ответы на эти и другие вопросы.
Наш сайт http://www.tuladev.net
Реализация REST и SOAP сервисов с помощью WCFPavel Tsukanov
На сегодняшний день одним из важнейших направлений в области разработки ПО является направление (веб)-сервисов. Сервисы позволяют строить большие распределенные системы. При этом подходов к построению сервисов сегодня как минимум два - SOAP и REST. В докладе расскажу как реализовать их при помощи WCF
Мы рассмотрим область применения, архитектуру и основные особенности такой известной операционной системы как Android. Также расскажем о процессе создания мобильного приложения TulaDev, о проблемах с которыми мы столкнулись и о способах их решения. Вы можете найти приложение для Android <a>на Google Play</a>
По мотивам хабра ( http://habrahabr.ru/post/168645/ ), автор рассмотрит вопрос создания роботов в домашних условиях. Ожидается демонстрация робота в живую, в реальных боевых условиях!!!
Выступление Максима Цепкова, нашего главного архитектора дирекции по развитию решений, на конференции Application Developer Days (29–30 апреля 2011 года).
Опыт госпроектов и взаимодействия с корпоративными структурамиПрофсоUX
Доклад предназначен для UX-специалистов, руководителей проектов и всех остальных.
В последнее время UX-специалисты и компании все чаще привлекаются к реализации проектов для корпораций и государственных заказчиков. На первый взгляд кажется, что при работе с ними попадаешь из мира сотрудничества в мир формальных взаимодействий. На самом деле построить с такими заказчиками настоящее сотрудничество вполне возможно. Более того, заказчик в нем заинтересован, просто не всегда представляет, как это сделать. В докладе я поделюсь практиками работы с крупными заказчиками из опыта компании CUSTIS.
Кроме модели сооружения/оборудования и модели проекта (project) нужно еще иметь организационную модель. Архитектуру этой модели не нужно выдумывать, нужно брать для нее правильные стандарты, которые разрабатываются в рамках OMG MDA.
Выступление Владимира Рахтеенко, нашего генерального директора, и Германа Алексеева, ИТ-директора ГК «Спортмастер», на Неделе российского ритейла (7 июня 2017 года, Москва).
Будущее уже наступило: от Agile к бирюзовым организациямCUSTIS
Выступление Максима Цепкова, нашего главного архитектора дирекции развития решений, на форуме «Дни PR и маркетинга на Юге» (1 июня 2017 года, Ростов-на-Дону).
Диаграммы учета как средство для наглядного и целостного отображения правил у...CUSTIS
Выступление Максима Цепкова, нашего главного архитектора дирекции развития решений, на конференции «Соколовские чтения «Бухгалтерский учет: взгляд из прошлого в будущее» (22 апреля 2017 года, Санкт-Петербург).
Опыт построения микросервисной архитектуры в цифровом банкеCUSTIS
Выступление Андрея Солощака, ведущего архитектора «Бинбанка», на профессиональной встрече CUSTIS Meetup: Микросервисы в Enterprise (16 марта 2017 года, Москва).
Золотая лихорадка MSA: почему нам не подошли микросервисы?CUSTIS
Выступление Юрия Веретельникова, сооснователя и технического директора Solit Clouds, на профессиональной встрече CUSTIS Meetup: Микросервисы в Enterprise (16 марта 2017 года, Москва).
Выступление Игоря Беспальчука, нашего руководителя проектов, на профессиональной встрече CUSTIS Meetup: Микросервисы в Enterprise (16 марта 2017 года, Москва).
От монолитных моделей предметной области — к модульнымCUSTIS
Выступление Максима Цепкова, нашего главного архитектора дирекции развития решений, на World Information Architecture Day (18 февраля 2017 года, Санкт-Петербург).
Будущее omni-channel маркетинга: инструменты, кейсы и цифрыCUSTIS
Выступление Артема Казакова, директора по маркетингу Retail Rocket, на бизнес-завтраке «К 2017 готовы: продвинутые инструменты маркетинга для интернет-магазинов» (13 декабря 2016 года, Москва).
Опыт применения метода ATAM для оценки архитектурыCUSTIS
Выступление Игоря Беспальчука, нашего руководителя проектов дирекции архитектуры, на заседании русского отделения INCOSE (9 ноября 2016 года, Москва).
Видеозапись выступления:
https://vimeo.com/190918892
Process и Case Management в информационной системе: от автоматизации As Is к ...CUSTIS
Выступление Максима Цепкова, нашего главного архитектора дирекции развития решений, на ежегодной конференции CEE-SECR – 2016 (29 октября 2016 года, Москва).
RBAC & ABAC: гибридное решение для управления правами доступаCUSTIS
Выступление Вячеслава Муравлева, нашего ведущего разработчика, на международной выставке InfoSecurity Russia (20 сентября 2016 года, Москва).
Видеозапись выступления:
https://vimeo.com/183804752
Омниканальная модель в ритейле: решения и кейсыCUSTIS
Выступление Петра Асратяна, директор программы модернизации информационных систем «Леруа Мерлен Восток», на конференции «IT в ритейле» (12 сентября 2016 года, Москва).
2. Есть разные способы работы с требованиями
Выбор конкретного зависит от проекта
В сложных проектах уместна работа
с моделями
И DDD – наиболее эффективный способ
для этого
О чем этот доклад?
DDD – ключ к построению сложных систем
и их развитию вслед за потребностями
бизнеса
2/64
3. Теория
Кто и что проектирует – области и роли
DDD – единый язык проекта и одна модель системы
Модели были давно, но две: бизнес-области и системы
Единый язык проекта создает общее поле понятий
И позволяет работать с одной общей моделью
Но в большом проекте следует выделять контексты
Практика
Единый язык в конкретных примерах
DDD в корпоративных приложениях
Заключение
Что будет в докладе?
3/64
7. Проектирование от внешних требований
Интерфейс
Бизнес-слой
Хранение
Остальное проектирует
разработчик, создавая код
Требования
к пользовательскому
интерфейсу
Требования
к межсистемной интеграции
Аналитик не всегда
представляет значимость
этого «остального»,
но именно оно сшивает
систему в единое целое
7/64
10. Концептуальная книга Эрика Эванса
на английском – в 2003 г.
на русском – только в 2010 г.
DDD: как оно начиналось
Практическая книга Джимми Нильссона
на английском – в 2006 г.
на русском – в 2007 г. (почти сразу!)
10/64
12. Построен на основе терминов предметной
области
Его понимают ИТ-специалисты и эксперты
бизнеса
На нем описана модель ИТ-системы и ее
место в бизнес-процессах
Единый язык (ubiquitous language)
Понятия единого языка:
клиент, накладная, платеж, долг –
из предметной области
12/64
13. Парадигма моделирования определяет
Элементы языка
Способ их соединения в сложные конструкции
Визуальный образ для представления
Способ отражения модели в код
А где здесь ООП?
ООП –
это парадигма
моделирования
Объекты
с атрибутами
и методами
Диаграмма классов
и другие UML-диаграммы
Типы, соответствующие
бизнес-объектам
Я сосредоточусь на разработке модели,
а не на ее реализации
13/64
14. Модель системы не соответствует представлению
бизнеса о ее месте в модели предприятия
Зачем нужен единый язык?
Модель предприятия
Представление
о месте
ИТ-системы
Модель
ИТ-системы
«Не то чтобы совсем не попал,
но только не попал в шарик…»
14/64
15. Единый язык позволяет совместить модель
системы с представлениями бизнеса о ее месте
Итерационное развитие модели
ИТ-система
Модель
ИТ-системы
Место ИТ
в бизнес-процессе
Управляющее воздействие
на модель
Итерация
15/64
16. Аналитик собирает требования и строит модель:
сначала – предметной области, затем – системы
Артефакты модели описывают и систему,
и ее использование в бизнес-процессах
предприятия
Разработчик реализует модель
Артефакты модели можно проследить в коде
Единая модель
Модель предметной области
становится моделью системы
16/64
17. Верификация постановок бизнес-специалистами
Общее понимание требований на стороне бизнеса
Обсуждение модели бизнесом и IT, поиск баланса
в сложных решениях
Перенос моделей из других предметных областей
Бизнес представляет потенциальные возможности
системы и сложность различных доработок
На этапе эксплуатации – эффективное общение
бизнес-пользователей и IT без квалифицированных
переводчиков-аналитиков
Плюсы единой модели
17/64
18. Границы единого языка
Устаревшая системаНовая система
Бизнес-область
проектируемого
приложения
Единый
язык
Единый язык должен быть шире области приложения,
но не обязан охватывать всю предметную область.
И на нем описывается интеграция
18/64
19. Контексты и их карта
Устаревшая системаНовая система
Бизнес-область
проектируемого
приложения
Единый
язык
Контекст 1
Контекст 2 Контекст
интеграции со
старой системой
Область приложения может быть
разделена на несколько слабо
зависимых контекстов.
Об их сопряжении – позднее
Контексты интеграции
выделяются, если
сопряженные системы
имеют другой язык
19/64
20. Единый язык и слои приложения
Приложение
Интерфейс работает с объектами
предметной области. Язык
расширяется понятиями
конструирования интерфейса –
экраны, таблицы, кнопки…
Единый язык ориентирован
на описание модели для бизнес-
слоя, его объекты отражаются
в реализации
При описании интеграции
и хранения в единый язык
добавляются понятия описания
потоков данных, транзакций
и другого межсистемного
взаимодействия
Хранение
Бизнес-слой
Интерфейс
20/64
22. В процессе обработки документа (сделки,
договора, контракта) обеспечить проверку
и одобрение определенными сотрудниками
или отделами
Задача
Задача касается
конкретного документа
22/64
24. Шаблоны обладают разной гибкостью и сложностью
Для выбора нужно понимать требуемый баланс
гибкости и сложности решения
Традиционный подход
На этапе сбора требований аналитики
формулируют задачу для конкретного документа
Исходя из этого в системе проектируется решение
Выбранное решение отражает текущую ситуацию
В чем проблема?
Решение надо принимать с учетом
потенциального изменения бизнес-процессов
24/64
25. Проверка сделки казначейством и отделом
рисков – не получается выполнять
параллельно
Юристы отозвали одобрение кредита,
а служба безопасности на него опиралась –
связи между визами не контролируются
системой
Настройку виз для одобрения договоров
с недвижимостью передали в IT из-за
сложности
Примеры
25/64
26. Представляем шаблоны, описанные
применительно к конкретному документу,
показываем разницу
Бизнес-специалисты оценивают
потенциальную потребность в реализации
бизнес-процессов
Решение принимается с учетом
перспективы
Решение в рамках DDD
26/64
27. Для решения модель надо описать
понятно бизнесу
Можно описать обобщенные решения для документов,
«состояния» и «визы», и на них ссылаться
Можно описывать каждый случай отдельно
Термины должны быть понятны заказчику
Например, «визированием» могут считать одобрение
документа, требующее только просмотра, а если
требуется дополнительная работа, то это называется
«обработкой» или «проверкой»
Общий шаблон надо «перевести»
на язык проекта
В чем единый язык?
27/64
28. Мы используем известные шаблоны решений
Заказчик оценивает вариант решения
не только с точки зрения текущих
потребностей, но и из предположений
о развитии бизнес-процессов
Проектируя изменения бизнес-процессов,
заказчик представляет потенциал гибкости
системы и принимает решения с учетом этого
Результат
28/64
29. Вопрос: Как обеспечить легкое развитие системы при
изменениях правил проверки и одобрения документа?
Ответ: Для этого нужны точки расширения.
Стратегии – именованные алгоритмы обработки,
включаемые в определенных точках
Проверки или обработка при переходе в состояние
Алгоритм определения состояния документа по визам
Стратегии дополняем спецификациями –
декларативными описаниями условий, применяемых
для выбора стратегий по параметрам документа
Декларативное описание графа перехода документа
и набора виз, связанных с переходами
Точки расширения
29/64
31. Пользователи создают документы
По необходимости заполняют справочники
Потом документы исполняют
При этом меняются учетные данные
Которые влияют на исполнение
документов
И отражаются в отчетах
Типичное корпоративное приложение
Жизненный цикл документа
31/64
Объектная модель
Учет –
не объектная модель
32. Одна модель или несколько?
Связь
Учетные
показателиДокументы
Если учет существенно влияет
на исполнение документов,
то необходима единая модель
А то при документах
появляется свой
«маленький учет»
32/64
37. Сложность объектного представления учета:
Нет идентификации единичного объекта
Работа идет с показателями, текущее значение
которых меняется
Изменение числового значения может менять
состояние с точки зрения принятия бизнес-
решения
Часто интерес представляют агрегаты,
а не отдельные значения
Учетная модель – не объектная
Представление учета оказалось за рамками
UML. Для него не придумано эффективного
представления
37/64
38. Для представления учетной модели
мы придумали диаграммы учета
Они показывают элементы учета
Какие есть синтетические счета и их аналитику
Как проводки перемещают ресурсы по синтетическим
счетам
С какими событиями связано исполнение проводок
Статья «Диаграммы учета:
мост между бухгалтером и разработчиком»
(журнал «Бухгалтер и компьютер», №5-2011)
Учетная модель
38/64
42. Объекты с атрибутами и методами –
элементы единого языка для предметной
области и способ их соединения в сложные
конструкции
Для отражения документооборота
используем состояние документа
Диаграмма классов и диаграмма состояний
UML – визуальный образ для наглядного
представления
Объекты в программе – способ отражения
модели в реализацию
Хорошо работает объектная модель
42/64
43. Классы соответствуют бизнес-объектам –
заказчик видит знакомые названия
Модель должен понимать заказчик
Представляем
диаграммой
классов
Используем цветовые
выделения
43/64
44. Не нужно
Стараться изобразить
все классы на одной диаграмме
Отображать
вспомогательные атрибуты
Использовать
технические коды
Использовать
сложную нотацию
Диаграммы должны
понимать заказчики,
а не только разработчики
Не нужно усложнять диаграмму
44/64
45. Документу приписываем состояние,
оно определяет этап жизненного
цикла
Какие действия можно совершать и кому
Кто отвечает за обработку документа
Возможные изменения состояний
документа образуют граф переходов –
State machine diagram
Модель документооборота
UML
Язык ООП «с расширениями».
Названия состояний и переходов –
на языке бизнеса
45/64
47. Сочетание декларативного и императивного
Типизация документов, графы при наследовании
Если граф переходов настраивается – надо уметь
подхватывать настройки в интерфейсе и логике
Если в любом случае требуется кодирование –
в чем будет выгода от настроек?
Развитие правил обработки на переходе
В коде через наследование объектов
Через стратегии в точках расширения
Через декларативное описание правил выбора стратегий
Настройка прав доступа
Точки расширения в логике переходов
47/64
49. Контексты в единой модели
Связь
Учетные
показателиДокументы
Документы
Справочники
Показатели
Отчеты
Счета
Проводки
Контекст
документооборота
Контекст учета
49/64
50. Розничный магазин
Продажи и Склад магазина
Продажи, Склад магазина, Заказы товара
Торговая компания
Закупки и Продажи
Закупки, Продажи и Склад
Оптовые продажи
Заказы и Отгрузки
Заказы, Отгрузки, Оплаты
Вертикальная декомпозиция
50/64
51. Вертикальная декомпозиция
Подсистема 1
Документы
и справочники 1
Подсистема 2
Учет 1
Отчеты
и показатели
Документы
и справочники 2
Учет 2
Отчеты
и показатели
Общие
справочники
Общий учет
Отчеты
и показатели
51/64
52. Примеры
Магазин: со складом и без склада, продажа с заказом
Логистика и склад: много систем с заказами товара
Банк: Главная книга и много систем по банковским
продуктам
Подходы
Смысловое ядро
Общее ядро
Абстрактное ядро
Подключаемые компоненты
Крупноблочная структура
Уровни разделения обязанностей
Сопряжение контекстов
52/64
54. Ведение взаиморасчетов с клиентами
по продажам
Обеспечивающее ведение управленческих
лимитов
И отражение расчетов в бухгалтерию
Задача
54/64
55. Менеджеры по продажам: долг –
основа для управленческих решений.
Увеличивается, как только приняли
решение об отгрузке, уменьшается,
когда признали претензию
Бухгалтеры: долг – в соответствии с ПБУ,
с учетом оформления документов
и прохождения процедур
Следствие: управленческий и бухгалтерский
долг имеют систематические различия
Проблема:
Смешение языков на бизнес-уровне
55/64
57. Контроль правильности учета запаздывает
Менеджеров не получается контролировать
через бухгалтерию
Имеются две разные суммы долга,
что затрудняет принятие управленческих
решений
Для сверки с клиентом и решения проблем
менеджеры должны вникать в ПБУ
Проблемы двух пониманий долга
57/64
58. Вырабатываем единый язык, описывающий долг
в терминах, понятных менеджерам и бухгалтерам
Строим модель, которая показывает управленческий
и бухгалтерский долг и их различие
Ситуации, в которых долг различается, описываем
на едином языке, согласуем со специалистами
Вырабатываем требования по контролю различий,
а также по устранению несущественных различий
Результат – общий взгляд у бизнес-специалистов
на предметную область, описанный в модели,
которая реализуется разработчиками
Решение от DDD
58/64
59. Модель долга клиента
Этого долга нет
у бухгалтеров
Этих платежей нет
у менеджеров
Овалы – счета
стрелки – проводки
«Общее» понимание долга
Сверку с клиентом
успешно выполняют
менеджеры
59/64
60. Согласовано понимание предметной
области у различных бизнес-специалистов
Реализована модель, отвечающая
интересам всех заинтересованных сторон
проекта
Результат
60/64
62. Ограниченные контексты и их изоляция
Способы выделения общего в контекстах
Стратегии
Политики
Выделение общих объектов
Абстракция через интерфейсы
Практики проектирования
применяем для бизнес-анализа
Технические практики наполняются бизнес-
смыслом и служат для общения с заказчиком
62/64
63. Единый язык + Единая модель:
Дают надежную основу для общения всех
участников проекта при принятии решений
Успешно заменяют мелкую россыпь требований
Позволяют эффективно развивать сложную
систему
Это требует дополнительных усилий:
Формирование единого языка
Понимание разработчиками предметной области
По опыту, результат окупает усилия
Что же дает DDD?
63/64