Элементарная точка зрения в архитектуре [предприятия]
Аннотация: небольшая заметка на тему как выделяется слой в архитектуре (например, архитектуре предприятия или любой другой анализируемой системе). Слой в архитектуре - как один из способ инвентаризации физической или ментальной реальности можно считать элементарной точкой зрения.
Возьмем за основу такой пример. Вы пришли в ресторан (10 человек) и на вашу команию заказали 5 различных блюд по меню, причем все блюда по 2 раза и по одному бокалу напитка на каждого человека. Итого 10 блюд и 10 напитков.
Какие слои можно выделить на этом столе?
Слой №1. Блюда из каталога (блюда согласно меню). Их пять. Точка зрения экономиста ресторана, который каждое такое блюдо расчитал по стоимости. Каждое блюдо - это и объект для заказывания клиентом, и объект для расчета за блюдо, и на кухне есть спецификация на каждое блюдо (5 спецификаций для нашего примера).
Слой №2. Классы продуктов, из которых созданы блюда. Например, сосиски, капуста, пиво, помидоры, огурцы, стейки, вино, картофель, петрушка, селедка. Это может быть точка зрения потребителя блюд на тему, что вкусно, не вкусно, кошерное или постное, овощное или мясное и т.п. Это может быть точка зрения службы закупки ихи службы хранения продуктов ресторана.
Слой №3. Посуда: 10 тарелок, 6 бокалов для вина, 4 бокала для пива, вилки - 10 штук, ножи - 10 штук, 3 пиалы с соусом. Это точка зрения официанта, который сервирует стол и подает блюда. Это точка зрения посудомойки, для которой каждая такая единица отражает трудозатраты на мойку.
Слой №4. Поданное блюдо или напиток. Их 20 (10 блюд и 10 напитков). Кажое блюдо - это объект изготовления, сервировки, подачи, расчета. Поданное блюдо - самостоятельный объект инвентаризации, но важно отметить, что оно является агрегатом (обладает связями агрегации с элементами первых трех слоев). Каждый такой агрегат (поданное блюдо или напиток) связан с:
- заказанным блюдом и его ценой
- составом включенных в блюдо классов продуктов или жидкостей
- использованной для блюда посудой.
Слой №4 - это точка зрения потребителя, повара, официанта, кассира.
Таким образом каждый слой - это особый взгляд (точка зрения) на реальность, где заинтересованное лицо выделяет объекты реальности через призму своего интереса:
- официант видит в этой истории "сколько раз нужно принести/отнести"
- потребитель видит сколько придется заплатить и подождать подачи
- служба закупки видит, сколько продуктов уйдет с холодильника (и его придется пополнить)
- посудомойка видит, сколько придется помыть.
То есть Заинтересованное Лицо определяет как именно будет инвентаризована (разделена на атомарные единицы) та часть реальности, которая находится в зоне его интереса. Очевидно, что каждое заинтересованное лицо по-своему структурирует (разделяет на объекты) видимую часть одной и той же реальности. Задача архитектора - создать для всех заинтересантов одну общую консистентную модель. Но чем руководствуются заинтересанты, разделяя реальность на объекты?
- мойщик посуды ориентируется на физические ощущения от предметов, которые нужно мыть и как с ними обращаться, например, помыть бокал сложнее, чем тарелку.
- официант, подающий блюда, ориентируется на подачу блюда с посудой одновременно, учитывая вес, размеры, необходимость совместного выноса.
Точно также и для сферы ИТ:
- кто-то выделяет микросервисы лишь потому, что у них есть нужные ему API-методы;
- кто-то выделяет в ландшафте предприятия информационные системы, потому что они являются объектом бюджетирования;
- кто-то выделяет компоненты приложения, которые являются отдельными единицами развертывания;
- кто-то выделяет требования, так как за каждым требованием будет стоять отдельный автор, цена и ЖЦ реализации требования;
- кто будет выделять функции приложения? - вопрос пока не ясный, так как никто точно не знает, как обращаться с функциями, как их "потреблять". Похожая ситуация и с шагами бизнес-процессов: сколько их можно и нужно выделить? - здесь тоже требуется какой-то критерий различимости и полезности шагов для заинтересанта.
- интересная ситуация с выделением целей. Кто будет их выделять, различать, на каком основании? как долго будут существовать эти основания?