WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 || 3 | 4 |   ...   | 14 |

3 — обновление раз в 30 мин Вспомогательная таблица для построения графика расхода заряда батареи t, мин C2DM 30 мин 10 мин 0 100 100 30 99 100 60 99 99 90 99 99 120 98 98 Заключение Исследования показали, что Android Cloud to Device Messaging — это очень мощное средство для реализации множества идей разработчиков. Хотя сервис запущен совсем недавно, сейчас можно найти программные продукты, в которых он используется. Например, реализованы такие решения, как отправка фрагментов топографических карт со стационарного компьютера на мобильное устройство или синхронизация работы в браузерах компьютера и мобильного устройства. Корпорация Google предоставила открытый доступ к этому инструменту и ожидает от разработчиков программного обеспечения множества идей и решений.

Применение данного сервиса позволяет, в частности, экономить интернет-трафик и заряд батареи в любом программном продукте, работающем с обновлениями данных через сеть, что доказано экспериментально авторами статьи.

Сборник трудов молодых ученых и сотрудников кафедры ВТ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ ЛИТЕРАТУРА 1. Gargenta A. Mastering C2DM The Android Cloud to Device Messaging Framework [Электронный ресурс]: < http://marakana.com/forums/android/general/272.html>.

2. Vogel L. Android Cloud to Device Messaging (C2DM) — Tutorial [Электронный ресурс]:

.

3. Android Cloud to Device Messaging Framework [Электронный ресурс]: .

Сведения об авторах Айдынбаев Ануар Болатович — студент; Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, кафедра вычислительной техники Громов Геннадий Юрьевич — доцент; Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, кафедра вычислительной техники Сборник трудов молодых ученых и сотрудников кафедры ВТ 12 ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ УДК 004.4'СИСТЕМА СТАТИЧЕСКОГО АНАЛИЗА ИСХОДНОГО КОДА SALSA А. В. Жермаль, С. М. Кляус Исследованы особенности документирования программного кода и архитектуры программных систем. Рассмотрена система статического анализа исходного кода SALSA, являющаяся инструментальным средством для автоматизированного анализа и документирования исходного кода, ее текущая реализация и возможности, а также перспективы применения.

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

Введение По мнению Д. Спинеллиса, исходный код программных продуктов можно считать информационной средой для описания операций и сохранения знаний в выполняемой форме [1].

Задача статического анализа кода заключается в извлечении этих знаний с целью отладки и усовершенствования кода.

Актуальность этой задачи в последнее время сильно возрастает из-за увеличивающихся объемов исходных кодов, с одной стороны, и трудностей контроля соответствия исходных кодов и заявленной архитектуры программного обеспечения — с другой. Об этом, например, говорится в очерке «Повесть о двух системах: сказка для современных программистов» [2].

Задача статического анализа исходных кодов распадается на две подзадачи:

— выявление потенциальных ошибок программного обеспечения, а также его формальная верификация. Этот процесс автоматизирован — примером инструментальных средств, предоставляющих эти возможности, являются lint в Unix и sparse в Linux, а также ряд коммерческих продуктов, таких как PVS Studio;

— собственно анализ кода (code comprehension). Эта задача пока, к сожалению, может решаться только вручную, однако и для нее разработан ряд инструментальных средств:

cscope и ctags, а также графические среды SourceInsight и OpenGrok — последний, например, позволяет перемещаться по элементам исходных кодов, как по ссылкам в web-браузере.

К сожалению, этот подход малопригоден для крупных систем, содержащих миллионы строк кода, таких как ядро Linux, поскольку требует от программиста большого объема рутинной работы и приводит к появлению неточностей при формальном описании кода.

Таким образом, в настоящей работе нами была поставлена цель реализации автоматизированной системы статического анализа исходного кода SALSA (Static Automatic Linux Source Analyzer). Задача специалиста, занимающегося статическим анализом кода, в этом случае сводится к написанию анализатора — программы, обходящей дерево исходных кодов и по заданным критериям выдающей полученную информацию в виде текстового отчета или графических диаграмм.

Процесс статического анализа исходного кода При выборе языка, на основе которого реализуется система, использовались следующие ключевые критерии:

— быстрота разработки, так как SALSA является вспомогательным инструментальным средством и время его разработки желательно уменьшить;

Сборник трудов молодых ученых и сотрудников кафедры ВТ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ — возможность интеграции языка сценариев, предназначенного для написания анализаторов;

— наличие библиотек для построения лексических анализаторов и парсеров.

В качестве языка программирования был выбран высокоуровневый язык Python, нацеленный на быстроту разработки. В качестве языка сценариев используется сам язык Python, в качестве библиотеки разбора исходных кодов — pycparser (поддерживает язык C) [3], основанная на библиотеке лексического анализатора Lex и генератора парсеров Yacc PLY. В нее были внесены незначительные доработки, связанные со специфичным макроязыком, используемым в исходниках ядра Linux.



Ключевой момент при реализации статического анализа исходных кодов — построение абстрактных синтаксических деревьев (AST,

Abstract

Syntax Tree) [4] исходного кода. При этом исходный код на языке высокого уровня преобразуется в древовидную структуру, а задача анализа, в свою очередь, сводится к обходу узлов этого дерева (в pycparser для этого предназначен класс Visitor, т.е. посетитель).

Пример представления исходного кода для следующего листинга представлен на рис. 1.

int main() { int i = 2;

printf("2 + 2 = %d\\n", i + 2);

return 0;

} Таким образом, библиотека pycparser выделяет синтаксические конструкции, представляя каждую в виде узла дерева. Связи устанавливаются в соответствии с приоритетом операторов и последовательностью программы.

Функция int main() Тело Вызов Определение Возврат функции функции int i = printf Операция + i Рис. 1. Пример абстрактного синтаксического дерева Пусть существует некоторая программа, использующая модель переходов между состояниями [1].

int state = STATE_IDLE;

...

if(condition) state = STATE_EXECUTE;

Сборник трудов молодых ученых и сотрудников кафедры ВТ 14 ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ Для выявления фрагментов программы, в которых происходит переход между состояниями, можно использовать регулярные выражения, однако получить информацию, при каких условиях происходит переход, затруднительно. В случае анализа, основанного на AST, достаточно реализовать простейший алгоритм (для случаев тернарного оператора : и инструкции switch он несколько усложняется).

цикл каждый Узел в AST:

если Узел.Тип == ПРИСВАИВАНИЕ и Узел.ПравЗнач == "state" то Условие = Узел.НайтиРодителя("if", "else") печать Узел.НомерСтроки, Условие конец если конец цикл При этом возникает другая проблема — значительный объем анализируемых исходных кодов. Она решается путем параллельной обработки файлов с исходными кодами, а также построением индексов, аналогично индексам в базах данных, охватывающих все AST и, как следствие, упрощающих поиск информации.

Процесс статического анализа был описан в виде диаграммы потоков данных (рис. 2).

Рис. 2. Диаграмма системы SALSA в потоках данных Диспетчер обходит дерево исходных кодов и выбирает из пула поток, который будет обрабатывать соответствующий файл. Парсер, в свою очередь, выполняет предобработку файла и строит на его основе абстрактное синтаксическое дерево, записываемое в репозиторий. Постобработчики выполняют анализ полученного AST-дерева и строят соответствующие индексы наименований типов, функций и т.д. После того как все файлы исходных кодов проанализированы, можно использовать анализатор, обходящий AST-деревья и их узлы и генерирующий соответствующий отчет.

Сборник трудов молодых ученых и сотрудников кафедры ВТ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ Тестирование Классической задачей статического анализа исходного кода является построение деревьев вызовов callgraph, протестировать рассмотренную систему можно, построив такой анализатор. Благодаря возможности писать сценарии, использующие данные, полученные посредством статического анализа кода, авторы настоящей работы реализовали анализатор HotPath.

На основе построенного графа вызовов этот анализатор создает SystemTap-скрипт (SystemTap — система динамической трассировки в операционной системе Linux) [5], который позволяет определять, какие ветки вызовов задействованы наиболее часто, и выявлять «горячие» пути исполнения исходного кода (отсюда и название анализатора). Использование только SystemTap в этом случае не позволило бы однозначно ответить на вопрос, какие вызовы связаны с поступлением запросов в систему, а какие — с обработкой их внутри системы Directory Entry Cache.

Скрипт запускался на виртуальной машине VirtualBox 4.0, система Debian 6 с версией ядра 2.6.38. Нагрузка на систему Directory Entry Cache была сгенерирована посредством команды «find /». Наиболее «горячие» пути, выявленные в процессе работы скрипта, представлены в таблице.

Выявленные при тестировании «горячие» пути Число вызовов Вызывающая функция Вызываемая функция 24 381 d_lookup do_lookup 30 109 dput fput 55 686 dput link_path_walk 55 705 d_lookup do_lookup 103 729 dput path_put Заключение В работе продемонстрированы возможности автоматизированного анализа исходного кода на примере ядра Linux. Использовались количественные характеристики, связанные с профилированием ядра, однако в перспективе рассматривается возможность разработки анализаторов SALSA, позволяющих также получать сведения об архитектуре программного обеспечения, в частности, осуществлять:

— поиск параллелизма по данным в исходных кодах;

— выявление паттернов проектирования в исходном коде;

— разделение низкоуровневых и высокоуровневых компонентов программы.

Исходники системы SALSA доступны на странице проекта Google Code:

.

ЛИТЕРАТУРА 1. Спинеллис Д. Анализ программного кода на примере проектов Open Source / Под ред.

С. Мейерса. М.: Изд. дом «Вильямс», 2004. 528 с.

2. Идеальная архитектура. Ведущие специалисты о красоте программных архитектур / Под ред.

Д. Спинеллиса, Г. Гусиоса. М.: Символ-Плюс, 2010. 528 с.

3. pycparser [Электронный ресурс]: (последняя дата обращения 01.11.2011).





4. Abstract syntax tree [Электронный ресурс]: (последняя дата обращения 11.11.2011).

5. SystemTap [Электронный ресурс]: .

Сборник трудов молодых ученых и сотрудников кафедры ВТ 16 ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ Сведения об авторах Жермаль Александр Владиславович — студент; Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, кафедра вычислительной техники; E-mail zhermal@gmail.com Кляус Сергей Михайлович — студент; Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, кафедра вычислительной техники; E-mail: myautneko@gmail.com Сборник трудов молодых ученых и сотрудников кафедры ВТ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ УДК 004.031.РАЗРАБОТКА СИСТЕМЫ МУЗЫКАЛЬНОЙ ПОДСВЕТКИ М. А. Авхименя Представлен проект создания музыкальной подсветки каталога Аббе для музея оптики НИУ ИТМО. Рассмотрена структура аппаратного и программного обеспечения. Описаны специально разработанные для данной системы алгоритмы извлечения звуковой (музыкальной) информации и ее преобразования.

Ключевые слова: аудиовизуализация, синтез цвета, встроенные системы, извлечение музыкальной информации, система подсветки.

Введение Перед разработчиками встроенных вычислительных систем зачастую встает задача музыкальной визуализации, одной из таких задач было создание музыкальной подсветки каталога Аббе (см. рисунок), расположенного в музее оптики НИУ ИТМО.

Аппаратные и программные средства Аппаратная часть системы разработана фирмой ЛМТ. Под каждым стеклом находится светодиодная линейка, подключенная к контроллеру. Контроллеры объединены при помощи витой пары в сеть, подключаемую к концентратору, который, в свою очередь, подключается через USB-порт к компьютеру. Задачей автора настоящей статьи являлась разработка программного обеспечения (ПО), позволяющего формировать изображение при помощи светодиодных линеек в соответствии с воспроизводимым в данный момент звуковым рядом. Для работы с графикой и вывода звука использовалась библиотека SFML, для выполнения быстрого преобразования Фурье — FFTW [1], для чтения и декодирования аудиофайлов — libsndfile.

Сборник трудов молодых ученых и сотрудников кафедры ВТ 18 ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ Извлечение звуковой (музыкальной) информации Для работы с музыкальной информацией необходимо сначала получить амплитудновременную (в данном случае — набор аудиосэмплов музыкального файла), а затем амплитудночастотную характеристику (АЧХ). При помощи связки библиотек SFML и libsndfile было реализовано последовательное чтение аудиосэмплов из файла, а для получения АЧХ из данных аудиосэмплов использовалась библиотека FFTW. После получения АЧХ на основании размера массива и частоты сэмплирования определяются элементы массива, в которых расположены амплитуды частот, близкие к частотам полутонов. Дальнейшая обработка заключается в отслеживании пиков и проверке превышения предела чувствительности, а также в преобразовании значения амплитуды в значение яркости. В результате образуется массив данных, представляющий звучащие в данный момент полутона, получив этот массив, можно приступать к формированию изображения.

Преобразование высоты тона в цвет Первым, кто провел аналогию между высотой звука и цветовым тоном, был Исаак Ньютон [2]. Следуя тому, что в одной октаве содержится семь нот, он разбил непрерывный спектр на семь цветов. Однако следует учесть, что данный вариант обоснован по большей части эстетически, так как до сих пор не доказана прямая зависимость между высотой звука и тоном цвета. При работе над данным проектом использовать метод Ньютона было бы самым очевидным решением, однако следует помнить, что решение подобных задач это деятельность не только научно-практическая, но одновременно и творческая. В связи с этим было решено не ограничиваться какими-либо жесткими рамками и максимально разнообразить режимы работы системы. Так как равномерно темперированный строй [3] является доминирующим в современной музыке, то решено было отказаться от разбиения цветового спектра на семь интервалов в соответствии с семью нотами, а разбить его на двенадцать частей в соответствии с количеством полутонов в октаве.

В дальнейшем было принято решение не привязывать музыкальные полутона к определенным цветовым тонам, ввиду того что человеку гораздо легче определить музыкальный интервал между двумя слышимыми звуками, чем их точную частоту [4]. Поэтому необязательно, например, всегда визуализировать ноту До красным цветом, а Ми — синим, достаточно выдерживать нужный интервал между ними в цветовом спектре. Смена основного цветового тона реализована путем его плавного изменения с течением времени.

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

Pages:     | 1 || 3 | 4 |   ...   | 14 |










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.