ВИКОРИСТАННЯ КОМПОНЕНТНО-БАЗОВАНОГО ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ДЛЯ РОЗРОБКИ РОЗПОДІЛЕНИХ ПАРАЛЕЛЬНИХ МОДЕЛЮЮЧИХ СЕРЕДОВИЩ
Стародубцев Д.М.
Донецький національний технічний університет
кафедра комп’ютерної інженерії
e-mail: dubtsev@gmail.com
Джерело: Информатика и компьютерные технологии — 2010 / Сборник трудов 5 юбилейной международной научно-технической конференции студентов, аспирантов и молодых учёных. — Донецк, ДонНТУ — 2009, с. 489-493.
Анотація:
Стародубцев Д.М. Використання компонентно-базованого програмного забезпечення для розробки розподілених паралельних моделюючих середовищ. Запропоновано визначення компонентно-базованого підходу у розробці програмного забезпечення, розглянуто етапи еволюції його парадигм, методику проектування та практичні переваги таких програмних продуктів. Проаналізовано тенденції застосування компонентно-базованих підходів при побудові розподілених паралельних моделюючих середовищ.
Вступ
Розподілені паралельні моделюючі середовища стають дедалі важливішими у промисловості та науці. Зараз більшість наукових та промислових проектів перед реалізацією проходять етап моделювання, результат якого є своєрідною «путівкою у життя». Тому цій галузі приділяється все більше уваги, вона постійно розвивається, а моделюючі середовища стають все складнішими. Для їх роботи вже використовують не один десяток комп’ютерів. Багатокомп’ютерні обчислювальні центри є у багатьох великих наукових лабораторіях. Але використання та проектування таких моделюючих середовищ потребує нових засобів розробки паралельного моделюючого програмного забезпечення.
Рішенням такої задачі є використання компонентно-базованого підходу у розробці розподілених паралельних моделюючих середовищ. Такий спосіб проектування моделюючого програмного забезпечення має ряд переваг, інформацію про які наведено у доповіді.
Парадигми розробки програмного забезпечення
З моменту появи програмування як окремої галузі науки та промисловості, його постійно спіткають різноманітні зміни та нововведення. Це пов’язано з тим, що людина ще не знайшла ідеальної технології розробки програмних та апаратних комплексів.
Тому час від часу на програмування, як хвилі, набігають ідеї кардинальних змін, пошуку панацеї. Виділяють кілька етапів еволюції у напрямках створення сучасного програмного забезпечення: «спагеті код», структуроване програмування, об’єктно-орієнтоване програмування.
Останнім з них є етап компонентно-базованих технологій. Розвиток науки дав життя ще одній ідеї. Насправді, вона не була новою. Вперше її було висловлено у 1968 році на відомій конференції НАТО, присвяченій розробці програмного. Але був потрібний час, щоб ця парадигма втілилась у життя. Вона витікала із ідеї об’єктно-орієнтованого програмування. Програма повинна, як і раніше, складатись із частин. Але їм надається інше призначення і важливість. Компоненти стають окремими багатофункціональними модулями, які можуть працювати окремо, повторно використовуватись. На даний час це абсолютно нова парадигма у програмуванні, що дала змогу зробити новий крок у розвитку цифрових технологій.
Компонентно-базований підхід у програмуванні. Етапи розробки та переваги
У [2] наводиться наступне визначення для напрямку компонентно-базованого програмування:
«Компонентно-орієнтоване програмування (англ. component-oriented programming) — одна з парадигм програмування, виникла як свого роду дисципліна, тобто набір певних обмежень, що накладаються на механізм об'єктно-орієнтованого програмування (ООП), коли стало зрозуміло, що безконтрольне застосування ООП призводить до виникнення проблем з надійністю великих програмних комплексів.
Це так звана проблема крихких базових типів (англ. fragile base class problem): проявляється при спробі змінити реалізацію базового типу (базового класу), коли порушується функціонування класів-нащадків.»
Окрема компонента – це програмний пакет або модуль, який вміщує в собі певний набір функцій або даних.
Всі функції програми вміщено у різні компоненти. Дані, що знаходяться у складі однієї компоненти, ніяк не пов’язані з даними із іншої. Взаємодія між компонентами відбувається за допомогою спеціальних інтерфейсів. Через них тільки передаються потрібні дані, а про внутрішню роботу одне одного компоненти нічого не знають.
Ця ідея дозволяє робити дуже багато варіацій у роботі з компонентно-базованим програмним забезпеченням. Компоненти є взаємозамінними. Головна умова – це реалізація потрібних функцій та підтримка інтерфейсів взаємодії. Компоненти, які мають хороші показники роботи, можуть використовуватись у нових проектах, що заощаджує час та гроші. Важливою умовою у використанні компонент є повне документування інтерфейсів взаємодії. Цій задачі завжди приділялось багато уваги, бо одна маленька помилка у документах та кодах програм, може призвести до поламки всієї системи.
Коротко основні особливості та переваги використання компонентно-базованого підходу у програмуванні можна сформулювати наступним чином [1]:
- значне зниження загальних витрат на розробку системи;
- значне зниження часу розробки проекту;
- якість та надійність системи підвищується, завдяки повторному використанню компонент із попередніх проектів, де вони себе добре зарекомендували;
- догляд, обслуговування та ремонт стають простішими, бо для цього потрібно лише замінити одну компоненту;
- високий рівень абстрактного представлення дає змогу створювати ще більші і більші проекти.
Цикл розробки компонентно-базованого програмного забезпечення має певні етапи, дотримання яких робить роботу більш економічною та продуктивною [3]:
- Пошук компонент, що можуть бути використаними у проекті. На цьому етапі робиться перелік всіх можливих варіантів для подальшого розгляду;
- Вибір компонент, що найбільш підходять вимогам проекту;
- Розробка компонент, які не були знайдені серед вже розроблених раніше;
- Повна адаптація всіх компонент до вимог, які є у проекті;
- Збір та запуск проекту;
- Етап перевірки та тестування. Заміна, встановлення або усунення деяких компонент. Це може стати потрібним, якщо під час тестування було виявлено недоліки, було додано нові функції. Цей етап поступово переходить у повномасштабне використання проекту.
Парадигма компонентно-базованого програмного забезпечення вже дуже міцно увійшла у наше життя. І у таких сферах, як розробка систем керування, контролю, моделювання складних систем, вже витіснила об’єктно-орієнтоване програмування.
Розподілені паралельні моделюючі середовища та їх архітектура
Для виконання моделювання та симулювання динамічних систем з концентрованими або розподіленими параметрами прийнято використовувати розподілені паралельні моделюючі середовища (РПМС).
РПМС – це сукупність дружньої до користувача моделюючої технічної апаратної системи, системного програмного забезпечення для даної архітектури, спеціально розробленого програмного забезпечення для моделювання, симуляції та технічної підтримки підсистем, яке підтримує всі стадії паралельного моделювання та імітації роботи динамічних систем згідно всім можливим вимогам.
У [4] наведено структуру РПМС, зображену на рис. 1.
РПМС розглядається як складна HW/SW-система. Воно може бути розділене на відносно незалежні та паралельно працюючі підсистеми, залежно від функцій, які вони виконують. Це дає змогу по іншому уявити процес розробки таких моделюючих середовищ.
Рисунок 1 — Системна організація РПМС
Компонентно-базована організація РПМС
Беручи за основу структуру РПМС, зображену на рисунку 1, можна виділити наступні компоненти, виділені згідно функцій, покладених на них, [4]:
- Підсистема діалогу — призначена для презентації РПМС. Виконує наступні задачі: діалог та навчання розробника та користувача; взаємодія з усіма ресурсами середовища; узгодження завдань симуляції, планування та керування цим процесом.
- Підсистема топологічного аналізу — словесний та графічний опис кодування для первинних топологій; декомпозиція та апроксимація отриманих вторинних топологій; формування актуальних векторів та матриць; перетворення топологічних даних в форму, придатну для генерування рівнянь; видача результатів аналізу топології.
- Підсистема генерування рівнянь — комунікація з підсистемою топологічного аналізу; перетворення результатів її роботи у векторно-матричний вигляд; генерування дискретних симуляційних моделей для вирішення чисельними засобами, якими володіє середовище; візуалізація результатів.
- Підсистема віртуальних паралельних симуляційних моделей — інтерактивне відображення ієрархії віртуальних паралельних симуляційних моделей в залежності від можливих варіантів розпаралелювання; топології, створені в підсистемі топологічного аналізу, приводяться у відповідність рівням віртуальної паралельної симуляційної моделі; формування систем рівнянь для всіх рівнів моделі; інтерактивна підготовка способів реалізації дискретної віртуальної паралельної симуляційної моделі.
- Підсистема паралельного вирішення рівнянь — взаємодія з підсистемами топологічного аналізу та віртуальної паралельної симуляційної моделі; видача способів реалізації дискретних моделей; вирішення систем рівнянь за допомогою паралельних бібліотек; визначення збіжності, стабільності, точності, оптимізація варійованих параметрів; перетворення результатів вирішення для наочного представлення.
- Підсистема обміну даними — включає список компонентів та ресурсів РПМС; обмін даними за сигналом від компонент; відображення потоків даних за ініціативою користувача; система тестування для визначення параметрів мережі передачі даних; оптимізація паралельної програми за допомогою обмінних операцій.
- Система балансування навантаження — визначення рівня навантаження між віртуальними процесами та процесорами; балансування навантаження між ними; порівняльний аналіз підходів розпаралелювання за критеріями розподілу навантаження.
- Підсистема візуалізації — інтеграція з GUI та підсистемою вирішення рівнянь; підготовка результатів симуляції для візуалізації; інтерактивне відображення графіків під час та після проведення симуляційного експерименту.
- Підсистема зберігання даних — взаємодіє з усіма підсистемами та зберігає всю можливу інформацію про середовище (дані про ПЗ та апаратну архітектуру, користувацькі дані, дані про моделювання, перетворення та симулювання систем); архівація деяких послідовних та паралельних програм, що пригідні для можливого використання; дані про тести, заплановані експерименті та архівація їх результатів.
- Підсистема IT-підтримки — організація розподілених обчислювальних, комунікаційних та симуляційних ресурсів згідно з технологіями сучасних мереж; віддалений WEB-базований додаток для моделювання та симуляції; функціонування ланцюгів «WEB-клієнт (розробник моделі) — WEB-сервер — PARSIMULATOR (паралельний симулятор)» та «WEB-клієнт (розробник моделі) — WEB-сервер — DATABASE (сервер баз даних)»; інтеграція з іншими підсистемами.
Висновки
Розподілені паралельні моделюючі середовища набувають більш складних рис. Їх розробка та експлуатація стають набагато складнішими. Тому для розробки РПМС потрібно використовувати нові технології, які враховуватимуть властивості як програмного забезпечення, так і апаратної частини.
Таку змогу дає компонентно-базований підхід у розробці програмного забезпечення. При його використанні моделююче середовище розбивається на підсистеми, які виконують роль компонент. Кожна з компонент виконує певну групу функцій та взаємодіє з іншими компонентами. При правильному розподілі функцій, проектуванні апаратної частини, реалізації баз даних та інтерфейсів взаємодії, документації розподілене паралельне моделююче середовище набуває багатьох переваг. Розробка, заміна та удосконалення компонент, реорганізація середовищ стають набагато легшими.
Література
- Jozsef Tick, Special Aspects of Component Based Software Development / Інтернет ресурс. — Режим доступу: http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=0A70462A5070F9AFC2DB25E0A61E6DD3?doi=10.1.1.116.1733&rep=rep1&type=pdf.
- Компонентно-орієнтоване програмування / Інтернет ресурс. — Режим доступу: http://uk.wikipedia.org/wiki/Компонентно-орієнтоване_програмування.
- Ivica Crnkovic, Magnus Larsson, Component-Based Software Engineering — New Paradigm of Software Development.
- L. P. Feldmann, V. A. Svjatnyj, M. Resch, M. Zeitz, FORSCHUNGSGEBIET: PARALLELE SIMULATIONSTECHNIK.
Copyright © Стародубцев Д.Н. 2010 ДонНТУ