Предмодельный анализ.
Анализ существующих аналогов и подсистем.
Анализ технических средств моделирования (ЭВМ, периферия).
Анализ программного обеспечения (языки программирования, пакеты прикладных программ, инструментальные среды).
Анализ математического обеспечения (модели, методы, алгоритмы).
Анализ задачи (модели).
Разработка структур данных.
Разработка входных и выходных спецификаций, форм представления данных.
Проектирование структуры и состава модели (подмоделей).
Исследование модели.
Выбор методов исследования подмоделей.
Выбор, адаптация или разработка алгоритмов, их псевдокодов.
Сборка модели в целом из подмоделей.
Идентификация модели, если в этом есть необходимость.
Формулировка используемых критериев адекватности, устойчивости и чувствительности модели.
Программирование (проектирование программы).
Выбор метода тестирования и тестов (контрольных примеров).
Кодирование на языке программирования (написание команд).
Комментирование программы.
Тестирование и отладка.
Синтаксическая отладка.
Семантическая отладка (отладка логической структуры).
Тестовые расчеты, анализ результатов тестирования.
Оптимизация программы.
Оценка моделирования.
Оценка средств моделирования.
Оценка адекватности моделирования.
Оценка чувствительности модели.
Оценка устойчивости модели.
Документирование.
Описание задачи, целей.
Описание модели, метода, алгоритма.
Описание среды реализации.
Описание возможностей и ограничений.
Описание входных и выходных форматов, спецификаций.
Описание тестирования.
Создание инструкций для пользователя.
Сопровождение.
Анализ применения, периодичности использования, количества пользователей, типа использования (диалоговый, автономный и др.), анализ отказов во время использования модели.
Обслуживание модели, алгоритма, программы и их эксплуатация.
Расширение возможностей: включение новых функций или изменение режимов моделирования, в том числе и под модифицированную среду.
Нахождение, исправление скрытых ошибок в программе, если таковые найдутся.
Использование модели.
Основные функции компьютера при моделировании систем следующие:
исполнение роли вспомогательного средства для решения задач, доступных и для обычных вычислительных средств, алгоритмам, технологиям;
исполнение роли средства постановки и решения новых задач, не решаемых традиционными средствами, алгоритмами, технологиями;
исполнение роли средства конструирования компьютерных обучающих и моделирующих сред типа: "обучаемый - компьютер - обучающий", "обучающий - компьютер - обучаемый", "обучающий - компьютер - группа обучаемых", "группа обучаемых - компьютер - обучающий", "компьютер - обучаемый - компьютер";
исполнение роли средства моделирования для получения новых знаний;
исполнение роли "обучения" новых моделей (самообучение модели).
Компьютерное моделирование - основа представления знаний в ЭВМ (построения различных баз знаний). Компьютерное моделирование для рождения новой информации использует любую информацию, которую можно актуализировать с помощью ЭВМ.
Прогресс моделирования связан с разработкой систем компьютерного моделирования, которые поддерживает весь жизненный цикл модели, а прогресс в информационной технологии - с актуализацией опыта моделирования на компьютере, с созданием банков моделей, методов и программных систем, позволяющих собирать новые модели из моделей банка. Автономные подмодели модели обмениваются информацией друг с другом через единую информационную шину - банк моделей, через базу знаний по компьютерному моделированию.
Особенность компьютерных систем моделирования - их высокая интеграция и интерактивность. Часто эти компьютерные среды функционируют в режиме реального времени.
Среди различных метафор визуализации программного обеспечения (ПО) выделяются математические графы - вершины, изображаемые по-разному, и ребра - стрелки, связи, зависимости и т. д. Приведем несколько типов диаграмм, используемых на практике при проектировании ПО (рис. 4).
Рис. 4. Примеры разных графов, используемых в визуальном моделировании
Не все виды диаграмм, применяемые в рамках визуального моделирования, являются графами, например, диаграммы последовательностей (sequence diagrams) или временные диаграммы (timing diagrams) UML. Однако из тринадцати видов этих диаграмм UML 2.0 только два не являются графами.
Cамыми распространенными графовыми моделями являются модель "сущность-связь" и модель конечных автоматов, объединенная с блок-схемами. В UML и диаграммы классов, и диаграммы компонент, объектов, коммуникаций, развертывания и пр. являются лишь вариациями модели "сущность-связь", а диаграммы конечных автоматов и активностей - вариациями конечных автоматов и блок-схем.
Визуальное моделирование (visual modeling) является методом, применяемым в разработке ПО, который:
использует графовые модели для визуализации ПО;
предлагает моделировать ПО с разных точек зрения;
может применяться в разработки и эволюции ПО, а также в различных видах деятельности по его созданию.
Принципиально, что в одном проекте используются разные визуальные модели ПО, созданные с разных точек зрения. Визуальные модели, как правило, не составляют "сплошных" спецификаций, подобно программам, но часто являются, скорее, фрагментами, формально не связанными друг с другом. Эти модели описывают отдельные аспекты ПО, которые нужно прояснить в определенной ситуации для той или иной категории лиц, участвующих в проекте или как-либо с ним связанных. В целом визуальное моделирование служит для повышения понимаемости решений проекта людьми - разными категориями задействованных в проекте специалистов (инженеров-электронщиков, менеджеров, заказчика и т. д.).
Визуальное моделирование может применяться как при разработке, так и при сопровождении ПО. При разработке - главным образом при проектировании и анализе системы, которые предшествуют непосредственному программированию. При сопровождении - когда новые разработчики изучают ПО. Визуальное моделирование может также использоваться в разных видах деятельности процесса разработки ПО: главным образом при анализе и проектировании, но также и при документировании, тестировании, разработке требований и т. д.
Визуальное моделирование применяется на практике с помощью методов, языков и соответствующих программных инструментов (рис. 5).
Рис. 5. Визуальное моделирование: языки, методы, ПС
Языки визуального моделирования - это формализованные наборы графических символов и правила построения из них визуальных моделей. Сейчас известны и активно используются на практике такие языки визуального моделирования, как UML и BPMN. Однако существуют и более старые языки: SDL и MSC для моделирования телекоммуникационных систем, SADT/IDEF0 для моделирования бизнес-процессов, IDEF1x для моделирования баз данных и некоторые другие. Кроме того, в исследовательской среде создано множество других визуальных языков, например, язык WebML для моделирования web-приложений.
Методы использования визуального моделирования предписывают правила применения визуальных языков для решения тех или иных задач процесса разработки ПО.
В качестве примера кратко рассмотрим метод SADT (Structured Analysis and Design Technique). Этот метод предназначен для структурного анализа создаваемой или модифицируемой системы и является способом уменьшить количество дорогостоящих ошибок за счет структуризации знаний о системе на ранних этапах ее разработки, улучшения взаимодействия разработчиков и пользователей или заказчиков, а также сглаживания перехода от анализа к проектированию.
Он включает в себя визуальный язык, а также подробно описанные принципы и технологию использования этого языка. Термин "структурный анализ" был введен в обиход Дугласом Россом (Douglas Ross) - главным автором SADT - в конце 60-х годов.
Коротко историю развития SADT можно представить следующим образом:
60-е годы - группа ученых из MIT (Massachusetts Institute of Technology) под руководством Дугласа Росса создала метод иерархической модульной декомпозиции программных систем под названием SADT;
в 1969 авторы SADT основали компанию SoftTech, которая стала развивать и коммерциализировать этот метод;
1973 год - первая масштабная апробация SADT - проект по созданию завода будущего;
конец 70-х годов - SADT был использован в программе интегрированной компьютеризации производства ICAM (Integrated Computer-Aided Manufacturing) военно-воздушных сил США, что привело к стандартизации части SADT под названием IDEF0 и широкому распространению этого стандарта в военной промышленности США.
В настоящее время при разработке ПО SADT не используется, но активно применяется при моделировании бизнес-процессов.
Среди современных методов визуального моделирования, пожалуй, самым широко распространенным является RUP/USDP - промышленный метод создания ПО, использующий UML практически на всех стадиях и во всех видах деятельности разработки. RUP/USDP является тяжеловесным методом применения UML: он содержит множество предписаний, непростую последовательность шагов, определяет разные роли участников, охватывает все стадии разработки ПО. Его внедрение в процесс компании требует значительных затрат и существенной перестройки принципов ее работы.
Существуют и легковесные методы применения UML, которые не имеют жестких предписаний и допускают вариативность при использовании. Примером может служить метод случаев использования, применяемый для выявления и первичной формализации требований к программной системе.
Наконец, специализированные программные инструменты позволяют удобно работать с визуальными языками и пользоваться тем или иным методом их применения. Это прежде всего графические редакторы, а также средства валидации моделей, генераторы конечного кода по диаграммам и т. д.