Магистр ДонНТУ Стародубцев Дмитрий Николаевич Ф.И.О.: Стародубцев Дмитрий Николаевич
Университет: 2005-2011 гг.  — Донецкий национальный технический университет
Факультет: Компьютерных наук и технологий
Кафедра: Компьютерной инженерии
Специальность: Системное программирование
Тема выпускной работы: Компонентно-базированная разработка моделирующего программного обеспечения для распределённых параллельных моделирующих сред (РПМС)
Научный руководитель: д.т.н., проф. Святный Владимир Андреевич

Реферат по теме магистерской работы

Компонентно-базированная разработка моделирующего программного обеспечения для распределённых параллельных моделирующих сред (РПМС)

Введение

    Распределенные параллельные моделирующие среды становятся всё важнее в промышленности и науке. Сейчас большинство научных и промышленных проектов перед реализацией проходят этап моделирования, результат которого является своеобразной «путевкой в жизнь». Поэтому этой области уделяется все больше внимания, она постоянно развивается, а моделирующие среды становятся более сложными. Для их работы уже используют не один десяток компьютеров. Многокомпьютерные вычислительные центры есть во многих крупных научных лабораториях. Но использование и проектирование таких моделирующих сред требует новых средств разработки параллельного моделирующего программного обеспечения.

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

Цели и задачи работы

    Целью данной магистерской работы является поиск способов реализации моделирующего программного обеспечения для распределённой параллельной моделирующей среды с использованием компонентно-базированного подхода в его разработке.

    Данная проблема требует решения следующего ряда задач:

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

Актуальность и мотивация темы работы

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

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

    IT-сфера  — одна из самых быстро развивающихся индустрий. Постоянно изменяются требования, предъявляемые к моделирующим средам: сложность, объект моделирования, законы описания модели.

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

Предполагаемая научная новизна

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

Планируемые практические результаты

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

Обзор исследований и разработок по теме

    Локальный (по материалам преподавателей, аспирантов и магистрантов ДонНТУ). Рассмотрением проблем, связанных с реализацией распределённых параллельных моделирующих сред, занимались:

1. Feldmann L. P.,Svjatnyj V. A., Resch M., Zeitz M. FORSCHUNGSGEBIET: PARALLELE SIMULATIONSTECHNIK.
В этом докладе рассматривается архитектура РПМС, принципы её создания и декомпозиция на подсистемы

2. Войтов А.В., Тема магистерской работы «Разработка параллельного MIMD-симулятора, 2 уровень распараллеливания»

3. Степанов И.С., Тема магистерской работы «Распределенная параллельная моделирующая среда»

4. Назаренко К.С., Тема магистерской работы «MIMD-симулятор и оптимизатор параллельных моделей дискретных динамических систем»

5. Зима К.М., Тема магистерской работы «ПАРАЛЛЕЛЬНАЯ МОДЕЛИРУЮЩАЯ СРЕДА ДЛЯ ДИСКРЕТНЫХ СИСТЕМ»

    При поиске разработок по данной теме на национальном уровне был найден следующий источник:

6. Томашевський В.М. Моделювання систем.  — К.: Видавнича група BHV, 2005  — c. 9-14.
В книге рассматриваются вопросы моделирования систем, систем массового обслуживания и имитационного моделирования

    На мировом уровне найдены следующие публикации по теме:

7. Jozsef Tick, Special Aspects of Component Based Software Development

8. Crnkovic I., Larsson M. Component-Based Software Engineering – New Paradigm of Software Development
Последние два источника описывают компонентно-базированное программирование: его принципы, преимущества, историю, алгоритмы создания приложений.

9. Feldmann L. P.,Svjatnyj V. A., Resch M., Zeitz M. FORSCHUNGSGEBIET: PARALLELE SIMULATIONSTECHNIK.

Принципы компонентно-базированной разработки Hardware-Software систем

    С момента появления программирования как отдельной отрасли науки и промышленности, его постоянно преследуют различные изменения и нововведения. Это связано с тем, что человек еще не нашёл идеальной технологии разработки программных и аппаратных комплексов. Поэтому время от времени на программирование, как волны, набегают идеи кардинальных изменений, поиска панацеи. Ученые выделяют несколько этапов эволюции в направлениях создания программного обеспечения. Например, в [7] автор предлагает следующую структуру:

  • языки машинного уровня;
  • языки программирования низкого уровня;
  • языки программирования высокого уровня.

    Языки из первых двух групп сейчас не используются, либо имеют очень узкий круг применения. Наибольшее распространение имеют языки программирования высокого уровня. Их использование является наиболее удобным для выполнения большинства задач. Они созданы таким образом, чтобы человек интуитивно мог понимать тексты программ. Но и среди них есть большое разнообразие идей в написании кода. В [2] выделяется следующая классификация языков программирования высокого уровня:

  • «Спагетти код» (Фортран). Этот период пришел на смену языкам программирования низкого уровня. В то время это был прорыв в отрасли, новая эра. Но сейчас мы скорее увидим недостатки этого этапа: слишком малый функционал, сложная компиляция, плохо читаемый код. Однако, все же, это был старт новой эпохи.
  • «Разделяй и властвуй». Программы стали слишком большие и сложные в понимании. Решение проблемы нашлось в разбивке кода на части. Ими стали процедуры, функции, модули. На некоторое время это дало спокойствие ученым и программистам. Но впоследствии, с развитием техники, и этого перестало хватать.
  • «Мир структурирован» (Паскаль, Ада, Си). Этот период наступил в семидесятых годах прошлого века. Ученые окончательно поняли, что программирование должно быть структурированным. Языки программирования были обогащены новыми технологиями, которые давали решения проблем в течение нескольких десятилетий.
  • «Думай объектно-ориентировано» (С, Java, C#). Эта новая парадигма наступила после эры структурированного программирования. Она установила новый, высший уровень интеграции между данными и операциями над ними, что позволило объединять их в логические единицы.
  • «Компонентно-базированные технологии». Дальнейшее развитие науки дало жизнь еще одной идее. В действительности, она не была новой. Впервые её высказали на известной конференции НАТО посвященной разработке программного обеспечения в 1968 году в Гармише (Германия). Но требовалось время, чтобы эта парадигма воплотилась в жизнь. Она вытекала из идеи объектно-ориентированного программирования. Программа должна по-прежнему состоять из частей. Но им предоставляется другое назначение и важность. Компоненты становятся отдельными многофункциональными модулями, которые могут работать отдельно, повторно использоваться. В настоящее время это совершенно новая парадигма в программировании, что позволило сделать новый шаг в развитии цифровых технологий.

    В [3] приводится следующее определение для направления компонентно-базированного программирования:

    «Компонентно-ориентированное программирование (англ. component-oriented programming)  — одна из парадигм программирования, возникло как своего рода дисциплина, то есть набор определенных ограничений, налагаемых на механизм ООП, когда стало ясно, что бесконтрольное использование ООП приводит к проблемам с надежностью больших программных комплексов. Это так называемая проблема хрупких базовых типов (англ. fragile base class problem): проявляется при попытке изменить реализацию базового типа (базового класса) вследствие отказа классов-потомков.»

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

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

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

    Коротко основные особенности и преимущества использования компонентно-базированного подхода в программировании можно сформулировать следующим образом, [2]:

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

    Цикл разработки компонентно-базированного программного обеспечения имеет определенные этапы, соблюдение которых делает работу более экономичной и продуктивной [4]:

  1. Поиск компонент, которые могут быть использованы в проекте. На этом этапе делается перечень всех возможных вариантов для дальнейшего рассмотрения;
  2. Выбор компонент, наиболее подходящих требованиям проекта;
  3. Разработка компонент, которые не были найдены среди разработанных ранее;
  4. Полная адаптация всех компонент к требованиям, которые есть в проекте;
  5. Сбор и запуск проекта;
  6. Этап проверки и тестирования. Замена, установка или устранение некоторых компонент. Это может стать необходимым, если во время тестирования были обнаружены недостатки, были добавлены новые функции. Этот этап постепенно переходит в полномасштабное использование проекта.

    Описанная методика изображена на рисунке 1. Методика компонентно-базированной разработки приложений

Рисунок 1  — Методика компонентно-базированной разработки приложений (Анимация состоит из 5 кадров с задержкой 700 мс между кадрами; задержка до повторного воспроизведения составляет 1200 мс; количество циклов воспроизведения ограничено 7-ю, размер 770*264, 116 кБ, создано в MP GIF Animator)

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

Распределенные параллельные моделирующие среды и их архитектура

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

    В [5] приведена структура РПМС, изображенная на рис. 2. РПМС рассматривается как сложная HW/SW-система. Она может быть разделена на относительно независимые и параллельно работающие подсистемы, в зависимости от функций, которые они выполняют. Это позволяет по-иному представить процесс разработки таких моделирующих сред.

Компонентно-базированная организация РПМС

    Основываясь на структуре РПМС, изображенной на рисунке 2, можно выделить следующие компоненты, согласно функций возложенных на них [5]:

  1. Подсистема диалога  — предназначена для презентации РПМС. Выполняет следующие задачи: диалог и обучение разработчика и пользователя; взаимодействие со всеми ресурсами среды; согласование задач симулирования, планирования и управления этим процессом.
  2. Подсистема топологического анализа  — словесное и графическое описание кодировки для первичных топологий; декомпозиция и аппроксимация полученных вторичных топологий; формирование актуальных векторов и матриц; преобразование топологических данных в форму, пригодную для генерирования уравнений; выдача результатов анализа топологии.
  3. Подсистема генерирования уравнений  — коммуникация с подсистемой топологического анализа; преобразование результатов ее работы в векторно-матричный вид; генерирование дискретных моделей симулирования для решения средствами, которыми владеет среда; визуализация результатов.
  4. Подсистема виртуальных параллельных симуляционных моделей  — интерактивное отображение иерархии виртуальных параллельных симуляционных моделей в зависимости от возможных вариантов распараллеливания; топологии, созданные в подсистеме топологического анализа, приводятся в соответствие уровням виртуальной параллельной симуляционной модели; формирование систем уравнений для всех уровней модели; интерактивная подготовка способов реализации дискретной виртуальной параллельной симуляционной модели.
  5. Подсистема параллельного решения уравнений  — взаимодействие с подсистемами топологического анализа и виртуальной параллельной симуляционной модели; выдача способов реализации дискретных моделей; решение систем уравнений с помощью параллельных библиотек, определение сходимости, стабильности, точности, оптимизация варьируемых параметров; преобразование результатов решения для наглядного представления.
  6. Подсистема обмена данными  — включает список компонент и ресурсов РПМС; обмен данными по запросу от компонент; отображение потоков данных по инициативе пользователя; система тестирования для определения параметров сети передачи данных; оптимизация параллельной программы с помощью операций обмена.
  7. Система балансировки нагрузки  — определение уровня нагрузки между виртуальными процессами и процессорами; балансировка нагрузки между ними; сравнительный анализ подходов распараллеливания по критериям распределения нагрузки.
  8. Подсистема визуализации  — интеграция с GUI и подсистемой решения уравнений; подготовка результатов симуляции для визуализации; интерактивное отображение графиков во время и после проведения симуляционного эксперимента.
  9. Подсистема хранения данных  — взаимодействует со всеми подсистемами и хранит всю возможную информацию о среде (данные о ПО и аппаратную архитектуру, пользовательские данные, данные о моделировании, преобразовании и симулировании систем); архивация некоторых последовательных и параллельных программ, подходящих для возможного использования; данные о тестах, запланированных экспериментах и архивация их результатов.
  10. Подсистема IT-поддержки  — организация распределенных вычислительных, коммуникационных и симуляционных ресурсов согласно технологиям современных сетей; удаленное WEB-базированное приложение для моделирования и симуляции; функционирование цепей «WEB-клиент (разработчик модели)  — WEB-сервер  — PARSIMULATOR (параллельный симулятор)» и «WEB-клиент (разработчик модели)  — WEB-сервер  — DATABASE (сервер баз данных)»; интеграция с другими подсистемами.
Системная организация РПМС

Рисунок 2  — Системная организация РПМС

Выводы

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

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

Список литературы
  1. Томашевський В.М. Моделювання систем.  — К.: Видавнича група BHV, 2005  — c. 9-14.
  2. Tick J. Special Aspects of Component Based Software Development / Интернет ресурс.  — Режим доступа: http://citeseerx.ist.psu.edu/viewdoc/download~.pdf
  3. Компонентно-орієнтоване програмування / Вікіпедія / Интернет ресурс.  — Режим доступа: http://uk.wikipedia.org/wiki/Компонентно-орієнтоване_програмування
  4. Crnkovic I., Larsson M. Component-Based Software Engineering  — New Paradigm of Software Development. / Malardalen University Sweden / Интернет ресурс.  — Режим доступа: http://www.mrtc.mdh.se/publications/0293.pdf
  5. Feldmann L. P., Svjatnyj V. A., Resch M., Zeitz M. FORSCHUNGSGEBIET: PARALLELE SIMULATIONSTECHNIK. / Сайт национальной библиотеки им. В.И. Вернадского / Интернет ресурс.  — Режим доступа: http://www.nbuv.gov.ua/portal/natural/Npdntu/Pm/2008/08flpfps.pdf
  6. Что такое компонентно-ориентированное программирование (краткая справка) / РОССИЙСКАЯ АКАДЕМИЯ НАУК Институт ядерных исследований / Интернет ресурс.  — Режим доступа: http://www.inr.ac.ru/~info21/info/qtocop.htm
  7. История развития языков программирования / Сайт программирования / Интернет ресурс.  — Режим доступа: http://life-prog.ru/view_articles.php?id=41
  8. Эволюция языков программирования / Школьные страницы / Интернет ресурс.  — Режим доступа: http://schools.keldysh.ru/sch444/MUSEUM/LANR/evol.htm
  9. История языков программирования / Википедия / Интернет ресурс.  — Режим доступа: http://ru.wikipedia.org/wiki/История_языков_программирования
  10. Component-based software engineering / Wikipedia / Интернет ресурс.  — Режим доступа: http://en.wikipedia.org/wiki/Component-based_software_engineering
  11. Компонентно-ориентированное программирование / Википедия / Интернет ресурс.  — Режим доступа: http://ru.wikipedia.org/wiki/Компонентно-ориентированное_программирование

Copyright © Стародубцев Д.Н. 2010 ДонНТУ