<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>РОЗВИТОК ІНТЕРНЕТ-ПОРТАЛУ МЕТЕОРОЛОГІЧНОГО ПРОГНОЗУВАННЯ НА МУЛЬТИПРОЦЕСОРНІЙ ПЛАТФОРМІ</article-title>
      </title-group>
      <pub-date>
        <year>2016</year>
      </pub-date>
      <fpage>246</fpage>
      <lpage>253</lpage>
      <abstract>
        <p>Розглянуто подальший розвиток сервісно-орієнтованого портального рішення для надання послуг метеорологічного прогнозування. Зокрема, виконано реалізацію тривимірного алгоритму вирішення задачі моделювання циркуляції атмосфери з використанням графічних прискорювачів в якості обчислювального пристрою як для чисельного розрахунку прогнозу, так і для його візуалізації. Ключові слова: паралельні обчислення, метеорологічне прогнозування, інтернет-портал, мережа, графічний прискорювач, візуалізація. Рассматривается дальнейшее развитие сервисно-ориентированного портального решения для предоставления услуг метеорологического прогнозирования. В частности, выполнено реализацию трехмерного алгоритма решения задачи моделирования циркуляции атмосферы с использованием графических ускорителей в качестве вычислительного устройства как для численного расчета прогноза, так и для его визуализации. Ключевые слова: параллельные вычисления, метеорологическое прогнозирование, интернет-портал, сеть, графический ускоритель, визуализация. The article deals with the further development of a service-oriented portal solution for providing meteorological forecasting services. In particular, the three-dimensional algorithm for solving the task of circulation atmosphere modeling was implemented using graphics processing units (GPU) as a computing device for forecast calculation as well as for its visualization.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Це обумовлено складністю математичних моделей, що описують циркуляційні процеси в атмосфері. Через
наявність малого параметра при старших похідних ці рівняння можуть змінювати свій тип (еліптичний,
гіперболічний або параболічний) залежно від режиму руху в атмосфері, що моделюється. Крім цього треба
відзначити, що математична модель циркуляції атмосфери та процесів в ній, яка сформульована на базі
повних рівнянь Нав’є-Стокса та тепло-масопереносу, описує широкий спектр рухів: мезомасштабні
процеси, баротропні та бароклінні хвилі Росбі, інерційно-гравітаційні хвилі, квазістаціонарні струминні
течії.</p>
      <p>Просторова дискретизація з грубим розподіленням веде до того, що вплив багатьох мезомасштабних
метеорологічних процесів втрачається, оскільки у такому разі вони опиняються у класі процесів підсіткового
масштабу. Ресурси сучасних ЕОМ поки що не дають змоги здійснювати просторову дискретизацію моделі
атмосфери з високим розподіленням. Крім того, значною проблемою при прогнозуванні погоди на основі
реалізації математичних моделей є обмеження на час розв’язання, оскільки прогноз погоди потрібно
отримувати завчасно. Навіть сучасні потужні обчислювальні машини не дозволяють використовувати дрібну
просторову сітку в області розв’язання задачі і часову дискретизацію та ітераційні методи, що дало б
можливість підвищити точність прогнозу.</p>
      <p>
        Стан атмосфери в просторі r = (λ ,ϕ ,σ ) макромасштабної області G(r) ⊂ G(r) визначається вектором
ℜ(r,t) = (u,v, w,π ,T , q, qL , qW , k,ε ) дискретних значень аналізу і прогнозу ℜ(r,t m ) = ℜm (r), отриманих на основі
макромасштабної моделі в моменти часу t = t m (m =0,1,..., M ) з кроком τ = t m − t m−1 , де t – час; λ – довгота;
ϕ – широта; σ – приведена вертикальна координата, що відслідковує рельєф; u,v, w – складові швидкості
вітру по довготі, широті і вертикальній координаті відповідно; π = C p ( p p0 )R Cp – приведений тиск;
T – температура; q – вологість, qH – вологість у стані насичення; qL – вода у рідкому стані; k –
території G при ∀t ∈ [t m−1,t m ] виконується розв’язання задачі, що у векторному виразі має вигляд:
турбулентна кінетична енергія; ε – турбулентна дисипація. Для визначення стану атмосфери на обмеженій
∂ℜ = Dℜ , ∀t ∈[t m−1,t m ] , ∀r ∈ G ,
∂t
ℜ(r,t m ) = ℜm (r) , m = 0, 1,..., M .
(1)
Для розв’язання задачі (1) в роботі застосовується інтерполювання функції за декількома значеннями
самої функції (передісторією) та похідних від неї першого порядку за допомогою алгебраїчного поліному.
Використовується інтерполяція з кратними вузлами при кратності три. Виконується також апроксимація
правих частин диференціальних рівнянь моделі у вузлах просторової сітки. Детальний опис застосованого
чисельного методу наведено в монографії [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>
        З метою підвищення точності прогнозу, що вимагає подрібнення просторової сітки в області
розв’язання задачі і часу дискретизації, було реалізовано систему прогнозування [
        <xref ref-type="bibr" rid="ref6 ref7">6, 7</xref>
        ], що використовує
графічний прискорювач та програмно-апаратну технологію паралельних обчислень CUDA [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], яка дозволяє
істотно підвищити обчислювальну продуктивність завдяки використанню графічних процесорів.
Відеографічний процесор дозволив суттєво прискорити процес отримання результатів прогнозу, у порівнянні
із центральним процесором без використання прискорювача.
      </p>
      <p>В рамках даної роботі з метою надання публічного доступу до користування цими розробками, було
створено сервісно-орієнтований портал, що дозволяє користувачу отримати доступ до локального прогнозу
погоди в межах території України.</p>
      <p>
        Початкові дані об’єктивного аналізу стану атмосфери (тиск, температура, вологість та горизонтальні
компоненти вітру) для території Європи надано німецькою національною службою DWD Offenbach [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
Сервіс чисельного обрахунку здійснює обробку вихідних метеорологічних даних для потрібної користувачу
території та на заданому проміжку часу. В свою чергу сервіс, що відповідає за візуалізацію результатів
прогнозу, відображає отримані чисельні результати у графічному вигляді на географічній карті. Візуалізація
результатів прогнозу також здійснюється за допомогою графічного прискорювача.
2. Архітектура системи
      </p>
      <p>
        Поточна робота продовжує розвиток реалізованої раніше сервісно-орієнтованої системи
метеорологічного прогнозування [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] шляхом додавання нового модуля, що реалізує задачу розрахунку
метеорологічного прогнозу на базі відеографічних прискорювачів. Окрім того було обрано новий метод для
надання користувачу кінцевого результату прогнозування – статичне зображення карти з нанесеними на неї
позначками, сформоване також за допомогою відеографічного процесора. Ця частина роботи буде
докладніше розглянута у наступному розділі.
      </p>
      <p>
        Рис. 1. Схема розроблюваної системи метеорологічного прогнозування
У даній системі вирішено використовувати REST-сервіси [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] замість SOAP-сервісів [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Це
обумовлено необхідністю передавати різні формати даних та зменшити розмір повідомлень.
      </p>
      <p>
        Слід зазначити, що увесь «бекенд» системи розробляється мовою Java з використанням фреймворку
Spring [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Він дозволяє значно пришвидшити розробку веб-додатків та зробити їх більш модульними
завдяки принципу «впровадження залежностей», що покладений в його основу. У якості програмних серверів
для сервісів обрано контейнер сервлетів Apache Tomcat.
      </p>
      <p>
        Інтернет-портал реалізований за допомогою відкритого програмного продукту Liferay [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Вибір саме
портального рішення зумовлений можливістю легко інтегрувати різноманітні сервіси та забезпечувати єдину
точку доступу до них, поступово нарощуючи функціональність системи. Сервіси всередині порталу
розміщаються в окремих модулях, що називаються портлетами.
      </p>
      <p>Сервіс надання метеорологічних прогнозів поділяється на декілька функціональних блоків, його схема
зображена на рис. 2.</p>
      <p>«Фронт-сервлет» – об’єднує обробку запитів шляхом їх направлення через єдиний об’єкт-обробник.
Цей об’єкт реалізовує загальну поведінку, яка може бути змінена під час виконання за допомогою шаблону
декоратор. Після цього «Фронт-сервлет» створює потрібні об’єкти відповідно до запиту та викликає методи
для реалізації конкретної задачі. Запит по створенню задачі на прогноз повертає орієнтовний час очікування
та ідентифікатор замовлення, через який можна буде отримати будь-яку інформацію про замовлення та його
результат.</p>
      <p>Рис. 2. Схема сервісу надання метеорологічних прогнозів
«Черга задач» – блокуюча черга реалізована на базі LinkedBlockingQueue пакету java.util.concurrent,
що реалізує алгоритм «two lock queue»: одне блокування на додавання, інше на діставання елемента.
Елементи черги – це задачі, які відрізняються між собою типом задачі (розрахунок метеоданих чи
генерація зображення). Для кожної задачі зберігається інформація про статус (“NOT_CREATED” – задача
на прогноз очікує доступу до черги (в разі її заповнення), “IN_QUEUE” – задача перебуває в черзі на
виконання, “IN_PROCESSING” – задача на прогноз виконується в даний момент, “READY” – готовий
результат).</p>
      <p>«Процесор задач» – реалізований на базі інтерфейсу ExecutorService з пакету java.util.concurrent бере
на себе роботу по запуску і зупинці потоків. Дана реалізація в найбільшій мірі підходить для паралельного
асинхронного обрахунку прогнозів. Розмірність пулу автоматично вважається як 100 % завантаженості GPU.
Відповідно кожна із задач має орієнтовний відсоток навантаження на GPU, що вказується у
конфігураційному файлі.</p>
      <p>Після виконання задачі обрахунку метеорологічного прогнозу, автоматично створюється задача на
генерацію зображення та кладеться у чергу задач. Після виконання задачі на генерацію зображення на диску
зберігається тимчасовий файл зображення як результат прогнозування.</p>
      <p>Сервіс управління метеорологічними прогнозами виконує функцію зв’язкового між порталом
та сервісом із GPU. Окрім того він зберігає у себе на дисковій системі результати усіх замовлень, що
дає можливість отримати їх вдруге вже без створення виклику на сервіс обрахунку метеорологічних
прогнозів.</p>
      <p>В рамках даної роботи проведено порівняння швидкодії тієї частини програми, що виконувалась на
графічному прискорювачі, із відповідною частиною, виконаною на центральному процесорі.</p>
      <p>Випробування проводились із використанням процесора Intel Core i5-2500 (у 64-бітному режимі) та
графічного прискорювача NVIDIA GeForce GTX 560, що має наступні характеристики:
• 336 stream-процесори (CUDA-ядра), базова частота 810 МГц;
• обсяг глобальної пам’яті 1024 МБ;
• базова частота пам’яті 2002 МГц.</p>
      <p>Обчислення в експериментальній задачі для підрахунку часу виконання проводились для сіток
локальних карт у вузлах просторової сітки розмірами 101×101×41, 111×111×45, 121×121×49, 131×131×53,
141×141×57, 151×151×61, 161×161×65, 171×171×69 та 191×191×77 частин. На рис. 3 показано графік
залежності часу виконання обчислень послідовної та паралельної програм від розміру задачі (кількості вузлів
розбиття розрахункової сітки). Відносне прискорення (відношення часу виконання послідовної до часу
виконання паралельної програм, рис. 4) зростає від 11.6 для найменшої до 32.5 для найбільшої із роглянутих
сіток. Таким чином, перехід на нову обчислювальну платформу з використанням GPU дозволив збільшити
продуктивність виконання обчислень.
Рис. 3. Графік залежності часу виконання від розміру задачі
Рис. 4. Графік залежності відносного прискорення від розміру задачі
3. Візуалізація результатів обчислень</p>
      <p>Існує чимало готових рішень для візуалізації масивів даних. Проте, провівши ретельний аналіз, можна
стверджувати, що наразі відсутні он-лайн сервіси, які мають необхідну функціональність. Більшість
представлених на даний момент програмних продуктів є платними рішеннями з закритим вихідним кодом.</p>
      <p>Важливо зазначити, що масиви даних, отримані в результаті метеорологічного прогнозування, мають
формат, що не відповідає існуючим програмних продуктам, а саме ці масиви містять лише значення
досліджуваних величин в текстовому або бінарному форматі і не містять жодних координат. З урахуванням
вище описаного, було створено новий програмний засіб, що дозволяє побудувати та візуалізувати такі
об’єкти метеопрогнозування як ізолінії. Він виконує генерацію статичного зображення карти з нанесеними на
неї позначками, за допомогою відеографічного прискорювача та зберігає його у файл.
Для побудови ізоліній необхідно описати масив даних поверхні, а також вказати рівні ізоліній які
необхідно побудувати. Ця інформація передається програмному засобу, що далі виконує алгоритм обчислення
відрізків, які складають криву ізолінії. Потім необхідно візуалізувати ці відрізки на будь-якому доступному
графічному пристрої, використовуючи певний графічний програмний інтерфейс.</p>
      <p>
        Розроблене програмне забезпечення використовує OpenGL [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], оскільки цей програмний інтерфейс є
незалежним від платформи та мови програмування. Для побудови ізоліній використовується алгоритм
CONREC [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], який є відносно простим у реалізації та дуже надійним.
      </p>
      <p>Більшість алгоритмів побудови ізоліній розглядають прямокутну сітку даних по чотири точки за один
раз, а саме прямокутник з вершинами d(i,j), d(i+1,j), d(i,j+1), та d(i+1,j+1). Особливістю алгоритму CONREC є
те, що центру кожного прямокутника присвоюється значення, що відповідає середньому арифметичному
значенню чотирьох вершин, а кожен прямокутник, в свою чергу, ділиться на чотири трикутні області, отримані
розрізанням уздовж діагоналей. Кожна з цих трикутних областей може бути розділена горизонтальною
площиною ізолінії. Перетин кожного трикутника з площиною ізолінії є прямим відрізком – частиною кривої
ізолінії на поточному рівні ізолінії. Також реалізовано оптимізацію шляхом початкової перевірки того, чи
проходить певна ізолінія через поточний прямокутник, а вже потім перевіряється проходження ізолінії через
кожен з чотирьох трикутників.</p>
      <p>Для створення файлів зображень візуалізації метеорологічного прогнозу використовується бібліотека
DevIL, що підтримує велику кількість форматів зображень. Проте доцільно використовувати BMP, PNG або
JPG. Налаштування засобу візуалізації здійснюється за допомогою файлу конфігурації у якому, зокрема,
вказуються такі параметри як кількість рівнів ізоліній, найменше та найбільше значення рівня ізоліній і т. ін.</p>
      <p>В реалізованому засобі візуалізації використовуються шейдери двох типів – вершинні та фрагментні.
Всього розроблено шість шейдерних програм – по одному вершинному та фрагментному шейдеру для
візуалізації, ізоліній та текстури. В якості текстури використовується карта, наприклад, карта України чи світу.
На рис. 5 показано результат роботи засобу візуалізації.</p>
      <p>Рис. 5. Мапа 13 ізоліній в інтервалі від 15°C до 30°C
Обраний підхід має як свої переваги, так і недоліки. Серед недоліків можна вказати його статичність та
необхідність виконання запиту на генерацію і пересилку нового зображення при бажанні отримати прогноз для
іншої області. Але серед переваг можна зазначити можливість формування зображення будь-якої складності та
використання будь-яких об’ємів даних, нанесених на мапу. Аналогічна процедура для динамічного
відображення у попередньому підході була б проблематичною через обмеження ширини каналу, об’єму
доступної пам’яті, та значне навантаження на процесор клієнтської машини. Тому при виборі підходу
відображення метеорологічних даних кінцевому користувачу потрібно виходити з поточних цілей донесення
бажаної інформації та можливостей технічного забезпечення серверної та клієнтської сторін.</p>
      <p>Рис. 6. Зміна метеорологічних показників у часі</p>
      <p>
        У роботі розглянуто подальший розвиток реалізованого раніше сервісно-орієнтованого портального
рішення для надання послуг метеорологічного прогнозування [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Було додано модуль, для розрахунку
тривимірного алгоритму вирішення задачі моделювання циркуляції атмосфери з використанням нової
обчислювальної платформи на базі графічних прискорювачів. Перехід на нову обчислювальну платформу
дозволив значно збільшити продуктивність виконання обчислень. Окрім того було обрано новий ефективний
метод для візуалізації результатів метеорологічного прогнозування – статичне зображення карти з нанесеними
на неї позначками, також сформоване за допомогою відеографічного прискорювача. Створено ефективний засіб
візуалізації, що застосовує кросплатформні бібліотеки, а також має можливість запускатися ззовні іншим
додатком чи скриптом, що дозволяє інтегрувати засіб візуалізації в сервіс.
      </p>
      <p>Представлену систему реалізовано за допомогою сучасних провідних технологій, таких як
інтернетпортали та мікро-сервіси. Завдяки сервісно-орієнтованій архітектурі вона інтегрує різноманітні незалежні
сервіси.</p>
      <p>В подальшому планується розвивати цю систему покращуючи її розширювальну здатність, додаючи нові
сервіси, нові більш складні та потужні обчислювальні алгоритми та моделі та функціонально збагачувати
існуючі сервіси.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Doroshenko</surname>
            ,
            <given-names>A.Yu.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ivanenko</surname>
            ,
            <given-names>P.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ovdii</surname>
            ,
            <given-names>O.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pavliuchyn</surname>
            ,
            <given-names>T.O.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Vitriak</surname>
            ,
            <given-names>I.A.</given-names>
          </string-name>
          (
          <year>2015</year>
          )
          <article-title>Creation of an Internet portal providing meteorological forecasting services on multiprocessor platform. Problems in programming. (3)</article-title>
          . P.
          <volume>24</volume>
          -
          <fpage>32</fpage>
          . (in Ukrainian)
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Prusov</surname>
            ,
            <given-names>V.A.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Doroshenko</surname>
            ,
            <given-names>A.Yu.</given-names>
          </string-name>
          (
          <year>2006</year>
          )
          <article-title>Simulation of natural and anthropogenic processes in the atmosphere</article-title>
          .
          <source>Kyiv: Naukova Dumka. (in Ukrainian)</source>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Tolstykh</surname>
            ,
            <given-names>M.A.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Frolov</surname>
            ,
            <given-names>A.V.</given-names>
          </string-name>
          (
          <year>2005</year>
          )
          <article-title>Some current problems in numerical weather prediction</article-title>
          .
          <source>Izvestiya. Atmospheric and Oceanic Physics</source>
          . (
          <volume>3</volume>
          ). P.
          <volume>285</volume>
          -
          <fpage>295</fpage>
          . (in Russian)
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Prusov</surname>
            ,
            <given-names>V.A.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Snizhko</surname>
            ,
            <given-names>S.I.</given-names>
          </string-name>
          (
          <year>2005</year>
          )
          <article-title>Mathematical modeling of atmospheric processes</article-title>
          .
          <source>Kyiv: NikaTsentr</source>
          . (in Ukrainian).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Kivganov</surname>
            ,
            <given-names>A.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Khomenko</surname>
            ,
            <given-names>G.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Khokhlov</surname>
          </string-name>
          , V.M &amp;
          <string-name>
            <surname>Bondarenko</surname>
            ,
            <given-names>V.M.</given-names>
          </string-name>
          (
          <year>2002</year>
          )
          <article-title>Hydrodynamic methods of weather forecasting and grid methods for their implementation</article-title>
          . Odessa: Odessa State Environmental University. (in Ukrainian)
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Doroshenko</surname>
            ,
            <given-names>A.Yu.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beketov</surname>
            ,
            <given-names>O.G</given-names>
          </string-name>
          , Prusov,
          <string-name>
            <given-names>V.A.</given-names>
            ,
            <surname>Tyrchak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Yu.M.</given-names>
            &amp;
            <surname>Yatsenko</surname>
          </string-name>
          ,
          <string-name>
            <surname>O.A.</surname>
          </string-name>
          (
          <year>2014</year>
          )
          <article-title>Formalized design and generation of parallel programs for numerical weather forecast. Problems in programming. (2-3</article-title>
          ). P.
          <volume>72</volume>
          -
          <fpage>81</fpage>
          . (in Ukrainian)
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Doroshenko</surname>
            ,
            <given-names>A.Yu.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yatsenko</surname>
            ,
            <given-names>O.A.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Beketov</surname>
            ,
            <given-names>O.G</given-names>
          </string-name>
          (
          <year>2014</year>
          )
          <article-title>The use of graphics processing units for meteorological forecasting tasks</article-title>
          .
          <source>Theoretical and applied aspects of building software systems. (in Ukrainian)</source>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>CUDA</surname>
          </string-name>
          (
          <year>2016</year>
          )
          <article-title>CUDA Zone</article-title>
          . [Online] Available from: https://developer.nvidia.com/cuda-zone.
          <source>[Accessed: 25th February</source>
          <year>2016</year>
          ]
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>DWD</surname>
          </string-name>
          (
          <year>2015</year>
          )
          <article-title>Wetter und Klima - Deutscher Wetterdienst</article-title>
          . [Online] Available from: http://www.dwd.
          <source>de [Accessed: 25th February</source>
          <year>2016</year>
          ]
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Fielding</surname>
            ,
            <given-names>R. T.</given-names>
          </string-name>
          (
          <year>2000</year>
          ) .
          <article-title>Architectural Styles and the Design of Network-based Software Architectures</article-title>
          .
          <source>Doctoral dissertation</source>
          , - University of California, Irvine. [Online] Available from: http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm.
          <source>[Accessed: 25th February</source>
          <year>2016</year>
          ]
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>SOAP</surname>
          </string-name>
          (
          <year>2016</year>
          )
          <article-title>SOAP Specifications - W3C</article-title>
          . [Online] Available from: https://www.w3.org/TR/soap/.
          <source>[Accessed: 25th February</source>
          <year>2016</year>
          ]
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>SPRING</surname>
          </string-name>
          (
          <year>2016</year>
          )
          <article-title>Spring Framework</article-title>
          . [Online] Available from: http://projects.spring.io/spring-framework/.
          <source>[Accessed: 25th February</source>
          <year>2016</year>
          ]
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>LIFERAY</surname>
          </string-name>
          (
          <year>2016</year>
          )
          <article-title>Liferay - Enterprise open source portal and collaboration software</article-title>
          . [Online] Available from: http://www.liferay.com/.
          <source>[Accessed: 25th February</source>
          <year>2016</year>
          ]
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <article-title>OpenGL - The Industry Standard for High Performance Graphics</article-title>
          . [Online] Available from: https://www.opengl.org/.
          <source>[Accessed: 25th February</source>
          <year>2016</year>
          ]
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Bourke</surname>
            <given-names>P.</given-names>
          </string-name>
          (
          <year>1987</year>
          )
          <article-title>CONREC: A contouring subroutine</article-title>
          .
          <source>Byte: The Small Systems Journal</source>
          ,
          <volume>12</volume>
          (
          <issue>6</issue>
          ): P.
          <fpage>43</fpage>
          -
          <lpage>150</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          http://orcid.org/0000-0003-4715-5053, Вітряк Євгеній Андрійович,
          <article-title>аспірант Інституту програмних систем НАН України</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          http://orcid.org/0000-0002-7198-6634, Мироненко Ігор Олексійович,
          <article-title>аспірант Інституту програмних систем НАН України</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>http://orcid.org/0000-0003-3768-4226, Овдій Ольга Михайлівна, молодший науковий співробітник.</mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>http://orcid.org/0000-0002-8891-7002.</mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>