Slide 1

Slide 1 text

Технологическая платформа 1С:Предприятие: пример реализации предметно-ориентированного подхода (Domain-driven design, DDD) к созданию ПО для автоматизации бизнеса Петр Грибанов, 1С

Slide 2

Slide 2 text

Лучшая программа – та, которой нет, а всё делается само

Slide 3

Slide 3 text

Что может быть интересно в докладе? • Продукты 1С есть почти везде – полезно знать, как они устроены • Понимание, что может и умеет 1С • Кастомизация приложений 1С • Интеграция приложений 1С с другими продуктами • DDD-подход к решению задач • Иногда на порядки ускоряет реализацию задач • Позволяет продукту развиваться • Расширение кругозора – бесценно 

Slide 4

Slide 4 text

Краткое содержание доклада • Эволюция разработки бизнес-приложений • Процедурные языки, реляционная модель • ООП • ООП-фреймворки (ORM, …) • Domain Driven Design • ООП – не «серебряная пуля» • DDD может быть эффективнее для ряда задач • Например, Enterprise • Длинный жизненный цикл • Большое количество сущностей со сложными взаимоотношениями • Эволюция бизнес-модели • Как к этому подошла 1С • И что в итоге получилось

Slide 5

Slide 5 text

1996 2019 iScala, Epicor, Microsoft, 1C Создавать удобные инструменты для разработчиков! Dev, PM, Architect, R’n’D Director

Slide 6

Slide 6 text

НАЧНЕМ! Петр Грибанов [email protected]

Slide 7

Slide 7 text

Что делает 1С? • 1С:Бухгалтерию? • Игры? • Обучающие программы? • IL-2 Sturmovik?

Slide 8

Slide 8 text

• Инструменты для разработки бизнес-приложений • Бизнес-приложения, созданные с помощью наших инструментов • Обслуживание ИП • Бухгалтерия • CRM • ERP • FRP, ITIL, HRM, PMO, EPM, … Что делает 1С?

Slide 9

Slide 9 text

Автоматизация бизнес-кейса • Задача: автоматизировать бизнес-процесс • Сотрудник вводит документ о продаже • Кому продали • Когда продали • Что продали • Товар • Количество • Цена • Сумма

Slide 10

Slide 10 text

ER-диаграмма

Slide 11

Slide 11 text

Процедурный подход • Процедурные языки программирования • COBOL, C, Basic, … • Реляционная модель • Итеративная навигация по записям

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

ООП-подход • Реляционные СУБД • ООП-языки • Объектная модель

Slide 15

Slide 15 text

ООП-подход • Class SalesOrder • method Save • method Load • Class Customer • method Save • method Load • Class Product • method Save • method Load

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

ООП-подход++ • Object-Relational Mapping (ORM) • Автоматизирует запись и чтение объектов в СУБД • Эмуляция объектной БД поверх реляционной БД • Добавление новых парадигм в объектную модель (LINQ)

Slide 18

Slide 18 text

Лучшая программа – та, которой нет, а всё делается само

Slide 19

Slide 19 text

Domain-Driven Design • Домен • Предметная область, в которой пользователь использует программу • Модель • Система абстракций, описывающая избранные аспекты домена, используемая для решения задач, относящихся к домену • Единый язык • Язык, структурированный вокруг доменной модели, который использует вся команда разработчиков ПО, включая заказчиков (постановщиков задач)

Slide 20

Slide 20 text

Единый язык в DDD технические аспекты архитектуры технические термины технические шаблоны термины из прикладной деятельности, которых программисты не понимают профессиональные термины, отсутствующие в программной архитектуре термины модели предметной области терминология крупномасштабной структуры программисты заказчики кандидаты на попадание в модель Единый язык

Slide 21

Slide 21 text

ER-диаграмма

Slide 22

Slide 22 text

Сущности предметной области • Товары, покупатели • Пополняемые списки • Заказ на продажу • Отражает факт продажи • Ссылается на покупателя и товары

Slide 23

Slide 23 text

Модель разработки Понятия, в которых оперирует разработчик. «Кирпичи», из которых он строит бизнес-приложение.  Программный класс  Таблица базы данных  Сервер  Программная библиотека  Справочник  Документ  План счетов  Бизнес-процесс Фреймворк

Slide 24

Slide 24 text

Модель (учетные системы) • Справочник • Условно постоянная информация • Список сотрудников, товаров, клиентов, … • Может быть иерархическим (группы элементов + элементы) • Может иметь набор свойств (реквизитов) • Может иметь подчиненные сущности один-ко-многим (табличная часть) • Документ • Отражает события предметной области • Продажа товара, прием сотрудника на работу, перечисление денег в банк, … • Может иметь набор свойств (реквизитов) • Может иметь подчиненные сущности один-ко-многим (табличная часть) • Регистр накопления • Отражение системы учета • Хранение денежных средств, товаров на складах, …

Slide 25

Slide 25 text

Единый язык в DDD технические аспекты архитектуры технические термины технические шаблоны термины из прикладной деятельности, которых программисты не понимают профессиональные термины, отсутствующие в программной архитектуре СПРАВОЧНИК ДОКУМЕНТ программисты заказчики кандидаты на попадание в модель Единый язык

Slide 26

Slide 26 text

Разработка в DDD Конечный продукт Разработчик

Slide 27

Slide 27 text

Разработка в DDD Конечный продукт Разработчик DDD-фреймворка DDD-фреймворк Разработчик приложения

Slide 28

Slide 28 text

Модель (учетные системы) • Справочник • Стандартные поля • Ссылка-идентификатор • Код • Наименование • Ссылка на родителя (для иерархического справочника) • Произвольные реквизиты • Примитивы (строка, число, дата, …) • Ссылка на другой справочник/документ • Табличные части • Тесно связанные сущности • Например, список телефонов клиента

Slide 29

Slide 29 text

• Документ • Стандартные поля • Ссылка-идентификатор • Код • Наименование • Дата • признак «Проведен» • Отражать документ в учете или это «черновик» • Произвольные реквизиты • Примитивы (строка, число, дата, …) • Ссылка на другой справочник/документ • Табличные части • Тесно связанные сущности • Например, список проданных товаров Модель (учетные системы)

Slide 30

Slide 30 text

• Регистр накопления • Измерения – система координат модели учета • Товар • Покупатель • … • Ресурс – показатель • Количество • Сумма • … • Реквизиты • Дополнительные поля • Не влияют на учет • Комментарии к записям движений Модель (учетные системы)

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

Лучшая программа – та, которой нет, а всё делается само

Slide 33

Slide 33 text

Процесс разработки Постановка задачи Программный класс База данных Пользовательский интерфейс Готовая программа Задача: автоматизировать процесс продажи • Сотрудник вводит документ о продаже • Кому продали • Когда продали • Что продали • Товар • Количество • Цена • Сумма class Document { int CustomerID; DateTime Date; Collection Goods; } Классическая разработка

Slide 34

Slide 34 text

Процесс разработки Постановка задачи Программный класс База данных Пользовательский интерфейс Готовая программа Задача: автоматизировать процесс продажи • Сотрудник вводит документ о продаже • Кому продали • Когда продали • Что продали • Товар • Количество • Цена • Сумма class Document { int CustomerID; DateTime Date; Collection Goods; }Разработка в 1С Мы сознательно ограничили инструментарий разработчика объектами из мира бизнеса: • Документы • Справочники • Бизнес-процессы • Регистры • … Что создаем? Справочник Документ Бизнес-процесс План счетов … Приложение = Метаданные + Код

Slide 35

Slide 35 text

iOS, Android, Win Mobile Процесс разработки Постановка задачи Программный класс База данных Пользовательский интерфейс Готовая программа • Задача: автоматизировать бизнес-процесс • Сотрудник вводит документ о продаже • Кому продали • Когда продали • Что продали • Товар • Количество • Цена • Сумма class Document { int CustomerID; DateTime Date; Collection Goods; } Windows Linux macOS Разработка в 1С Мобильные приложения Веб Приложение = Метаданные + Код

Slide 36

Slide 36 text

• Можно минимизировать объем прикладного кода, написанного вручную • Программировать только там, где это действительно нужно • Расчет налогов, скидок и т.п. • Рассказать платформе про компоненты прикладного решения • Состав • Структура • Взаимосвязи компонентов • Платформа сделает сама бОльшую часть работы • Структура БД • Чтение / запись в БД • UI по умолчанию Совсем без программирования не обойтись, но:

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

Разработка приложений в 1С • Проецирование сущностей предметной области на встроенные объекты платформы 1С:Предприятие • Использование существующей функциональности платформы • Пользовательский интерфейс • Отчетность • Ролевая модель • Настройка прав доступа • … • Программирование недостающей функциональности • На языке 1С • С помощью внешних компонент

Slide 40

Slide 40 text

1C:Предприятие СУБД Сервер приложений Клиент ERP CRM Бухгалтерия Платформа 1С:Предприятие: runtime

Slide 41

Slide 41 text

MS SQL Server Oracle IBM DB2 PostgreSQL Сервер приложений Клиент Платформа 1С:Предприятие: runtime

Slide 42

Slide 42 text

Клиент MS SQL Server Oracle IBM DB2 PostgreSQL Windows Linux Платформа 1С:Предприятие: runtime

Slide 43

Slide 43 text

~ ~ ~ ~ Мобильные клиенты Windows Linux MS SQL Server Oracle IBM DB2 PostgreSQL Microsoft IIS Apache Windows Linux macOS Chrome Firefox Safari Internet Explorer Microsoft Edge Мобильные браузеры iOS Android Windows

Slide 44

Slide 44 text

~ ~ ~ Мобильные клиенты Windows Linux MS SQL Server Oracle IBM DB2 PostgreSQL Microsoft IIS Apache Windows Linux macOS Chrome Firefox Safari Internet Explorer Microsoft Edge Мобильные браузеры iOS Android Windows • 1cFresh – облачная среда исполнения приложений 1С (aPaaS – application Platform as a Service) • 1С использует продукт 1cFresh в сервисе http://1cfresh.com • Партнеры используют 1cFresh в модели SaaS • Клиенты используют 1cFresh в своих организациях

Slide 45

Slide 45 text

Реалии бизнес-софта • Многие вендоры делают свои фреймворки и языки • Типичная ситуация • 10-20 решений от вендора • 20-30 решений от партнеров • 1С • 20 решений от 1С • 1300 решений от партнеров 1С

Slide 46

Slide 46 text

Результаты • На долю ERP-систем 1С пришлось по нашим оценкам ~85% от общего количества автоматизируемых рабочих мест в России Доля рынка ERP в деньгах Количество рабочих мест в ERP-системах

Slide 47

Slide 47 text

Результаты Доля рынка ERP в деньгах Количество рабочих мест в ERP-системах • Количество сотрудников • Microsoft – 131 тыс. • SAP – 54 тыс. • 1С – 1,2 тыс.

Slide 48

Slide 48 text

предприятий, бизнесов, учреждений используют автоматизацию 1С пользователей продуктов 1С тиражируемых прикладных решений на платформе 1С:Предприятие 1300 специалистов программируют на языке 1С:Предприятия 1200 сотрудников работают в фирме 1С 1 500 000 5 000 000 300 000

Slide 49

Slide 49 text

СПАСИБО ЗА ВНИМАНИЕ! Петр Грибанов [email protected]