Способность систем усложнять свою собственную структуру называется самоорганизацией. Проявление самоорганизации в простой, механистической форме – обычные снежинки. Более сложное проявление самоорганизации можно наблюдать, когда ребенок учится говорить. О реальной же возможности самоорганизации IT-систем история до сего момента ещё не знала. Но вот в России фирма ИнформСистем разработала революционную технологию создания таких самоорганизующихся систем, которая может быть использована для разработки систем любого уровня: ERP, MES, SCADA и др.
Самоорганизация обязательно привносит в систему новое качество, которое без этой самоорганизации в принципе быть не может. Например, необходимо рассчитывать в реальном времени 200000 показателей, которые сосредоточены в 1000 задачах (отдельных программах). Но даже на современном компьютере это не возможно, т.к. их решение занимает более 1 часа, т.е. где-то 5000 секунд. А система созданная по нашей технологии самоорганизации легко это реализует за 10 секунд, т.е. в 500 раз быстрее. Ниже я коротко расскажу об этой IT-технологии.
Кстати, по данной IT-технологии Фирма ИнформСистем разработала и апробировала самоорганизующуюся систему Smart-MES «MES-T2 2020» для реализации технологии экономии топлива на ТЭЦ и ГРЭС посредством поминутного расчёта ТЭП в реальном времени, и для реализации технологии безаварийной эксплуатации АЭС. Именно данная система может быть задействована в мультиагентной технологии для реализации когнитивных функций управления любой электростанцией.
Вопрос: зачем нужна самоорганизация софта – является риторическим. Без самоорганизации не может быть ни прогресса в IT, ни технологий self*, ни мультиагентных и интеллектуальных систем. Если мы желаем равняться на Запад по уровню развитости IT, то нам не следует его догонять, а необходимо через него перепрыгнуть. И это могут позволить только самоорганизующиеся системы.
И так, технология создания самоорганизующихся IT-систем обязательно должна включать пять следующих этапов:
1) Перевод постановки задачи на метаязык технолога;
2) Преобразование метаязыка на макроязык;
3) Преобразование всех задач на макроязыке в одну задачу;
4) Преобразование единой задачи на язык Pascal;
5) Преобразование языка Pascal в результирующий машинный код.
Здесь понятно, что только первый этап происходит при участии человека, а все остальные этапы выполняются автоматически. Далее поясню подробнее о каждом этапе.
1) Перевод постановки задачи на метаязык технолога.
В данном случае используется инструментальное средство (у нас – конструктор текстовых проектов) для оперирования шаблонами с целью максимального облегчения набора алгоритмов технологических задач, которые представляются в табличном виде. Например: колонки обозначают типы оборудования и итог, а строки – показатели.
2) Преобразование метаязыка на макроязык.
Во время данного преобразования автоматически формируются все элементы большой системы: базы данных, справочники, меню задач, экранные формы, расчёты на макроязыке и отчёты. Данный этап необходим для позадачной отладки алгоритмов в режиме интерпретации, т.к. на последующих этапах она не возможна. Здесь каждой клетке экранной формы ставится в соответствие алгоритм расчёта данного показателя.
3) Преобразование всех задач на макроязыке в одну задачу.
На данном этапе все таблицы отдельных задач соединяются в одну большую таблицу, а во всех алгоритмах расчёта показателей производится переформатирование адресации.
4) Преобразование единой задачи на язык Pascal.
Во время этого преобразования полностью ликвидируются рекурсии, в результате чего процесс полного расчёта происходит за один проход сверху вниз. На данном этапе в качестве языка программирования вместо языка Pascal может быть любой другой язык.
5) Преобразование языка Pascal в результирующий машинный код.
Здесь используется соответствующий транслятор с используемого языка программирования. В нашем случае в результате получается программа DLL, которая может использоваться в качестве сервера приложений.
Игнорирование любого из перечисленных этапов не даст желаемый результат истинной самоорганизации системы с возможностью легчайшей адаптации для конкретного производства и высочайшей скорости расчётов. В результате для реализации самоорганизующейся системы необходимы два языка верхнего и нижнего уровней системы. Язык верхнего уровня или инженерный метаязык необходим технологам для формулирования алгоритма задачи. Он максимально приближен к естественному языку. Язык нижнего уровня или макроязык необходим для интерпретационной отладки алгоритмов. Он напоминает одноадресные команды.
Дополнительно к самоорганизующейся системе имеется специальный диспетчер контекста, который постоянно анализирует текущий производственный контекст и в случае необходимости автоматически вносит изменения в текстовые проекты технологических задач, т.е. выполняет первый этап, и запускает самоорганизацию всей системы. Таким образом, система начинает жить и само адаптироваться ко всем изменениям без участия человека. Но если эти отдельные самоорганизующиеся системы представить в качестве агентов с взаимными связями по особым протоколам, то получится самоорганизующаяся мультиагентная система, которой пока в природе нет.
Особым достоинством данной технологии самоорганизации системы ещё и в том, что она предоставляет абсолютную программную надёжность при любом количестве реализуемых технологических алгоритмов расчёта для любого производства. Дело в том, что данная система состоит из двух условных философских категорий: базис и надстройка.
Базис – это исполнительный EXE-модуль, который абсолютно не имеет технологической начинки. Надстройка – это текстовые проекты технологических задач. Базис всегда не изменен, т.к. является прерогативой разработчика. Надстройка же подвержена постоянным изменениям, и является прерогативой технологов для развития производственных расчётов.
Таким образом, базис создаёт надстройку, и вместе с ней в дальнейшем функционирует. Поэтому надстройка определяет сам базис. Иными словами, текстовые проекты технологических задач определяют область использования и обеспечивают реальное функционирование EXE-модуля. Всё очень просто!