Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Автоматизация процесса программирования для облака





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

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

В ходе исследования задач трансляции была совершена попытка найти решение проблем, связанных с быстрым ростом и изменением языков программирования, упростить изучение и обновление программ, переход на более высокий уровень абстракции. Разработан комплекс программ. Он включает в себя автоматический транслятор, исходным для которого является неструктурный язык, а целевым – структурный язык Lua, виртуальная машина, общая для сценариев, реализованных различных языках, а также вспомогательные программы для построения визуального представления семантики сценариев в виде графа переходов и его линеаризации. Языки для исследования были выбраны таким образом, чтобы в них сочетались все крайние характерные свойства для парадигм, однако это не единственное возможное решение[6].

Этапы процесса трансляции и процесса эмпирического доказательства правомерности полученных результатов представлены на рис. 7.

Рис.7 – Схема процесса трансляции (сверху), схема процесса эмпирического доказательства правомерности полученных результатов

Для неструктурного подхода в качестве промежуточного представления лучше выбрать визуальное представление, граф переходов. «Для указания набора элементарных операторов и порядка их следования друг за другом при задании того или иного конкретного алгоритма удобно использовать направленные графы особого рода… Граф-схема алгоритма представляет собой конечное множество соединенных между собой стрелками кружочков (или других геометрических фигур), называемых узлами граф - схемы. Каждому узлу сопоставляется какой-либо элементарный оператор» [1, с.20]. Следует отметить, что в отличие от традиционно популярных представлений в виде одного из вариантов сетей Петри, подход на основе графа переходов не требует дополнительных усилий по выделению групп однотипных состояний. Модели такого рода основаны на выявлении регулярной структуры предметной области. Для конструирования таких моделей нужно типизировать сущности предметной области, относя к одному типу сущности с одинаковым набором свойств. Аналогичным образом типизируются связи между сущностями. Представление предметной области, сконструированное с помощью рассматриваемого подхода, также называется структурированным. Таким образом, применение модели графа переходов необходимо для выявления структуры алгоритма (рис. 8).

 

Рис.8 - Представление семантики сценария SockMonkey в виде графа переходов (слева), модель графа переходов (справа)

 

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

 

Рис.9 - SockMonkey в виде графа переходов, линеаризация (справа)

 

Транслятор, объединяющий в себе функции предыдущих программ, генерирует код на Lua (рис.10).

Рис. 10 - Транслятор

 

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

Таблица 1. Сравнение структуры графов алгоритма, реализованного на исходном и целевом языках

SockMonkey Граф SockMonkey Lua Граф Lua
0. set local flag (num) to true 1. (num) = (num) 2. float line (num) above (obj) 3. do nothing 4. loop break script.getFlag(num).enable() a=b script.getObject(obj).setFloatText(text from line num) break

 

«Go to» можно рассматривать как основную операцию по передаче управления из одной части программы в другую. Если бы в сценарии не было оператора безусловного перехода, то он выполнялся бы строка за строкой. То есть, если n - номер строки, в которой содержится выполняемый в данный момент времени оператор, то n будет увеличиваться на единицу после выполнения очередного оператора: n=0,1,2,3,4.

В данном случае в строке 2 содержится оператор «go to». Теперь в процессе работы сценария он принудительно изменит порядок следования строк с операторами: n = 0,1,4. Таким образом, механизм работы «got o» заключается в определении переменной-счетчика n.

Значит, алгоритм автоматического преобразования будет выглядеть следующим образом. Создадим массив, куда поместим строки сценария SockMonkey. Осуществим проход по массиву, определяя переменную-счетчик n, так что:

  • если элемент массива не содержит оператора «goto», n увеличивается на единицу,
  • если элемент содержит «go to», n принимает значение метки — номера элемента массива, куда должен быть осуществлен переход.

Затем выполним инструкции в порядке, учитывающем n — от меньшего к большему (табл.2), если инструкция — не «go to», иначе - выполнить номер оператора, указанный в «go to».

Таблица 2.Очередность выполнения операторов

индекс Строка Значение переменной-счетчика
  ... n=0
  ... n=1
  goto line 4 n=4
  ...  
  ...  

 

Используя модель виртуальной машины, обеспечивающей независимость исполнения программ от платформы (рис.11), создаём виртуальную машину для двух языков – исходного и целевого. В обычной среде объектный код (независящий от аппаратного обеспечения) компилируется в бинарный машинный код для исполнения на аппаратной платформе. В виртуальной среде объектный код сразу интерпретируется абстрактной машиной с целью исполнения.

Рис. 11 – модель ВМ, обеспечивающий независимость исполнения программы от платформы

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

Рис.12 - Работа виртуальной машины

 

Поддержка гетерогенной инфраструктуры в открытом облаке позволяет сохранить инвестиции. Это касается всех уровней: от языков и сред программирования, до хранения и обработки как данных, так и самих приложений. Интероперабельность даёт множество преимуществ. Например, если разработано приложение для одного облака, не нужно переписывать его на другом языке или использовать другой API для переноса к другому провайдеру облачных вычислений. Кроме того, единая облачная среда освобождает вас от необходимости повторного тестирования или сертификации вашей разработки при новых внедрениях.

ЗАКЛЮЧЕНИЕ

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

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

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

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

 

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

 

1. Глушков В.М. Введение в кибернетику, - К.: Издательство академии наук Украинской С, 1964, - 325с.

2. Доступен пятый релиз свободной cloud-платформы OpenStack "Essex" / Opennet / [Электронный ресурс], URL: http://www.opennet.ru/opennews/art.shtml?num=33551

3. Клементьев И.П., Устинов В.А. Введение в «облачные» вычисления: авторский курс лекций [Электронный ресурс], URL: http://www.intuit.ru/department/se/incloudc/0/

4.. «Облачные дали»//The Business Times, 2011 № 03, С.12-13

5. Услуги из облака: спектр выбора: аналитический бюллетень//CNews, 2011, С.5

6. Чугреева Е.Е. Представление семантики управляющих программ специализированных роботов в виде графа переходов как этап автоматизированной трансляции/Тезисы докладов Международной научно-практической конференции «Передовые информационные технологии, средства и системы автоматизации и их внедрение на российских предприятиях». М.: Институт проблем управления им. Трапезникова РАН, 2011

7. OpenStack [официальный сайт], URL: http://www.openstack.org/

8. OpenStack Glance/OpenStack.ru сообщество/ [ Электронный ресурс], URL: http://openstack.ru/about/components/openstack_glance.php

9. OpenStack Nova/OpenStack.ru сообщество/ [ Электронный ресурс], URL: http://openstack.ru/about/components/openstack_nova.php

10. OpenStack Swift/OpenStack.ru сообщество/ [ Электронный ресурс], URL: http://openstack.ru/about/components/openstack_swift.php

11. OpenStack Beginner’s Guide for Ubuntu – Natty: пер. с англ. [Электронный ресурс], URL: http://xgu.ru/wiki/Перевод_книги_OpenStack_Beginner’s_Guide_for_Ubuntu_-_Natty#Euca2ools_Commands

12. The Open Cloud: Red Hat’s Perspective /About Red Hat/[Электронный ресурс], URL: http://ru.redhat.com/about/news/archive/2012/2/The-Open-Cloud-Red-Hats-Perspective

13. OpenStack Nova internals of instance launching/Technical blog on web technologies/ [Электронный ресурс], URL: http://www.laurentluce.com/posts/openstack-nova-internals-of-instance-launching/

14. OpenStack /TAdviser / [Электронный ресурс], URL: http://www.tadviser.ru/index.php/%CF%F0%EE%E4%F3%EA%F2:OpenStack

 

ПРИЛОЖЕНИЕ А

Взаимодействие компонентов OpenStack

 

 

 

ПРИЛОЖЕНИЕ Б

Пример конфигурации облака

Архитектура OpenStack

Документацию, инструкции по установке, код для работы с приложениями можно найти на официальном сайте проекта

И по ссылкам:

1. OpenStack Nova internals of instance launching/Technical blog on web technologies/ [Электронный ресурс], URL: http://www.laurentluce.com/posts/openstack-nova-internals-of-instance-launching/

2. OpenStack Beginner’s Guide for Ubuntu – Natty: пер. с англ. [Электронный ресурс], URL: http://xgu.ru/wiki/Перевод_книги_OpenStack_Beginner’s_Guide_for_Ubuntu_-_Natty#Euca2ools_Commands

3. OpenStack [официальный сайт], URL: http://www.openstack.org/

 

Некоторые команды для установки системы

 

Для установки нужных нам компонентов можно использовать стандартный менеджер пакетов:

$ sudo apt-get install rabbitmq-server \

redis-server

$ sudo apt-get install nova-api \

nova-objectstore nova-compute \

nova-scheduler nova-network \

euca2ools unzip

Фактически уже после установки система полностью готова к работе, остается только завести учетную запись суперпользователя:

$ sudo nova-manage user admin <имя>

И создать новый проект, в рамках которого будут производиться все дальнейшие эксперименты:

$ sudo nova-manage project create experiments <имя>

Далее запаковать данные, необходимые для доступа к проекту, в zip-архив:

$ sudo nova-manage project zipfile experiments <имя>

Теперь эти данные можно использовать, чтобы управлять работой облака с помощью EC2-совместимых инструментов. Для этого распаковать архив и выполнить команды, прописанные в файле novarc:

$ unzip nova.zip

$. novarc

Чтобы протестировать работу сервиса, понадобится EC2-образ виртуальной машины.

Минимальный Linux-образ можно получить на сайте Rackspace:

$ wget http://c2477062.cdn.cloudfiles.rackspacecloud.com/images.tgz

Распаковать:

$ tar -xzf images.tgz

Образ необходимо зарегистрировать в облаке:

1. Создать манифесты для ядра и рамдиска:

$ euca-bundle-image -i images/aki-lucid/image -p kernel --kernel true

$ euca-bundle-image -i images/ari-lucid/image -p ramdisk --ramdisk true

2. Загрузить ядро и рамдиск в облако:

$ euca-upload-bundle -m /tmp/kernel.manifest.xml -b mybucket

$ euca-upload-bundle -m /tmp/ramdisk.manifest.xml -b mybucket

3. Регистрировать ядро и рамдиск:

$ euca-register mybucket/kernel.manifest.xml

$ euca-register mybucket/ramdisk.manifest.xml

Эти команды должны выдать на экран идентификаторы ядра и рамдиска внутри облака. Их нужно запомнить или скопировать.

4. Подготовить образ машины, используя зарегистрированные в прошлом шаге ядро и рамдиск:

$ euca-bundle-image -i images/ami-tiny/image -p machine --kernel ID-ядра --ramdisk ID-диска

5. Загрузить образ машины в облако:

$ euca-upload-bundle -m /tmp/machine.manifest.xml -b mybucket

 

6. Регистрировать образ машины и запоминать ее идентификатор:

$ euca-register mybucket/machine.manifest.xml

 

Теперь можно запустить виртуальную машину на исполнение, но сначала следует получить SSH-ключ для доступа к нашим машинам:

$ euca-add-keypair mykey > mykey.priv

$ chmod 600 mykey.priv

 

Запустить виртуальную машину:

$ euca-run-instances ID-машины --kernel ID-ядра --ramdisk ID-рамдиска -k mykey

 

Смотреть состояние машины:

$ euca-describe-instances

Проверить, была ли она корректно запущена:

$ virsh list

 

Подключиться к машине по SSH:

$ euca-authorize -P tcp -p 22 default

$ ssh -i mykey.priv [email protected]

Удалить машину:

$ uca-terminate-instances ID-машины

Date: 2015-07-25; view: 584; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию