Санкт-Петербургский государственный университет
Опубликован: 04.12.2007 | Доступ: свободный | Студентов: 2740 / 336 | Оценка: 4.30 / 3.65 | Длительность: 16:28:00
ISBN: 978-5-94774-823-9
Лекция 1:

Определение визуального моделирования

Лекция 1: 123 || Лекция 2 >

Визуальное моделирование на фоне эволюции средств программирования

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

Эволюция средств программирования

Рис. 1.4. Эволюция средств программирования

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

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

Далее появились алгоритмические языки программирования - COBOL, Fortran, PL/1, Algol60, C, Pascal, C++, Java, C# и многие другие. По мере их развития программист получал возможность все меньше и меньше задумываться о деталях процесса выполнения программы на ЭВМ и все больше внимания уделять описанию логики задачи, которую реализовывала его программа. Соответственно, спектр задач, которые становилось способным решать ПО, существенно расширялся, сложность программ увеличивалась.

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

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

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

Отношения программы с вычислителем и программистом

Рис. 1.5. Отношения программы с вычислителем и программистом

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

Семантический разрыв визуальных моделей и программного кода

Однако оказалось, что визуальные модели, действительно удобные в работе, "склонны" терять исполняемую семантику. Другими словами, информация, которая в них содержится, оказывается недостаточно полной и детальной, чтобы по ней вычислитель мог бы выполнить свою работу. Ведь никакая "умная" генерация не может добавить то, что отсутствует изначально. Если же визуальные модели усложнять, чтобы они были пригодны для использования вычислителем, то очень часто они теряют наглядность и становятся бесполезными. Кому нужны непонятные, но полные описания программного обеспечения, выполненные с помощью визуальных моделей? Есть тексты на языках программирования, есть документы, есть возможность спросить, в конце концов, разобраться в коде самому…

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

Семантический разрыв между моделями и программами

Рис. 1.6. Семантический разрыв между моделями и программами

Где выход?

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

  • в разработке схем реляционных баз данных;
  • при создании событийно-ориентированных систем реального времени;
  • при формализации бизнес-процессов компаний.

Эти области и будут подробно рассмотрены в этом курсе лекций.

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

Контрольные вопросы

  1. Расскажите о роли чертежей в промышленных дисциплинах (машиностроении, электротехнике, строительстве и пр.).
  2. Что мешает сходным образом использовать чертежи при создании ПО?
  3. Что означает выражение "ПО невидимо"?
  4. Что такое метафора визуализации?
  5. Расскажите о пользе стандартных языков визуального моделирования.
  6. Почему графовая метафора является самой распространенной в области визуального моделирования ПО?
  7. Что такое визуальное моделирование? Разберите и объясните отдельные части определения.
  8. Что такое средства визуального моделирования?
  9. Что такое язык визуального моделирования? Приведите примеры таких языков.
  10. Что такое метод визуального моделирования? Приведите примеры.
  11. Что такое CASE-пакеты? Приведите примеры современных CASE-пакетов.
  12. Чем современные CASE-пакеты отличаются от прежних?
  13. Каковы выгоды предметно-ориентированного визуального моделирования?
  14. Чем стандартные программные средства поддержки визуального моделирования отличаются от предметно-ориентированных?
  15. Какие существуют пакеты для разработки предметно-ориентированных средств поддержки визуального моделирования?
  16. В чем суть семантического разрыва между визуальными моделями и программным кодом?
  17. Как преодолеть этот разрыв?
Лекция 1: 123 || Лекция 2 >
Ольга Зырянова
Ольга Зырянова

Здравствуйте, не могу найти ссылку на скачивание курса  «Визуальное моделирование: теория и практика»

 

Номер платежа 6400454020565

Анна Митюрёва
Анна Митюрёва

http://www.intuit.ru/studies/courses/1041/218/info

С мобильного приложения доступ есть, а через сайт не отображается. Печально =(