В чем проблема, в чем задача

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

В конвейерном проектировании смысл заключается в возможности использования старых наработок, готовых блоков, деталей, заготовок. Это возможно только в том случае, когда принимается единый взгляд на проект, на его структуру и технологию. Это ясно.

Проблема в том, что мы не видим этой единой структуры. Точнее, каждый видит ее по-своему. Для того, чтобы договориться, нужно идти от общих понятий к частностям. Мы не намерены ломать принятые структуры, но осмыслить их с новых позиций полезно.

Матричный подход

Идея подхода проста. Проиллюстрируем ее на далеком примере, чтобы не утонуть в тонкостях нашего предмета. Пусть речь идет о снабжении населения продуктами питания.

Здесь можно выделить последовательность процессов, которая в конце концов приводит к результату.

        • Продукты надо вырастить (сначала посадить, потом поливать, собрать).
        • Продукты нужно доставить в магазин.
        • Продукты нужно продать покупателю.

Совершенно очевидно, что эта простая структура может быть реализована множеством способов. Скажем, выращивание продуктов может включать в себя предварительную обработку почвы, посадку деревьев. А если речь идет о сборе грибов — тут продукт уже готов, его нужно просто отыскать…

Важно то, что все эти процессы отделены от следующих больших блоков. В магазин попадают продукты, выращенные в разных местах (в том числе в Африке), доставленные разными способами, и при продаже решаются свои специфические вопросы. Продажа также может быть организована самыми разными способами.

Вывод — в конкретном случае мы не пытаемся найти прототип, который совпадает со всем нашим проектом. Мы выбираем прототипы для каждого процесса. У одних возьмем организацию выращивания, у других — доставку, у третьих — продажу.

Для того, чтобы не было проблем, было бы полезно поставить разделители между этими процессами и четко понимать, где кончается один и начинается второй.

Логистика

В нашем случае товары также участвуют в последовательных процессах. Мы выделяем приемку на склад, подбор, отгрузку и другие процессы.

Легко заметить, что на складе есть «точки покоя», куда товары попадают в результате предыдущего процесса и ожидают начала последующего. Это линии разгрузки, полки и стеллажи, буферы, линии отгрузки и так далее.

Давайте для начала составим схему движения товаров по складу, обозначив на ней пути, по которым товары могут двигаться между точками покоя. Например, если товар только что приехал от поставщика, должен ли он обязательно лечь на хранение или может сразу ехать на отгрузку? (Кросс-докинг).

Да, такая схема проста и очевидна, что же она дает нам? Она дает нам очень много. Когда мы встречаемся, мы здороваемся и жмем друг другу руки. Что это дает нам? Да ничего. Попробуйте для смеха не поздороваться с коллегой и посмотрите, как пойдет у вас совместная работа.

Управление

Теперь посмотрим на другую структуру. Всем этим хозяйством занимаются различные люди, информационные системы или организации.

В случае продуктов питания имеем фермера, перевозчика, магазин. Иногда есть фирмы, которые занимаются всеми этими вопросами в комплексе, начиная от гиперсетей, заканчивая бабульками на колхозном рынке.

Тут по любому процессу существует разделение труда. Например, перевозчик может просто выполнять внешние заказы или иметь свои региональные склады и отслеживать дефицит по регионам. Разные уровни решения задачи.

Заметим, что задача решается в любом случае. Существует единый алгоритм (с вариациями), который решает, нужно ли доставить картофель в данный регион, сколько и откуда. При этом решать может фирма, администрация района, производитель и спекулянт.

Логистика

Для каждого процесса мы имеем вариации по поводу распределения общей задачи по уровням. Часть задач решает хост, другую часть — наша система. Что-то отдают операторам, что-то делает конвейер.

Мы легко определим, как легла линия разграничения по вопросам управления, если увидим уровни управления — от общей организации работы склада до задачи перемещения одной транспортной единицы с места на место.

Макросхема

С чего начинается анализ склада в конвейерной технологии? С построения макросхемы. Это классификация объекта по двум плоскостям.

Первая плоскость — нужно показать точки покоя (начиная от самой первой, заканчивая самой последней) и пути, по которым товар может двигаться. Сделать это совсем несложно. Иногда мы даже не знаем всей картины, поскольку нас привлекают только к части этой схемы. Значит, будем рисовать то, что имеет к нам отношение.

Теперь по каждому выделенному процессу определяем нашу задачу по уровням управления. Задаем вопрос — кто планирует процесс, кто организует, кто контролирует? Общими словами, из которых будет понятно дальнейшее.

Например, хост может давать задание переместить товар по сложной траектории и затем ждать окончания процесса. Но может потребовать сообщать ему о каждом шаге, о текущем состоянии и проч. Это всего лишь варианты разделения компетенции в системе управления.

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

Это значит, что в обсуждении с заказчиком появятся те же вопросы, что придется использовать те же алгоритмы, использовать те же объекты в базе, те же политики, а затем те же средства и методы отладки, и в конце концов ту же последовательность приемки-сдачи. Все уже было, надо просто повторить с соответствующей коррекцией.

Если же такого модуля еще не было, будем работать с ним заново, и в следующий раз у нас уже будет такой модуль.

Вот и все