SoftCraft
разноликое программирование

Top.Mail.Ru

От модели на планер, с планера на самолет!


19.02.2001

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

На сайте появился очередной материал по SWITCH-технологии: "Автоматное проектирование программ. Алгоритмизация и программирование задач логического управления". Точнее, статью можно даже назвать первой из этого цикла работ, так как она представляет основы технологии алгоритмизации и программирования задач логического управления, обеспечивающей повышение "безопасности" программного обеспечения. Именно в ней рассматривается технология состояний, определяющая автоматное программирование. Надеюсь, что мои очередные "ностальгические" воспоминания привлекут к ней, не только тех, кто занимается автоматизацией управления технологических и других процессами. Ведь принципы, используемые в работе, применимы практически везде (тоже разнолики:).

Создание систем управления является одним из наиболее популярных направлений разработки программных систем. Спутники и поезда, атомные реакторы и утюги... Если вспомнить языки программирования, то именно для этих целей создавалась Ада. Кстати, в свое время (лет 6-7 назад) я приложил руки к рабочему месту диспетчера системы управления тяговыми подстанциями, как один из участников проекта. Самое удивительное то, что эта система работает до сих пор (MS DOS, Borlland C++, ООП с вкраплениями ПП:). Однако, как всегда, над низкоуровневым программированием должна стоять более абстрактная настройка, обеспечивающая решение проблемы в терминах предметной области. Такой надстройкой изначально является модель.

Следует отметить, что нашему поколени хорошо знаком подход к проектированию программ, емко охарактеризованный популярным лозунгом 30-х гг. уже прошлого века: "От модели на планер, с планера на самолет"! Разнообразные модели постоянно привлекались к решению не только больших задач, но и отдельных подзадач. Причем, каждая подзадача решалась с использованием своих моделей. Только после этого наступала эра кодирования. И никто не говорил при этом об ущербности водопадной модели проектирования, потому что куски системы, описанные с помощью разных моделей разрабатывались и кодировались раздельно. А модельный принцип декомпозиции, проводимый квалифицированными аналитиками приводил к меньшим ошибкам в общей организации программы.

Модели использовались не только как основа для проектирования. Они специально создавлись для описания уже разработанных языков программирования и архитектур вычислительных систем. Это позволяло применять их как новую основу в дальнейшем проектировании. В свое время я обобщал подобным образом механизмы управления процессами, реализованные в одной из параллельных вычислительных систем. Полученная модель вычислений затем обобщалась на семейство возможных архитектур и служила основой языка программирования, разрабатываемого для этого семейства. В качестве другого примера могу привести функционально-потоковую модель параллельных вычислений. В начале мы разработали язык, а затем сформулировали модель, опрделяющую новые принципы организации программ (Легалов А.И., Казаков Ф.А., Кузьмин Д.А. Водяхо А.И. Модель параллельных вычислений функционального языка. Известия ГЭТУ, Сборник научных трудов. Выпуск 500. Структуры и математическое обеспечение специализированных средств. С.-Петербург, 1996. с. 56-63.). Думаю, что материалы, посвященные этому проекту, еще появятся на моем сайте.

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

Вместе с тем, хотелось бы пожелать авторам, в ходе дальнейших работ, перейти, от механического преобразования автоматных спецификаций в программу, к разработке и использованию языка описания автоматов, из которого такое преобразование осуществлялось бы автоматически. Лучше, чтобы этот язык был графическим. Это совет человека, возомнившего себя спецом в области парадигм и языков программирования:). На мой взгляд - такова тенденция современного развития технологий: создание специализированных надстроек, ориентированных на конечных пользователей, и рассматриваемых ими как сраедства проектирования. Зачем специалисту в управлении знать C++ или Java?

Чтобы не быть голословным, приведу всем известные примеры успешного использования такого подхода. Многие бы знали сейчас об IDEF0, IDEF1X, UML и др. подобных диаграммах? Знают потому, что есть BPWin, ERWin, Silverrun, Rational Rose, Visual Modeller и т.д. Да и при разработке систем управления сейчас широко используются SCADA, обеспечивающие визуальное проектирование пользовательских интерфейсов (не нужны VB и Delphi), подключение баз данных и внешних устройств, визуальное и пиктографическое формирование схем управления на основе стандартизованных для этой сферы моделей (тех же переключательных схем). Нужны примеры таких систем? Пожалуйста: Fix Intellution, Genie, Genezis, Trace Mode... Хотелось бы отметить Trace Mode, как пример успешной российской разработки (www.adastra.ru). Ребята даже рассылают демонстрационные диски своей системы, которые можно использовать для изучения, построения систем, по крайней мере, в учебном процессе (уже пару раз пользовался этой возможностью, за что им большое спасибо и бесплатная реклама!). Было бы интересно увидеть, как графическое автоматное проектирование вытесняет переключательные схемы (еще раз привет из Нью-Васюков:) или, хотя бы, используется на ряду с ними. Но это (как всегда) только моя точка зрения.

И, наконец, о совпадениях. Автор пишет, что все могло бы быть 15 лет назад. Как часто повторяются аналогичные фразы! Только что об этом писал и я в своей статье по процессам, но по другому вопросу. И неоднократно напишу еще. Которой раз встает проблема "на троих". Ну нет у отдельной личности всех знаний, накопленных человечеством к тому времени, когда можно "выстрелить"! Поэтому, пока появится очередной аккумулятор идей...

В дополнение к ранее опубликованному материалу авторы любезно предоставили "Пример программной документации на подсистему управления печатью на основе SWITCH-технологии". Следуя логике представления материала, я "прикрепил" этот файл, в формате pdf, к предыдущей статье.