Докладчик: Учетная машина – универсальная архитектура учетно-аналитических систем Докладчик: Максим Цепков Заказные ИнформСистемы Application Developers Days 2010 г.Ярославль сентября it-conf.ruit-conf.ru
2 Учетно-аналитические системы Занимают большой сегмент автоматизации это все, где нужны остатки ресурсов, их история и отчеты по ним это не только бухгалтерия и управленческая отчетность это оперативные расчеты с партнерами, логистика и многое другое
3 Типовое назначение системы Автоматизация области бизнес-процессов компании пользователи создают документы по необходимости заполняют справочники потом документы исполняют при этом меняются учетные данные которые влияют на исполнение документов и отражаются в отчетах
4 Шаблоны – это хорошо Выделение шаблонов позволяет сосредоточиться на креативном решении действительно новых задач Критичный процесс разработки – проектирование Использование шаблонов – снижает риски Особенно это касается архитектуры приложений Поэтому архитектурные шаблоны особенно важны
5 Шаблоны для учетных систем Mainstream – объектно-ориентированный подход Обработка документов хорошо описывается документ реализуется как объект со своими атрибутами работа с документом реализуется через методы этого объекта Учетная часть плохо описывается в ООП Что такое отчет о продажах как объект? Что такое остаток товара на складе как объект? А история остатка? Что такое долг клиента как объект? А его кредитная история? Естественно, все это реализуется некоторыми классами, OLAP-модель подходит лучше, но описывает не все
6 Шаблоны для учетных систем Шаблонов учетной части – недостаточно практически есть Martin Fowler Accounting PatternsAccounting Patterns и его же неоконченные Patterns for AccountingPatterns for Accounting В учетных системах мы находим схожие черты они построены аналогично, на общих шаблонах типичный и известный пример – семейство 1С, есть много других однако, нет описаний шаблонов, заложенных в них шаблон практически не отделяется от конкретной реализации а детали реализации обычно не раскрываются разработчиками и это сильно мешает осознанию шаблонов и их применению
7 Наш шаблон – «Учетная Машина» Компания CUSTIS занимается заказной разработкойCUSTIS Основные заказы – учетно-аналитические системы За 15 лет разработано множество систем Выработан архитектурный шаблон – учетная машина Он будет представлен далее в докладе Шаблон не является чем-то принципиально новым Он хорошо соотносится с мировым опытом И, в частности, с шаблонами от Мартина Фаулера Но глубже и подробнее
8 А реализация приложения? Реализация архитектуры может быть разной у нас реализовано несколько платформ для приложений есть и развивается инструмент генерации учетной части во многих проектах была частная реализация Поэтому мы и говорим об архитектурном шаблоне, а не о некотором готовом решении Шаблон можно использовать при проектировании независимо от платформы реализации
9 Методология реализации учета Учет с помощью проводок в планах счетов проводка фиксирует перемещение ресурса источник проводок – учетные события в системе или операции двойная запись обеспечивает консервативность учета и трассировку перемещений остатки и обороты по аналитическим счетам служат как исходной информацией для отчетов, так и оперативными показателями Методология заимствована из бухгалтерии
10 Как применяется методология? Заимствована методология, а не правила учета бухгалтерский учет – комплексный и ориентирован на отчетность мы применяем методологию для всех учетно-аналитических задач планы счетов часто – существенно проще бухгалтерских но их – несколько, в соответствии с целями учета Что дает заимствование можно использовать средства и методы анализа можно пользоваться приемами организации учета общая методология для бухгалтерского, управленческого и оперативного учета повышает однородность приложения Что надо помнить при проектировании надо избегать лишней сложности, присущей бухгалтерии надо творчески адаптировать приемы, сохраняя дух, а не букву
11 Может, это слишком сложно? Часто учет представляется простым: Если товар привезли на склад, остаток увеличился Если товар продали, увеличился долг клиента Кажется, что это можно просто кодировать… Но при углублении в детали возникают вопросы Продали – когда счет выписали, когда заплатил или когда отдали? Если товар привезли, но с документами не сверили – он уже есть? Ответы различаются для разных ситуаций Сложность учета увеличивается… Она отражает сложность бизнес-процесса Поэтому применение методологии учета – уместно
12 Шаблон учетного приложения Бизнес-слой приложения делится на два слой документооборота (хотя там не только документы) учетный слой Между ними – слабое взаимодействие У каждого свои шаблоны реализации
13 Составные части шаблона Принципы разделения бизнес-логики между слоями изменение показателей учета – только по учетным событиям учетные события возникают в слое документов обработка этих событий – в учетном слое хранение данных – логически разделено интерфейсы работают с учетным слоем только на запрос данных отчеты основаны на показателях учетного слоя Протокол взаимодействия между слоями по изменению учета – основан на модели учетных событий запрос данных учета – в терминах остатков и оборотов по аналитическим счетам (и их аналогам) необходима трассировка изменений показателей до документов
14 Операции – двухсторонний скотч Проводки Создание проводок Исполнение документов Документы Журнал операций ссылка Типы операций (учетных событий) Документооборот Планы счетов генерация
15 Слой документооборота Применяется объектно- ориентированный подход Документы и справочники – развитые (rich) объекты Работа с документами – через методы Граф переходов Этапы обработки документа отражаются в его состоянии Переходы между состояниями – особые методы Учетные события, как правило, возникают на переходах
16 Учетный слой Основа – модель учета, а не объектная модель типовая структура данных результаты – больше похожи на OLAP Журнал операций фиксирует учетные события в системе сохраняет важные атрибуты документов и справочников на момент события обеспечивает связь проводок с документами Ведение учета результат учета – остатки и обороты в заданных разрезах изменяются только с помощью проводок с двойной записью вычисление проводок – при обработке учетного события (операции)
17 Аналитические разрезы На аналитических счетах через иерархию в виде гиперкуба смешанное На проводках Показатели детализированные агрегированные Склад Учетные счета Синтетические счета Аналитические счета Товар БракКондиция Товар Склады Товары Товар Качество
18 Итого – схема Учетной Машины Реализация в ООП Развитые объекты Переходы документов Модель учета – из бухгалтерии Типовая объектная схема Операции – учетные события Типовые решения: документооборот организация учета балансовые отчеты Логика документов и отчетов разделены
19 Уровни реализации слоев В клиент-серверной архитектуре всю бизнес-логика мы обычно реализуем на сервере базы данных В трехуровневая архитектуре планы счетов обычно реализуются на сервере базы данных бизнес-логика справочников и документов – на сервере приложений журнал операций и порождение проводок по ним – по-разному
20 Распределенная реализация Деление на две системы – операционную и сводного управленческого или бухгалтерского учета операционные системы обработки документов порождают журнал операций (при этом ведут свой оперативный учет на планах счетов) операции поступают в учетную систему, где создаются проводки возможно поступление операций из нескольких систем
21 Множество планов счетов… Каждый отражает часть деятельности фирмы учет товарного запаса учет взаиморасчетов с покупателями и так далее… И реализует свой вид учета, со своим заказчиком оперативный управленческий для менеджеров бухгалтерский и налоговый учет управленческий учет по МФСО… При их проектировании опираемся на реальные потоки ресурсов, а не на правила бухучета Они получаются относительно простые Но их надо уметь эффективно описывать Оперативный учет – ведение показателей, используемых в бизнес- логике приложения
22 Эффективно описывать диаграммами Диаграммы дают понимание и визуальный образ Есть стандарты диаграмм для отдельных областей диаграммы классов ER-диаграммы диаграммы потоков данных диаграммы состояний диаграммы деятельностей и другие Нет диаграмм для описания учета UML Феномен UML: придумывали язык, используют диаграммы
23 Может быть, диаграммы не нужны? Диаграммы необходимы – описания учета сложны Сейчас учет описывают примерно так Или так
24 Как нарисовать учет? Учет – измерение запасов и потоков ресурсов текущие остатки имеющихся ресурсов: товаров, денег, имущества текущие остатки потенциальных ресурсов – долгов и обязательств Поэтому мы рисуем счета-запасы и стрелки-проводки между ними Сложность диаграмм отражает сложность учета Синтетический счет Подпись: Название (аналитики) Проводка, стрелка к счету дебета Подпись: Учетное событие (содержание) Внешний мир (незамкнутый учет)
25 Как это работает? Модельный пример – личные финансы На рисунке – личные финансы, операции за месяц Задача Личные финансы Сколько у меня денег и где? Сколько я должен? Кто мне должен и сколько? На что тратятся деньги? Какие доходы и откуда? Задачу рассказывает бизнес
26 План счетов личных финансов
27 Пример 1 – взаиморасчеты Задача – взаиморасчеты с клиентами холдинг из нескольких юр.лиц, клиенты – тоже могут быть холдинги по контрактам – разные условия платежей и валюты баланса оплаты и отгрузки идут асинхронно в рамках контрактов их надо сопоставлять, и автоматически пересчитывать сопоставление с изменением старых документов Управленческий учет: отгрузка только в пределах установленных лимитов контроль своевременности оплат Бухгалтерский учет ведение счета 62 расчетов с клиентами и счета 90 продажи (кроме НДС) управленческие и бухгалтерские события могут иметь разные даты А теперь – реальная жизнь
28 План счетов управленческого учета
29 План счетов бухгалтерского учета
30 Соответствие схем учета Управленческий учетБухгалтерский учет
31 Пример 2 – учет ценных бумаг Задача – учет инвестиционного портфеля банка часть общей задачи учета операций банка с ценными бумагами ведется аналитический и сводный бухгалтерский учет необходим контроль соответствия обоих видов учета требуется нормативная отчетность по обоим видам учета Аналитический учет ценные бумаги учитываются по партиям покупки стоимость бумаги делится по компонентам в соответствии с ПБУ при продаже выделяется финансовый результат каждой сделки Сводный бухгалтерский учет аналитика по партиям покупок и продаж не ведется проводки – через агрегацию проводок аналитического учета требуется сверка остатков по счетам с главной книгой
32 Аналитический учет ценных бумаг
33 Что дают диаграммы планов счетов Диаграммы планов счетов наглядны согласованы с заказчиком с ними можно сверять реализацию в их терминах формулируются требования на изменение Диаграммы планов счетов понимают все участники: бизнес-пользователи и эксперты заказчика бизнес-аналитики системные аналитики, архитекторы разработчики инженеры поддержки Сложность диаграмм отражает сложность учета Можно наглядно представить бухгалтерский учет разработчикам В оперативном учете можно реализовывать сложные конструкции
34 Надеемся, это будет полезным Многие учетные системы построены по шаблонам Но разработчики их не публикуют… Зря! Обмениваться шаблонами приложения – полезно Мы поделились своим шаблоном учетных систем И нашим способом описания учета – диаграммами планов счетов Спасибо! Вопросы? Максим Цепков