Користувач:Sistema666
Запропоновано підхід до формалізованої розробки паралельних програм на основі використання онтологій та апарату алгебри алгоритмів. За допомогою онтології описуються основні об'єкти розроблюваної програми з обраної предметної області - дані, функції та взаємозв'язки між функціями. Подальше проектування додатки здійснюється в розробленому інтегрованому інструментарії проектування і генерації програм, що грунтується на системах алгоритмічних алгебр. Підхід проілюстрований на прикладі розробки паралельної MPI-програми сортування.
Онтологія являє собою формальний опис концепцій (званих також класами) розглянутої предметної області, властивостей (слотів) кожної концепції, що описують різноманітні атрибути концепції, а також обмежень на властивості. Вона також може містити екземпляри - конкретні об'єкти розглянутої предметної області. Властивості являють собою бінарні відносини між концепціями. Розрізняють так звані об'єктні властивості - відносини між "концепцією і концепцією ", і властивості типів даних - відносини між" концепцією і значенням типу даних ". Онтологія разом з безліччю екземплярів класів складають базу знань. У даній роботі екземпляри використані для представлення конкретних даних, які обробляються в програмі, а також структури програми.
Розрізняють онтології предметних областей і онтології задач. Онтології предметних областей представляють необхідні об'єкти, властивості і відносини між об'єктами в певній предметній області (наприклад, біоінформатики, географії або медицині). Онтології задач містять концепції завдань і процесів, їх взаємозв'язку і властивості. Наприклад, такі онтології можуть містити совокупность описів етапів хімічного процесу, протокол залежностей між методами оптимізації і т.п. У роботах, присвячених використанню онтологій для специфікації, генерації і синтезу програм, виділяють два джерела концепцій, що описують об'єкти розроблюваних програм - прикладну область (application space) і область рішень (solution space). Прикладна область містить всі концепції, необхідні для опису прикладних задач в обраній предметній області: типи даних, операції, перетворюють дані і предикати. Згадані концепції задаються експертами предметної області. Для концепцій встановлюються зв'язки з відповідними поданнями в мові специфікації, конструкціями в проміжному мові програмування і конструкціями на цільовому мовою програмування. Концепції з прикладної області використовуються для складання специфікації розв'язуваної задачі. Область рішень містить всі концепції, необхідні для формулірованя програм, які генеруються, - елементи проміжного мови або мов; елементи цільової мови та середовища програмування; алгоритми та їх складові частини. У даній роботі апарат онтологий був застосований для опису алгоритмів з області сортування масивів. В якості засобів розробки онтології був обраний мова Web Ontology Language (OWL) і система Protégé 3.2.1. На рис. 1 показана ієрархія класів розробленої онтології. Підкласи класу Data представляють різні структури даних, використовувані в програмах сортування. Клас ArrayToProcess описує сортований масив; Pointer - покажчик, що переміщається в процесі обробки по масиву, і що відзначає поточні оброблювані елементи сортованого масиву; PointerArray - масив покажчиків (звернення до конкретного вказівником здійснюється за його індексом в масиві). Підкласи класу File відображають різновиди файлів, які можуть використовуватися в програмах (вхідний, вихідний і файл для реєстрації часу виконання програми). Клас Variable призначений для опису змінних, які не відносяться ні до однієї з перерахованих вище категорій. Parameter - формальні параметри складових операторів (функцій), які у програмі. Всі підкласи класу Data мають властивість HasName - ідентифікатор змінної і властивість IsOfType, що зв'язує екземпляр змінної з певним типом даних, що представляє собою екземпляр класу DataType. Крім того, клас Array і його підкласи мають додаткове властивість InitialSize, а клас Variable - властивість InitialValue.? Клас Operation представляє операції, що застосовуються до даних в програмі - оператори та предикати. Операції можуть бути базисними або складовими. Базисний предикат або оператор - первинна атомарна абстракція, використовувана для побудови схем алгоритмів. Складові оператори та предикати будуються з елементарних допомогою операцій послідовного і паралельного виконання операторів. Поняття складового елементу відповідає поняттю функції або методу в програмуванні. Кожен базисний елемент відповідає певному базисного елементу в базі даних інтегрованого інструментарію. Всі операції мають такі властивості: HasName - ідентифікатор операції; ХасПараметр- властивість, що зв'язує операцію з примірниками класу Parameter; Opera ??? tionOutput -тип що повертається. Крім того, базисні операції мають додаткове властивість HasSAAText- запис операції на мові САА, відповідна тексту цієї операції в базі даних "ІПС". Складові операції також мають додаткове властивість UsesOperation, в якому зазначаються складові або базисні оператори, що викликаються у функції. Клас PROGRAM призначений для специфікації примірників програм, які використовують дані, визначені підкласами класу Data, та операції - екземпляри класу Operation. Передбачається, що онтологія може містити кілька екземплярів класу PROGRAM. Підклас CurrentProgram класу PROGRAM використовується для того, щоб вказати поточну програму, за якою в інтегрованому інструментарії необхідно згенерувати каркасну схему. Клас ProgramGeneralDescription призначений для завдання додаткових характеристик програми типу програми (звичайна або MPI-програма) і цільової мови програмування.