Тези / Технічні науки – Інформатика, обчислювальна техніка і автоматизація

УДК 004.41

Сидорук А.В.

ДЕЯКІ АСПЕКТИ ВДОСКОНАЛЕННЯ АРХІТЕКТУРНОГО ЕТАПУ РОЗРОБКИ АЛГОРИТМІВ

Чернівецький національний університет


The approaches are suggested concerning the improvement of some aspects of architectural stage in algorythms development, within the limits of which the problems of the metaprogramming of one's own executive code in the process of its completion are solved. The systems of commands are modified as well as the parts of the executive code and the providing of the proper correlations between them.

Запропоновано підхід до вдосконалення деяких аспектів архітектурного етапу розробки алгоритмів, в рамках якого вирішуються задачі метапрограмування власного виконавчого коду в процесі його виконання. Генерації модифікованої системи команд, модифікації частин виконавчого коду, та забезпечення коректних взаємозв’язків між ними.

Ключові слова: архітектура, метапрограмування, система команд, виконавчий код.

Етап архітектурного проектування в процесі розробки алгоритмів грає ключову роль оскільки від якості його реалізації в значній мірі залежать всі наступні етапи, а також якість програмного продукту. На цьому етапі вирішуються дві основні взаємозалежні задачі [1]:

  1. визначається склад підсистем, котрі утворюють алгоритм, та специфікуються дані що обробляються та продукуються цими системами;

  2. специфікуються взаємозв’язки між цими підсистемами.

При цьому рівень формалізації даного етапу проектування явно недостатній. В більшості випадків проектування ведеться з використанням графічних матеріалів (граф-схеми, діаграми і т.п.), при цьому інформаційні зв’язки в алгоритмі оформляються у вигляді окремого документа. Наявність кількох документів, котрі відображають різні аспекти проекту, може послужити джерелом помилок, пов’язаних з невідповідностями в цих документах. Як правило більшість недоліків котрі спричинені даним етапом проявляються на етапі застосування. Необхідно розглянути етап архітектурного проектування в процесі розробки алгоритмів більш детально.

Будемо виходити з того, що на етапах, котрі передують архітектурному етапу проектування алгоритму, розроблені специфікації задачі що вирішується. В результаті чого ми маємо специфікації вихідних та результуючих даних, а також проміжних даних та список функцій , котрі використовує алгоритм. Названі дані визначимо наступним чином.

Вихідні – це дані, визначені (ініціалізовані), тобто ті що мають деякі початкові значення, чи дані, що вводяться з зовнішніх пристроїв (клавіатури, дисків, аналогово-цифрових перетворювачів і т.д.).

Результуючі – це дані, котрі є результатом роботи програмної системи, котрі відображаються (наприклад, на екрані дисплею) чи/або зберігаються на зовнішніх пристроях.

Очевидно, що практично в любому алгоритмі, окрім вище визначених даних присутні також інші дані, котрі назвемо проміжними і визначимо наступним чином. Проміжні – це дані, що відсутні в специфікації задачі, але необхідні для перетворення вихідних даних в результуючі, оскільки вони є носіями проміжних результатів, котрі з’являються на шляху вихідних по відношенню до результуючих даних.

Оскільки серед використовуваних алгоритмів часто вирізняють глобальні та локальні дані, визначимо їх наступним чином. Локальними будемо називати, доступні тільки всередині результуючих операторів, що входять до обчислювальної системи поза якою вони недоступні та не специфіковані. Глобальними будемо називати дані, котрі специфіковані для вихідного оператора та доступні всім результуючим операторам, котрі входять в обчислювальну систему.

Після визначення даних котрі обробляє алгоритм доцільно визначити саме поняття алгоритму [3]. Алгоритмом назвемо вихідний код, який представляє собою сукупність підсистем, при чому ця сукупність реалізує всі дані та функції по перетворенню всіх вихідних даних у всі результуючі. При чому перша підсистема не утримує на вході, а остання – на виході даних для зв’язування, оскільки першій не передує, а за останньою не слідує ні однієї підсистеми. Всі вихідні, результуючі і проміжні дані розприділяються між підсистемами, котрі утворюють алгоритм. Переглянувши властивості даних, перейдемо до специфікації зв’язків між підсистемами. В загальному випадку кожна підсистема, котра утворює алгоритм, може бути зв’язана з усіма наступними та попередніми підсистемами. Тобто у довільної підсистеми множина вихідних даних включає в себе дані, котрі зв’язують її з усіма іншими підсистемами.

Процес архітектурного проектування в процесі розробки алгоритмів полягає в визначенні всіх даних, функцій та встановленні зв’язків між ними, відповідно до поставленої задачі [4]. Результуючий алгоритм застосовується певною програмною системою для вирішення поставленої йому задачі. При чому всі можливо внесені, приховані на рівні проектування помилки, проявляться при застосуванні алгоритму.

Мета даної роботи – покращення вирішення двох названих задач за допомогою введення додаткових керуючих конструкцій (метаконстукцій), котрі дозволять на етапі застосування, в деякій мірі, корегувати етап архітектурного проектування алгоритму. Тобто, нарівні з вимогами до процесу проектування алгоритмів, котрий полягає в необхідності забезпечення відповідності відомим принципам: формальності, абстрактності, ієрархічної впорядкованості і т.п., застосуємо керуючі конструкції, контроль яких входить в склад задач що вирішуються на етапі проектування. За рахунок введення в етап проектування додаткової підсистеми котра буде відповідати за корекцію основних систем алгоритму використовуючи метапрограмні керуючі конструкції. Тобто введенням даних котрі керують даними основних систем, та наділеними принципово відмінними особливостями. Керуючі конструкції повинні мати доступ до всіх специфікованих в алгоритмі даних, а всі керуючі конструкції повинні бути специфіковані.

В якості платформи котра забезпечить можливість проектування алгоритмів на згаданому етапі, виберемо віртуальний процесор [2], котрий забезпечує динамічну корекцію виконавчого коду в області командного набору та виконавчого коду. Вибрана платформа дозволяє реалізувати архітектурне проектування програм, основане на метапрограмуванні власного виконавчого коду в процесі його виконання з застосуванням керуючих метаконструкцій. Відмітимо, що використання вибраного віртуального процесора дозволяє реалізувати вище приведені ідеї на практичному рівні.

Вирішення задачі, на рівні базових команд змінювати свій код в довільній точці виконавчого коду й передавати керування в необхідну точку [2], стало поштовхом для даної роботи. Таким чином, будуть вирішуватись задачі, характерні для вибраного етапу розробки алгоритмів, підвищуючи рівень її гнучкості, та буде забезпечено основу для створення конструкцій керуючих метаоб’єктів, про котрі йшлося вище.

Використання віртуального процесора дозволить забезпечити максимальну гнучкість алгоритму, тобто можливість алгоритму змінити свій код і систему команд його обробки в процесі виконання залежить від того, як спроектовано керування внутрішніми блоками алгоритму. Таким чином забезпечується метапрограмування власного виконавчого коду в процесі його виконання. Робота метаконструкцій ґрунтується на основних принципах які дозволяє використовувати віртуальний процесор:

  1. можливість, в процесі виконання виконавчого коду, змінити сам виконавчий код не перериваючи при цьому процес виконання, за рахунок керування робочою точкою;

  2. можливість, в процесі виконання виконавчого коду, створювати та застосовувати нову систему команд не перериваючи при цьому процес виконання.

Надаючи керуючій підсистемі алгоритму вказані вище можливості та можливість керування всіма іншими системами алгоритму, з’являється реальна можливість якісно вплинути на поведінку алгоритму в процесі його виконання. Таким чином етап проектування слід доповнити проектуванням керуючої підсистеми, яка зважаючи на певні фактори, котрі будуть оговорені при проектуванні зможе тим чи іншим чином змінити алгоритм на рівні виконання, при чому зважаючи на можливості які надає віртуальний процесор, ці зміни можуть бути докорінні.

Підводячи підсумок слід відмітити, що використовуючи традиційні платформи задача проектування відокремлена від застосування готового продукту. Використовуючи віртуальний процесор, з’являється можливість під час проектування визначити алгоритми метапрограмування котрі дозволять змінювати код і правила його обробки на етапі застосування. Таким чином проводити обмежене сутністю самого алгоритму перепроектування на етапі застосування. Проектування за допомогою метапрограмування виконавчого коду в процесі його виконання надає алгоритму свободу дій, обмежену лише алгоритмом котрий використовує керуючі метапрограмні конструкції.


Література:

  1. Соммервилл И. Инженерия программного обеспечения. – М.: Издательский дом Вильямс”, 2002. – 642 с.

  2. Науковий журнал Вісник Хмельницького національного університету. – №2 (128). – Хмельницький, 2009. – 248с.

  3. Гуц А. К. Математическая логика и теория алгоритмов: Уч. пособие. Омск: Изд-во „Диалог-Сибирь”, 2003. – 108 с.

  4. Люгер Д. Искусственный интеллект: стратегии и методы решения сложных проблем, 4-е изд., М.: Издательский дом Вильямс”, 2003. – 864 с.

Статья создана 2008-2009 рр. Опубликована 28.09.2018 

Назад

 

TerminalCoin

2018-09-30 07:56:51