|
Персональные инструменты |
![]() |
||
|
![]() |
![]() Макс: Application Developer Days 2010 - тезисы — различия между версиямиМатериал из CustisWiki
Текущая версия на 16:34, 7 июня 2013Автор: Максим Цепков, главный архитектор компании CUSTIS (Заказные ИнформСистемы). Название доклада: Учетная машина — универсальная архитектура учетно-аналитических систем. Запись доклада: Учетная машина (Максим Цепков на ADD-2010) СодержаниеАннотацияУчетный функционал является непременной частью большого количества систем, играя во многих ведущую роль. Вместе с тем, не существует распространенных шаблонов его проектирования и реализации, в отличие от многих других распространенных классов задач. Исключение составляют лишь Patterns for Accounting от Мартина Фаулера (http://martinfowler.com/apsupp/accounting.pdf и http://martinfowler.com/eaaDev/AccountingNarrative.html), однако они ориентированы на относительно узкий класс систем и не завершены. За время существования нашей компании мы разработали множество учетно-аналитических систем и выработали свой шаблон их реализации — учетную машину. Он включает в себя не только бухгалтерский учет, но и широкий спектр задач, таких как ведение остатков на складе, или текущих долгов клиентов. Этот шаблон и будет представлен в докладе. Функционал учета выделяется в отдельный учетный слой приложения. Он обеспечивает ведение показателей, используемых как для оперативной работы и проверок бизнес-логики, так и для отчетов. Показатели ведутся с помощью проводок, создаваемых по потоку учетных событий приложения. Реализация учетной машины может быть различной. В различных проектах нашей компании применялся широкий спектр вариантов, от жесткого кодирования до универсальных машин, управляемых метаданными с различными промежуточными вариантами. В ходе этого были выработаны общие шаблоны реализации и протокола взаимодействия с бизнес-логикой документов и интерфейсным слоем приложения. Чтобы планы счетов стали рабочим инструментом не только бухгалтера, но и разработчика, необходимы средства, обеспечивающие их наглядное и компактное представление, визуализацию. К сожалению, ни UML, ни другие стандартные нотации не содержат диаграмм для визуализации учета. Поэтому нам пришлось разработать собственное средство визуализации — диаграммы планов счетов. С их помощью можно представить схемы учета в наглядном и понятном виде, согласовывать учет с бухгалтерами и передавать их разработчикам. В докладе демонстрируется использование диаграмм на простом модельном примере — личных финансах, а затем приведено несколько диаграмм из реальных проектов. Диаграммы планов счетов легко понимают все участники проекта: бизнес-пользователи и эксперты заказчика, бизнес-аналитики, системные аналитики, архитекторы, разработчики, инженеры. Наряду с диаграммами классов они являются основными комплексными схемами системы, и, для учетно-аналитических систем — даже более важными, чем диаграммы классов. Выделение шаблонов реализации для тех или иных типовых задач — важная часть процесса развития процесса разработки программного обеспечения. Применение выделенных шаблонов позволяет эффективнее строить системы, сосредотачиваясь на решении новых задач, вместо повторных поисков ранее решенных. Даже если шаблон не подходит полностью, разработка собственных решений с учетом имеющихся шаблонов — эффективнее. Мы надеемся, что представленный шаблон учетной машины поможет Вам при разработке приложений. А совместная работа — позволит развивать его и далее. Краткое изложениеОбщий подход, методологияУчетный функционал является непременной частью большого количества систем, играя во многих ведущую роль. Вместе с тем, не существует распространенных шаблонов его проектирования и реализации, в отличие от многих других распространенных классов задач. Исключение составляют лишь Patterns for Accounting от Мартина Фаулера (http://martinfowler.com/apsupp/accounting.pdf и http://martinfowler.com/eaaDev/AccountingNarrative.html), однако они ориентированы на относительно узкий класс систем и не завершены. За время существования нашей компании мы разработали множество учетно-аналитических систем и выработали свой шаблон их реализации — учетную машину. Он включает в себя не только бухгалтерский учет или управленческий учет по МСФО, но и широкий спектр задач, таких как ведение остатков на складе, или текущих долгов клиентов. Этот шаблон и будет представлен в докладе. Методология реализации учетного функционала приложения была взята из бухгалтерии. Это учет с помощью проводок между аналитическими счетами с двойной записью. Проводка фиксирует перемещение ресурса, а двойная запись обеспечивает консервативность учета и трассировку перемещений. Поскольку в большинстве задач учет не является замкнутым, допускается отсутствие одного из счетов. Источником проводок служат учетные события в системе, или операции. Как правило, операции выполняются при изменении состояний документов. Все эти схемы известны и применяются при реализации систем бухгалтерского учета. Однако, наш подход состоит в их применении для всех учетно-аналитических задач. При этом в рамках системы конструируется план счетов, остатки и обороты которого обеспечивают необходимые показатели как для оперативной работы и проверок бизнес-логики, так и для отчетов. Такой подход обеспечивает согласование между собой оперативных и отчетных данных, что является существенным преимуществом. Шаблон учетного приложенияОбщая схема учетного приложения представлена на рисунке. При этом в учетном слое можно выделить два уровня: обработки операций и реализации планов счетов. Реализация учетного слоя может быть различной. В различных проектах нашей компании применялся широкий спектр вариантов, от жесткого кодирования до универсальных машин, управляемых метаданными с различными промежуточными вариантами. В ходе этого были выработаны общие шаблоны реализации и протокола взаимодействия с бизнес-логикой документов и интерфейсным слоем приложения.. А для наиболее устойчивой части был разработан генератор, который по XML-описанию плана счетов порождает его реализацию. Что касается уровней реализации, то в клиент-серверной архитектуре мы обычно реализуем всю бизнес-логику приложения на сервере базы данных. В трехзвенной архитектуре планы счетов также реализуются на уровне сервера базы данных. Обработка же операций с порождением проводок может быть реализована как на уровне базы данных, так и на сервере приложений, где работает бизнес-логика документов и справочников. Бывают распределенные реализации, при которых учетные операции поступают из документооборота внешних, в том числе нескольких, систем. Хочется остановиться на наиболее характерных частях шаблонов учетной машины, выработанных в нашей компании.
Важной особенностью ведения проектов является то, что при проектировании управленческих планов счетов мы опираемся не на правила бухгалтерского учета, а отражаем в них реальные потоки движения ресурсов. Это позволяет создавать гораздо более простые и понятные учетные схемы, ориентированные на конкретные задачи, нежели обобщенные схемы бухгалтерского учета. При этом учетная часть и ее схема − относительно стабильна, отражает физическое движение. Сервис на документах можно свободно наращивать, развивая и усложняя их бизнес-логику, но пока сохраняется схема учета − работают все отчеты. Аналогично, отчетную часть можно строить, опираясь только на учетные показатели и не вникая в особенности работы бизнес-логики различных типов документов. Диаграммы планов счетовЧтобы планы счетов стали рабочим инструментом не только бухгалтера, но и разработчика, необходимы средства, обеспечивающие их наглядное и компактное представление, визуализацию. Средства визуализации, диаграммы являются мощным инструментов описания сложных структур, которое существенно повышает эффективность работы с ними. Свидетельством тому — популярность UML-диаграмм и их многочисленность. К сожалению, ни UML, ни другие стандартные нотации не содержат диаграмм для визуализации учета. Поэтому нам пришлось разработать собственное средство визуализации — диаграммы планов счетов. С их помощью можно представить схемы учета в наглядном и понятном виде, согласовывать учет с бухгалтерами и передавать их разработчикам. Они выполняются в формальной нотации, которая позволяет точно отобразить учет в системе. В докладе демонстрируется использование диаграмм на простом модельном примере — личных финансах, а затем приведено несколько диаграмм из реальных проектов. Диаграммы планов счетов легко понимают все участники проекта: бизнес-пользователи и эксперты заказчика, бизнес-аналитики, системные аналитики, архитекторы, разработчики, инженеры. Это сильно повышает эффективность аналитической работы и качество разрабатываемых систем. Наряду с диаграммами классов они являются основными комплексными схемами системы, и, для учетно-аналитических систем — даже более важными, чем диаграммы классов. ЗаключениеВыделение шаблонов реализации для тех или иных типовых задач — важная часть процесса развития процесса разработки программного обеспечения. Применение выделенных шаблонов позволяет эффективнее строить системы, сосредотачиваясь на решении новых задач, вместо повторных поисков ранее решенных. Даже если шаблон не подходит полностью, разработка собственных решений с учетом имеющихся шаблонов — эффективнее. Мы надеемся, что представленный шаблон учетной машины поможет Вам при разработке приложений. А совместная работа — позволит развивать его и далее. Внимание! Эта статья была создана путем автоматического реплицирования из внутренней базы знаний компании Заказные Информ Системы. Любые правки этой статьи могут быть перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion». |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |