План счетов как архитектурный артефакт (Михаил...

Post on 15-Jun-2015

713 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Михаил ЗаборовCustIS «Заказные ИнформСистемы»

Руководитель направления «Торговые сети»Декабрь 2009

Аналитические планы счетов как

архитектурный артефакт

2/113

Занимается разработкойбольших

корпоративныхинформационных систем

на заказ

3/113

Большие проекты

t

0 4 мес.

1 год

Маленькие Средние Наш размерчик!

= от 10 – 15 чел. лет

Команда 5-10 человек

4/113

Очень большие проекты

t

0 1 год 10 лет

= от 40 – 100 чел. лет

Команда 30-50 человек

5/113

Принудительно делим на просто большие

6/113

В чем еще можно мерять размер?

? Объем данных

? Количество транзакций

? Объем изменений

? Длительность проекта

? Количество отчетов?

7/113

Промышленные технологии

8/113

Внутренняя логистика

-Операционная система 24x7

- Объем базы >1 Tb

- 10 млн Проводок в месяц 

- Общее количество проводок 270 млн

9/113

Аналитическоехранилище

- Объем базы >  525 Gb

- Проводок в месяц 8 млн

- Общее количество проводок 200 млн

- Пиковое кол-во проводок в день 1.7 млн 

10/113

Биллинг ЖКХ«Радей» (Саратов)

- Проводок в месяц 4.6 млн

- Общее количество проводок 130 млн

- Пиковое кол-во проводок в день  2.8 млн

 

11/113

Успешныеи

востребованные проектыпосле фазы внедрения

вовсе не заканчивают свою

«жизнь»

12/113

0

5000

10000

15000

20000

25000

30000

0 10 20 30 40 50 60 70

Время (мес.)

Ко

л-в

о м

етад

анн

ых

Изменение Создание

Начало работы

13/113

0

5000

10000

15000

20000

25000

30000

0 10 20 30 40 50 60 70

Время (мес.)

Ко

л-в

о м

етад

анн

ых

Изменение Создание

Развитие, сопровождение

Внедрение, адаптация

Сильные измененияв законодательстве

14/113

Корпоративные(Enterprise)Системы

ERP / биллинг /банковские / торговые / складские системы

Прикладное программное обеспечение предприятий и организаций

Buzzword

15/113

Немного историиОт инструмента к методологии

16/113

17/113

Методология появилась не сразу

Вначале появились архитектурные паттерны, решавшие прикладные

задачи

Потом появился инструментарий

Выделился специализированный слой архитектуры

Появилась методология описания и использования планов счетов

18/113

19/113

Задачи, которые призван

решать

инструментарий

20/113

Ведение остатков и движений ресурсов

материальные

виртуальны

е

21/113

Гарантия «Консервативности»

«Ничто не может произойти из ничего, и никак не может то, что есть, уничтожиться»

© Эмпедокл

«Однако за время пути собака могла подрасти!»

«Багаж» С.Я.Маршак

Законы сохранения

22/113

Ведение полной истории изменений ресурса

Состояние на любой момент времени

Привязка к документам, породившим изменение

23/113

Отчеты

Повторяемость

Детализация

Согласованность

24/113

Больше всего для этих целей подходит учет:

Двойная запись

Журнал операции

План счетов

«Консервативность»

Полная история

Согласованность отчетов

ЧТО ЕСТЬ УЧЕТ?Основные артефакты

25/113

26/113

http://www.omg.org/technology/documents/formal/gen_ledger.htm

Стандарт OMG

http://martinfowler.com/eaaDev/Account.html http://martinfowler.com/eaaDev/AccountingEntry.html http://martinfowler.com/eaaDev/AccountingTransaction.html

Архитектурныепаттерны

Спецификация на проводочную

машину

Что по этому поводу есть в IT?

27/113

В средневековье

Учет велся в больших хозяйственных книгах

(Ledger)

28/113

Запись в книге (Entry) 2 типа - приход/расход

Страница в книге = счет(Account)

Регулярно рассчитывается остаток или сальдо (Balance)

29/113

Именно эти объекты отразилв своей модели Фаулер

30/113

Но нам нужна двойная запись

У Фаулера есть и такой паттерн (Two Legged Transaction)

Новый термин - проводка(Transaction)

В бух учете: счет зачисления - дебет счет списания - кредит

На самом деле все не так просто

ПРОВОДОЧНАЯ МАШИНА CustIS

Инструментарий

31/113

Наша реализация существенно

сложнее

32/113

Учетные счета (Accounts)

Выделяются различные виды ресурсов – они называются синтетическими (балансовыми) счетами

Для них жестко задан набор аналитик

33/113

34/113

Учетные счета (Accounts)

Под каждым синтетическим счетом есть иерархия аналитических счетов

35/113

Синтетический счет Аналитические счета

36/113

Экземпляры счетов0 1 2 3

Товар на складе: Москва

Товар на складе: Москва:Опт

Товар на складе: Москва:Опт:

А-101 Обруч гимнастический

Товар на складе: Москва:Опт:

44160 Шарики Spezial

Товар на складе: Москва:Розница

Товар на складе: Питер

……

……

Товар на складе

37/113

Учетные счета (Accounts)

Под каждым синтетическим счетом также есть OLAP куб аналитических счетов

38/113

Текущий остаток хранится на каждом аналитическом счете нижнего уровня

Уче

тны

е с

чет

а

Син

тет

ичес

кие

счет

аА

нал

итич

ески

есч

ета

Аналитика 1

Анал

итик

а 2

N

Аналитика 1

Синтетический счет:

код, активность, [набор аналитик]

Аналитика 2

39/113

Проводки(Transaction)

Между синтетическими счетами типы операцийжестко задают корреспонденции

Аналитика 1

Аналитика 2

Аналитика 1

Проводки

Тип операции

40/113

Схему можно чуть усложнить

41/113

Остатки (Сальдо, Balance)

Несложно получить остаток на гранях OLAP куба

Расчетный счет

Банк

Распорядитель

51

Всего в банке Xу распорядителя Y

Всего в банке X

Всего на р/с Z

Итого на счете 51-2

Всего у распорядителя Y

Всего в банке X на р/с Z

42/113

Кроме того, для каждой ячейки куба, если нужно, хранится график изменения остатка в нужных временных разрезах

43/113

Показатели

Можно хранить (заранее настроенные)произвольные агрегированные показатели по аналитикам счетов и операций

Стандартнаяагрегация

Произвольнаяагрегация

Если нужно, то с графиком

44/113

Кроме агрегированных показателей можно хранить и более детальные (подокументные расшифровки, например состояние заказа)

Показатели

45/113

Можно хранить несколько разнородных показателей в одной записи таблицы БД, например план-факт

Показатели

46/113

И еще…

Множество временных разрезов физическая дата учетная дата бухгалтерская дата период отчетности дата документа

47/113

Мультивалютность Разные типы валюты:

- Документа - Контракта - Учетная - Бюджетная - Национальная - Бухгалтерская

Разные номиналы (рубли, €, $, ¥ и т.д.) Переоценка - Курсовые разницы - Суммовые разницы

И еще…

48/113

Множественность учета Несколько планов счетов Товарный (количественный) учет Денежный учет Смешанный (товарно-денежный) учет в одном плане счетов

Работа с начальным сальдо Процедуры инициализации остатков ведение истории движений до начала расчетов

Разные механизмы создания  аналитических счетов Автоматическое по аналитикам операции Ручное в соответствии с требованиями бухгалтерии

И еще…

49/113

Принципиальная схема работы

МЕТОДОЛОГИЯ ОПИСАНИЯ УЧЕТА

Описание нотации

50/113

51/113

Книги в библиотеке (Автор, Полка)

Книги у читателя (Автор, Читатель)

ПоступлениеВ библиотеку

Выдача читателю

СписаниеВетхих книг

ВозвратОт читателя

Утрата

Простой план счетов

52/113

Книги в библиотеке (Автор, Полка)

Книги у читателя (Автор, Читатель)

ПоступлениеВ библиотеку

Выдача читателю

СписаниеВетхих книг

ВозвратОт читателя

Утрата

Синтетический (балансовый)

счет

Название счета

Аналитики(определяют набор

аналитических счетов)

Операции

Тип операции

Внешний мир(может быть отдельный БС -

Буфер)

Внешний мир(на картинке может быть несколько, но это один

и тот же внешний мир)

53/113

Книги в библиотеке (Автор, Полка)

Книги у читателя (Автор, Читатель)

Как читать схемуНачальное состояние системы

Что мы знаем:Остатки:Всего книг в фонде – 0 На руках - 0 в библиотеке - 0

Обороты:Принято книг -

0Выдано - 0Вернулось – 0Потеряна - 0

54/113

Книги в библиотеке (Автор, Полка)

Книги у читателя (Автор, Читатель)

1. ПришелГ. Буч.7 книг

положили на полку A1Что мы знаем:

Остатки:Всего книг в фонде – 7 На руках - 0 в библиотеке - 7 по авторам: Буч – 7 по полкам A1 – 7

Обороты:Принято книг -

7Выдано - 0Вернулось – 0Потеряна - 0

55/113

Книги в библиотеке (Автор, Полка)

Книги у читателя (Автор, Читатель)

1. Г. Буч. A17 книг

2. Г. Буч. A23 книги

Что мы знаем:Остатки:Всего книг в фонде – 10 На руках - 0 в библиотеке - 10 по авторам: Буч – 10 по полкам A1 – 7 A2 - 3

Обороты:Принято книг -

10Выдано - 0Вернулось – 0Потеряна - 0

56/113

Книги в библиотеке (Автор, Полка)

Книги у читателя (Автор, Читатель)

1. Г. Буч. A17 книг

2. Г. Буч. A23 книги

3. Выдали Г.Буча с Полки A2 Заборову

2 шт

Что мы знаем:Остатки:Всего книг в фонде – 10 На руках - 2 в библиотеке - 8 по авторам: Буч – 8 по полкам A1 – 7 A2 - 1

Обороты:Принято книг -

10Выдано - 2Вернулось – 0Потеряна - 0

57/113

Книги в библиотеке (Автор, Полка)

Книги у читателя (Автор, Читатель)

1. Г. Буч. A17 книг

2. Г. Буч. A23 книги

3. Г.Буч A2 Заборову

2 шт

4. Т.Кайт A2 6 книгЧто мы знаем:

Остатки:Всего книг в фонде – 16 На руках - 2 в библиотеке - 14 по авторам: Буч – 8 Кайт - 6 по полкам A1 – 7 A2 - 7

Обороты:Принято книг -

16Выдано - 2Вернулось – 0Потеряна - 0

Что мы знаем:Остатки:Всего книг в фонде – 16 На руках - 2 в библиотеке - 14 по авторам: Буч – 8 Кайт - 6 по полкам A1 – 7 A2 - 7

58/113

Книги в библиотеке (Автор, Полка)

Книги у читателя (Автор, Читатель)

1. Г. Буч. A17 книг

2. Г. Буч. A23 книги

3. Г.Буч A2 Заборову

2 шт

4. Т.Кайт A2 6 книг

5. Т.Кайт A1 Яницкому

2 шт

Эту ошибку можно

обрабатывать по-разному

Обороты:Принято книг -

16Выдано - 2Вернулось – 0Потеряна - 0

Так нельзя! На полке A1

нет Кайта

59/113

Книги в библиотеке (Автор, Полка)

Книги у читателя (Автор, Читатель)

1. Г. Буч. A17 книг

2. Г. Буч. A23 книги

3. Г.Буч A2 Заборову

2 шт

4. Т.Кайт A2 6 книг

5.Заборов1 го

Буча потерял L

Что мы знаем:Остатки:Всего книг в фонде – 15 На руках - 1 в библиотеке - 14 по авторам: Буч – 8 Кайт - 6 по полкам A1 – 7 A2 - 7

Обороты:Принято книг -

16Выдано - 2Вернулось – 0Потеряна - 1

60/113

А если выкладывание на полку

- отдельный процесс?

61/113

Книги в библиотеке (Автор, Полка)

Книги у читателя (Автор, Читатель)

ПоступлениеВ библиотеку

Выдача читателю

СписаниеВетхих книг

ВозвратОт читателя

Утрата

Неразобранные книги(Автор)

Положили на полку

Переложили книгу

Эти картинки понятны и бизнесу

и разработчику

62/113

Товар на складе(место, категория)

Кондиционный товар

Брак и уценка(причина уценки)

ОтгрузкаПриемка

РемонтВыбраковка

Утилизация

В больших планахсчетов мы используем

субсчета

Оченьпохоже на

наследование

63/113

Главныйсчет

Товар на складе(место, категория)

Кондиционный товар

Брак и уценка(причина уценки)

ОтгрузкаПриемка

РемонтВыбраковка

Утилизация

Субсчета

Общие аналитики

Общиеоперации

Специфические аналитики

Специфические операции

64/113

Кондиционный товар(место, категория)

Брак и уценка(место, категория,причина уценки)

Отгрузка

Приемка

РемонтВыбраковка

Утилизация

Приемка

Отгрузка

Эквивалентная запись:

Убрать главный счет Все аналитики главного счета прописать в субсчетах

Все операции главного счета размножить на субсчета

Товар на складе(место, категория)

Кондиционный товар

Брак и уценка(причина уценки)

ОтгрузкаПриемка

РемонтВыбраковка

Утилизация

65/113

Есть еще один «нюанс» -активно/пассивный учет

Баланс компании

Актив - те ресурсы, которые принадлежат компании, или которые она надеется получить в будущем, например, долг за отгруженный товар

Пассив – обязательства или задолженность компании в той или иной форме, например, долг поставщику или обязательства по отгрузке товара

Дебет счета – увеличение ресурса компании или уменьшение ее обязательства

Кредит счета – уменьшение ресурса компании или увеличение ее обязательства

66/113

Эти критерии тяжело понять,

если ты не бухгалтер

67/113

Для нас это выглядит так:

Активный счет - это счет, где увеличение остатка записывается по дебету, уменьшение остатка – по кредиту (т.е. если на него пришла сумма, то остаток на счете увеличился, а если ушла – то уменьшился)

Пассивный счет - увеличение остатка записывается по кредиту, уменьшение остатка – по дебету (т.е. если на него пришла сумма, то остаток на счете уменьшился, а если ушла – то увеличился)

Активно-пассивный счет – это активный счет, на котором разрешен отрицательный остаток

Естественныйход вещей

С ног на голову

Активность A Активность B Остаток на A Остаток на B

активный активный уменьшился увеличился

активный пассивный уменьшился уменьшился

пассивный активный увеличился увеличился

пассивный пассивный увеличился уменьшился

68/113

Теперь вы ничего не сможете сказать по этой картинке…

…если не знаете активность счетов

C «консервативностью»тоже много вопросов

69/113

Отгружено[активный](Клиент)

Долг[активный]

(Клиент,ЮЛ )

Отгрузка

Фиксация В рассчетах

Неразобранные платежи[пассивный]

(р/с)

Разобранные платежи[пассивный]

(ЮЛ, р/с)

Платежка

Разбор платежей

Распределение платежей

ОтменаРаспределения

платежей

Активность счета(пишется словами и/или

выделяется цветом)

Как это отображается у нас

70/113

Отгружено[задолженность]

(Клиент)

Долг[задолженность]

(Клиент,ЮЛ )

Отгрузка

Фиксация В рассчетах

Неразобранные платежи[деньги]

(р/с)

Разобранные платежи[деньги](ЮЛ, р/с)

Платежка

Разбор платежей

Распределение платежей

ОтменаРаспределения

платежей

Появляется остаток

обоих ресурсов

Оба ресурса слопнулись

Можно представить как 2 ресурса

Пользоватьсянужно с

осторожностью

71/113

А как описывать планы счетов по-другому?

72/113

Например так…

73/113

В лучшем случае - так

74/113

Поставщик(Импортер/резидент/уе)

(ВК)

Контрагент(ВК)

Безвозмездные пост.

Товар до таможниТИ

Товар на таможнеТИ

Услуги в пути(ИУ)

ПН+расходыДата ПН

ТИ Дата ППС

ИУДата ППС

Дата по условию на ВК

Отбор по товарув строке ИУ

Коммерческиерасходы

ГТД на ТИ -АоСрекл/корДата ГТД Whitness=3

Доходы(Статьи)

ТИ Дата ППСРыночная цена

Freesign=1

Прямые расходы без НДС

Валюта списанаВалюта счета

Дата валютирования

ИУДата ИУ

НДС таможенный(ставки)

НДС услуг(ставки)

Сборы, пошлины дата ГТД

НДС ИУ ТК

акты по ИУ без НДС

Дата ППСРыночная цена

НДС ИУпоставщика

НДС товар РФ(ставки)

Товар не РФТИ

Бесплатныйтовар ТИ

ТИДата ППС

Склад не РФ (ТИ)

Склад РФ (ТИ)

ТК-нерезидентВК

ТК-резидентВалюта руб СДД

Дата списанияИУ с НДС

Дата ППС ИУ

НДС тамож.дата ГТД

ВК списанаВК

Дата списания

Товар резидентаТИ

ТИ без НДСДата ППС

Поставщик -резидент

52 Валютные счета, аккредитивы 51.Рублевые счета

Дата списания

КН брака

НДС тамож. опл.брокером

НДС ТИ

Дата валютирования

Расходы(Статьи)

АоС+расходыДата ПН

АоС излишкаакты по ИУ товар не РФ

ПН излишкаДата ПН

почти эквивалентно

УЧЕТ - АРХИТЕКТУРНЫЙ АРТЕФАКТ

Как встраивается в приложение

75/113

76/113

Классическая ситуация:

Формочки

Бизнес логикаОбъекты/Классы/Сущности

РеляционныеТаблицы

Справочники

Документы

Что–то еще

Всем понятно что такое«Документ»?

77/113

Наш случай:

78/113

Запросы и выборки Повторяемые отчеты

Первичные документы

Физическая модель Аппаратное обеспечение,

Операционная системаХранение

Реляционная модель(Oracle)

Объектная модель(CisUni, CisUni.Net)

Справочники

Документы

Справочные данные

Отображение

Учетная модель

Операции

Проводки

Остатки

Отображение

Отображение

Документы

Состояние

Чуть подробнее

79/113

Объектная модель ведет учетнуюОтображение может быть

On-line и off-line

80/113

Отчетность

81/113

Отчетность

УЧЕТ – МОДЕЛЬ ПРЕДМЕТНОЙ ОБЛАСТИ

82/113

83/113

При итеративной разработке

мы работаем с небольшим куском системы

84/113

85/113

Где гарантия, что мы получится то,

что нужно?

86/113

87/113

Нужна общая картина

88/113

89/113

При проектировании такая картина –

модель предметной области

aka Domain Model

90/113

Модель – это упрощенное

приближение реальности.

Максимально простое,

при условии достаточной

близости к действительности.

91/113

Чаще это всего диаграмма классов(ER-модель)

92/113

Мы часто используем Учетные модели, как модели предметной области Совместно с

диаграммой классов

PROFIT:Учет, обычно, более стабилен. В него гораздо реже вносятся изменения - «инвариант предметной области»

Учет обычно более лаконичен и информативен

Практически всегда мы включаем схему учета в концептуальный проект (vision)– диаграмму классов не всегда. И почти всегда рисуем план счетов раньше.

93/113

Планы счетов «прочно вошли в нашу

жизнь»

94/113

95/113

96/113

97/113

98/113

Аналитические планы счетов:

Модель предметной области

Методология описания потоков ресурсов

Дополнительный архитектурный слой

Инструментарий разработки учетных систем

15 лет успешного использования

99/113

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

top related