Разработка информационной системы для автоматического поиска данных по показателям надежности

Нагрузочное тестирование - один из методов определения работоспособности и производительности разработанного программного приложения. Парсинг - процесс сопоставления линейной последовательности лексем естественного языка с его формальной грамматикой.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 05.08.2018
Размер файла 1022,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Введение

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

Актуальность разработки:

? Поиск показателей надежности вычислительных элементов является одним из важных этапов при проектировании вычислительных систем. Автоматизация этого процесса поможет сократить время на поиск актуальных показателей надежности по компонентам в сети Интернет.

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

? Автоматизация поиска показателей надежности. Автоматический парсинг информации в сети превышает по производительности поиск вручную в несколько раз.

? Оптимизация процесса. Автоматизированная система предоставляет выборку полученных данных из сети Интернет - пользователь может удостоверится в правильности данных проанализировав источник информации, который обработала система.

Назначение автоматизированной системы.

Система автоматического поиска данных по показателям надежности нацелена на поиск численных характеристик надежности вычислительных элементов компьютерной системы. Система предназначена для автоматизированного поиска, таких показателей как наработка на отказ (MTBF), интенсивность отказов (FIT), средняя наработка до отказа (MTTF) по названию компьютерного компонента. К функционалу системы относится:

? Поиск типа заданного компонента;

? Поиск и автоматический парсинг показателей надежности компонента с помощью поисковых систем;

? Вывод и обработка полученных результатов.

1.?Терминология

В данной работе используется терминология связанная с автоматическим поиском данных, а также показателями надежности для вычислительных элементов.

Синтаксический анализ (или разбор, жарг. парсинг < англ. parsing) в лингвистике и информатике -- процесс сопоставления линейной последовательности лексем (слов, токенов) естественного или формального языка с его формальной грамматикой. Результатом обычно является дерево разбора (синтаксическое дерево). Обычно применяется совместно с лексическим анализом. [1].

Поисковый робот («веб-паук», [w?b-kr??l?], web-crawler ) -- программа, являющаяся составной частью поисковой системы и предназначенная для перебора страниц Интернета с целью занесения информации о них в базу данных поисковика. По принципу действия паук напоминает обычный браузер. Он анализирует содержимое страницы, сохраняет его в некотором специальном виде на сервере поисковой машины, которой принадлежит, и отправляется по ссылкам на следующие страницы. [2]

DOM (от англ. Document Object Model -- «объектная модель документа») -- это независящий от платформы и языка программный интерфейс, позволяющий программам и скриптам получить доступ к содержимому HTML-, XHTML- и XML-документов, а также изменять содержимое, структуру и оформление таких документов.
Web scraping (извлечение веб-данных) - это очистка данных, используемая для извлечения данных с веб-сайтов. Программное обеспечение для извлечения и анализа веб-страниц может обращаться к World Wide Web напрямую с помощью протокола передачи гипертекста или через веб-браузер. Хотя web-scraping может выполняться вручную пользователем программного обеспечения, термин обычно относится к автоматизированным процессам, реализованным с помощью веб-паука или парсера. Это процесс извлечения, при котором конкретные данные собираются и копируются из Интернета, как правило, в центральную локальную базу данных или электронную таблицу для последующего поиска или анализа. [3]
Показатели надёжности количественно характеризуют, в какой степени данному объекту присущи определенные свойства, обуславливающие надёжность.

2. Методы автоматического поиска данных

Данные в сети Интернет часто имеют смешанный характер и для определения их структуры и анализа приходится применять различные алгоритмы поиска данных и синтаксического анализа (парсинга).

2.1 Этапы веб парсинга

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

1. Получение и анализ исходного кода веб-страницы. Исходный код в виде html-файла захватывается программой для дальнейшей обработки. Ключевыми метками в нем служат текстовая информация и html-теги, по которым осуществляется анализ информации в дальнейшем.

2. Извлечение данных из исходного кода страницы. Разбор html-страниц начинается с построения иерархического дерева из html-тегов и текста веб-страницы. Для этого применяются различные библиотеки и фреймворки для парсинга, а также регулярные выражения. В языке Python для веб-скроулинга предусмотрен фреймворк Scrapy и HTML-парсер Beautiful Soap. Обработка результата. Обработанные данные заносятся в базу данных для дальнейшего анализа.

Процесс обхода страниц сайта также может следовать по определенному алгоритму:

? Иерархический обход сайта. При обходе парсером гиперссылки каждой страницы заносятся в базу данных. Затем парсер последовательно обходит страницы страницы сайта в иерархической последовательности.

? Обход сайта исходя из закономерностей формирования веб-страниц. Парсер последовательно обходит страницы url-адрес которых сформирован по определенными правилам.

2.2 Методы парсинга контента

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

Как правило, есть два способа получения доступа к интересующему вас контенту:

1. Использование API. В этом случае владельцы предоставляют доступ к сайту пользователям, поскольку они заинтересованы в подписках, новостях и т. д.

2. Доступ к сайту без использования API. В этом случае используется парсинг контента.

Метод использования API удобен для пользователя, так как вся полученная информация будет хорошо структурирована. Например, она может быть в формате XML или JSON.

Второй метод заключается в использовании парсинг системы. Это трудоемкий метод для разработчиков. Полученные данные с сайта автоматически обрабатываются с использованием как искусственного интеллекта, так и семантического анализа. Такие программы включают в себя сложные алгоритмы поиска и анализа. [5]

2.3 Метод копирования / вставки

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

Плюсы:

? Качественный поиск

? Высокоскоростной поиск, за счет отсеивания ненужной информации.

Минусы:

? Необходимость наличия определенных знаний и навыков для поиска в Интернете, а также понимания целевой области.

? Люди уязвимы для психологического и физического воздействия. Это может негативно повлиять на стабильность и качественность работы.

? Такой метод ручного поиска позволяет обеспечить ограниченное количество результатов (до нескольких сотен в день).

2.4 Регулярные выражения и совпадение в тексте

Это простой, но в то же время высокоэффективный метод извлечения информации из Интернета. Он становится еще более эффективным в сочетании с инструментами командной строки UNIX-системы (например, «curl»). Регулярные выражения присутствуют во многих языках программирования. В нашем случае регулярные выражения реализованы на языке Python.

Такой метод позволяет найти контент на сайте по определенным тегам или фразам, получить данные содержащие в себе ключевые слова. Этот метода выполняется автоматически настроенной системой парсинга.

Плюсы:

? Если есть опыт в составлении регулярных выражений, этот метод.

? Регулярное выражение позволяет избавиться от незначительных ошибок, не повреждая основное содержимое (например, очистить данные от остатка HTML-кода).

? Регулярные выражения поддерживаются большинством языков программирования. Что действительно здорово, так это то, что синтаксис регулярных выражений практически не изменяется независимо от языка программирования. Это позволяет переносить проекты на более производительные языки программирования (например, с PHP на Ruby).

Минусы:

? Регулярные выражения могут стать трудной задачей для людей, которые никогда не имели с ними опыта. Трудности могут возникнуть при интеграции решений одного языка в другой или при миграции проектов на другие языки программирования.

? Регулярные выражения сложны с точки зрения чтения и анализа.

? В случае изменения целевого ресурса, кода HTML или добавления некоторого тега вам придется изменить регулярное выражение.

2.5 HTTP-запросы

Используя этот метод, вы сможете получать динамические и статические страницы, отправляя HTTP-запросы на удаленные серверы. Этот метод использует сокеты и сортирует все ответы по заранее написанному алгоритму. [7].

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

Плюсы:

? Этот метод позволяет получить исходный код страницы с помощью HTTP-запросов.

? Огромное количество ответов сервера, которые ограничены только его ресурсами и скоростью Интернета.

Минусы:

? Необходимость дальнейшей обработки ответов сервера. Результаты могут содержать избыточные данные.

? Большинство веб-сайтов имеют защиту от таких «роботов». Для обхода защиты можно создавать дополнительные служебные данные в заголовке HTTP-запроса, хотя не все сайты могут быть обмануты таким образом.

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

? При отправке запроса удаленный сервер может быть отключен. В результате есть вероятность получения большого количества ошибок типа TimeOut.

2.6 Анализ DOM-структуры сайта

Динамический контент является одной из основных проблем веб-парсинга. Как его решить? В этом случае нам понадобится любой веб-браузер, способный воспроизводить динамический контент и скрипт на стороне клиента. Кроме того, вы можете использовать различные плагины. Они довольно хороши, но не настолько эффективны. С другой стороны, используя такие плагины, вы можете забыть о cookies, регулярных выражениях, HTTP и т.д.

Плюсы:

? Возможность получить динамический контент.

? Автоматизация. Благодаря автоматизации вы сможете получить качественный контент в больших количествах.

? Возможность реализовать коммерческие решения.

Минусы:

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

2.7 Методы с использованием искусственного интеллекта

Предположим, что вам нужно спарсить большое количество различных веб-сайтов.

Все эти сайты написаны на разных языках и построены на различных каркасах. В таких ситуациях было бы разумнее начать разрабатывать систему с использованием искусственного интеллекта. Этот метод основан на теории, что все веб-сайты можно разделить на классы и группы с аналогичной структурой и используемыми технологиями.

Плюсы:

? Такая система позволяет получать высококачественный контент с большого количества сайтов. Данные обработанные таким методом являются более достоверными, так как проверяются и сравниваются из разных источников.

? Этот метод позволит нормализовать результат, полученный из разных ресурсов, в соответствии с вашей структурой базы данных.

? Несмотря на то, что эта система нуждается в постоянной поддержке (с точки зрения мониторинга), она по-прежнему требует значительных помех в коде.

Минусы:

? Сложная реализация системы требует глубокого знания математики, статистики и алгоритмов.

? Высокие затраты на разработку.

? Высокие расходы на поддержку и обучение системы.

3. Показатели надежности

Показатели надежности характеризуют какой-либо объект (в данном случае компьютерный компонент) по его свойствам и характеристикам, которые обуславливают его надежность. Показатели надежности делятся на два типа: единичные и комплексные показатели. Единичные показатели надежности являются количественной характеристикой только одного показателя надежности, в то время как комплексные показатели включают в себя несколько свойств надежности. К единичным показателям относятся:

? Вероятность безотказной работы

? Средняя наработка на отказ

? Интенсивность отказов

? Назначенный ресурс

? Назначенный срок службы

К комплексным показателям надежности относятся:

? коэффициент готовности

? коэффициент оперативной готовности

? коэффициент технического использования

? коэффициент планируемого применения

? коэффициент сохранения эффективности

Компьютерные компоненты часто маркируются следующими показателями надежности:

? Средняя наработка на отказ (MTBF).

? Средняя наработка до отказа (MTTF).

Показатели надежности MTBF и MTTF используют в своем определении термин “отказ”. Очевидно, что если система не работает, она потерпела неудачу - это можно считать отказом системы . Но как насчет системы, работающей в деградированном режиме, например, массив рейдов, который восстанавливается? Или системы, которые намеренно выводят из режима работы?

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

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

3.1 Средняя наработка до отказа (MTTF)

Первой метрикой, которую мы должны понимать, является время, когда система находится в работе. Часто упоминаемый как «время безотказной работы» в ИТ-индустрии, время, в течение которого система находится в сети между отключениями или сбоями, можно рассматривать как «время до отказа» для этой системы.

Большинство вычислительных элементов и компьютерных систем время от времени отказывают, поэтому важно думать о надежности в статистических показателях. Производители часто проводят тестирование, чтобы определить, насколько надежным будет устройство, и иногда сообщают об этих результатах покупателям. Это хороший признак надежности устройства, если эти тесты изготовителя достаточно точны. К сожалению, многие поставщики ссылаются на показатель «средняя наработка на отказ» (MTBF), что не совсем верно, как мы вскоре увидим.

Отметим также, что «MTTF» часто превышает ожидаемый срок службы и долговечность устройства. Обычный жесткий диск может маркироваться показателем надежности MTTF равному 1 000 000 часов или более 100 лет. Но не стоит ожидать, что данный жесткий диск прослужит так долго. Фактически, вероятность замены диска до его неисправности значительно выше, чем его замена после отказа.

3.2 Среднее время ремонта (MTTR)

Среднее время ремонта - среднее время, необходимое на восстановление работоспособности устройства и его ремонта после отказа. Данная характеристика подходит для ремонтопригодных устройств.

3.3 Средняя наработка на отказ (MTBF)

Наиболее распространенная метрика, связанная с отказом, также в основном используется неправильно. «Средняя наработка на отказ» или «MTBF» означает количество времени (выражается в часах), которое проходит между одним сбоем и следующим. Математически это сумма MTTF и MTTR, общее время, необходимое для отказа устройства и его ремонта.

Например, дисковый массив с MTTF 96 часов и MTTR в 72 часа будет иметь показатель MTBF равный 168 часам. Но многие диски приходят в негодность только однажды, без возможности восстановления. Поэтому производители редко указывают MTTR-характеристику и вместо этого используют MTBF в качестве количественного показателя долговечности устройства. Среднюю наработку на отказ можно рассчитать работы устройства между отказами, то есть показывает, какая наработка в среднем приходится на один отказ. Выражается в часах.

,

где ti -- наработка до наступления отказа i; m -- число отказов.

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

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

MTBF Calculator - это программа для расчета показателей надежности MTBF и FR, по различным входным данным зависящим от характеристик устройства. Разработана компанией ALD Services и распространяется как условно-бесплатное программное обеспечение с лимитом на количество расчетов показателей MTBF.

В MTBF Calculator есть возможность рассчитать показатели надежности для отдельных электронных компонентов, таких как оперативная память, транзисторы и диоды, так и для более комплексных механических компонентов - фильтры, пропеллер вентилятора, пружины. Для более точного анализа и расчета MTBF входные данные могут содержать: температуру помещения, технические характеристики устройства (например, объем памяти для оперативной памяти), а также предпочтительный метод для расчета параметра MTBF. Стартовый экран программы изображен на рис. 1.

программный парсинг лексема формальный

Рис. 1. Стартовый экран программы MTBF Calculator

Из плюсов данной программы можно отметить большое количество входных данных, которые помогут выявить показатели надежности элемента точно под проектируемый объект, а также возможность провести расчет различными методами. Однако, MTBF Calculator сложен для понимания рядовому пользователю и возможности рассчитать параметры надежности исключительно по названию компонента не представляет. Это можно смело отнести к минусам, как и условную-бесплатность программы - стоит ограничение на 5 расчетов в день. Для снятия ограничений необходимо купить полную версию программы.

Рис. 2. Экран расчетов MTBF Calculator

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

5. Практическая часть

В данной главе рассматривается спроектированное приложение для автоматического поиска данных по показателям надежности элементов вычислительной техники. Разработка системы включает в себя несколько этапов:

? Анализ информации в сети Интернет по показателям надежности компьютерных компонентов;

? Создание базы данных с параметрами MTBF и MTTF для основных типов элементов вычислительной техники;

? Разработка системы веб-кроулинга и парсинга для поиска параметров надежности;

? Обработка полученной информации;

? Необходимые расчеты и вывод результата.

5.1 Поиск и анализ информации по показателям надежности

Показатели надежности элемента вычислительной техники не всегда публикуются компанией-производителем в сети Интернет, из-за чего найти значение MTBF для отдельно взятого компонента по его названию не всегда предоставляется возможным. Если же эти данные указываются компанией-производителем, то в их достоверности также можно усомниться. Во-первых, для качественного тестирования надежности элемента должно пройти достаточно времени, чтобы оценить наработку на отказ, а во-вторых, значение MTBF может быть завышено в маркетинговых целях. Исходя из этого, найти достоверный независимый тест показателей надежности, становится трудновыполнимой задачей.

Поиск показателей надежности можно осуществлять на специализированных форумах, посвященных компьютерному “железу”, а также на сайтах производителей. В качестве ключевых слов можно использовать название компонента и название показателей надежности в поисковой системе. Например, для того чтобы определить MTBF-характеристику материнской платы Intel® Server Board -S1200V3RP, придется воспользоваться официальным форумом сайта intel.com. В pdf-файле указаны значения MTBF для компонентов материнской платы Intel® Server Board -S1200V3RP. Как видно из рис. 3 MTBF материнской платы при температуре 40°C составляет 52400 часов. Таким же способом можно воспользоваться при поиске показателей надежности и для других элементов вычислительной техники, однако это займет довольно продолжительное время, так как MTBF-характеристика указана не для всех компонентов.

Рис. 3. Показатели надежности для Intel® Server Board -S1200V3RP

5.2 База данных типовых элементов вычислительной техники

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

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

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

Таблица 1. База данных элементов вычислительной техники

Название

Тип

Цена

MTBF

intel core i7 8700k

Процессор

20790

50000

kingston a400

Жесткий диск

7800

70000

В качестве стандартных значений показателей надежности для типовых элементов, можно использовать данные из исследования System Reliability Center, где приводятся значения MTBF для компьютерных компонентов.

5.3 Парсинг и веб-кроулинг система для поиска показателей надежности

Для успешного поиска характеристик вычислительного элемента по его названию необходимо применять различные методики парсинга и поиска в сети Интернет. [8] Поиска показателей надежности делится на несколько этапов:

1. Валидность введенного названия. Входные данные проверяются на валидность и содержание, по возможности указывается тип искомого элемента.

2. Выполняется поиск элемента в базе данных. При отрицательном результате, поиск производится в сети Интернет. На данном этапе необходимо определить тип компонента, чтобы сузить масштабы поиска в сети. Для определения типа компонента применяется парсинг страниц популярных сайтов компьютерной техники и интернет-магазинов, например сайты компаний NCIX и NewEgg.

3. После того как определен тип элемента, в работу включается веб-кроулер. Его задача найти как можно больше страниц с описанием вычислительного элемента и его характеристик. В то же время каждая страница обрабатывается с целью нахождения показателей надежности соответствующих искомому компоненту. Для этих задач служит стек из нескольких python-библиотек: grab, beautiful soup, scrapy.

4. Обработка полученных данных.

5.4 Определение типа вычислительного элемента

Для успешного определения типа элемента недостаточно иметь только базу данных. Так как рынок компьютерных компонентов достаточно широк, актуальную информацию необходимо искать на сайтах производителей и в интернет-магазинах. Самыми большими онлайн маркетами компьютерных элементов считаются американский сайт NewEgg (https://www.newegg.com/) и канадский магазин NCIX (https://www.ncix.com/). Из российских сайтов можно выделить Yandex Market (https://market.yandex.ru/) - это сервис, который собирает актуальные товары из российских интернет-магазинов и имеет большую базу данных содержащую, как компьютерные компоненты так и различные вычислительные элементы.

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

Рассмотреть парсинг типа элемента можно на примере сайта NewEgg и python-библиотеке Beautiful Soup. [10] Пользователь вводит название элемента, для которого необходимо найти показатели надежности. Данные посылаются и обрабатываются в поисковой системе сайта, для дальнейшей обработки страницы с результатом парсером. Так как html-теги содержат названия и тип элементов, представленных на сайте, следовательно не составляет труда распарсить эти данные и использовать их в дальнейшей обработке. На рис. 4 представлен фрагмент сайта и его исходный код, который содержит ссылку на раздел с типизированными компонентами и внутренний атрибут title=”SSDs”. Именно он и характеризует тип элемента.

Рис. 4. Сайт NewEgg и его исходный код

Аналогичным образом систему парсинга типов вычислительных элементов можно настроить и для любого другого сайта. Полученные данные рекомендуется заносить в базу данных для оптимизации работы парсера. На рис. 5 представлен стартовый экран программы, на котором пользователь вводит название элемента, а парсер пытается определить тип элемента и найти его на сайте NewEgg.

Рис. 5. Стартовый экран программы

Рис. 6. Выполнение поиска компонента, определение его типа и вывод среднего показателя MTBF

5.5 Парсинг данных из поисковых систем

Поисковые системы такие как Google или Yandex предоставляют своё API для разработчиков с некоторыми ограничениями. Например, Google ограничивает количество запросов в день до 2000, после превышения лимита IP адрес пользователя блокируется. Но для поиска показателя надежности одного вычислительного элемента хватает и 10 запросов в Google. Парсинг система сохраняет все гиперссылки с десяти страниц результатов и их описание (около 100 ссылок) и больше не посылает запросы к API Google. В качестве поискового запроса посылаются теги, содержащие название устройства, его тип и ключевые слова. Так например, при поиске показателей надежности для жесткого диска Kingston A400, поисковый запрос будет выглядеть подобным образом: “Kingston A400 ssd mtbf mttf” - где, “Kingston A400” - название, “SSD” - тип компонента, “MTTF MTBF” - показатели надежности которые необходимо найти. Уже на первой странице поиска заметно, что третий результат содержит MTBF характеристику равную 1 миллион часов. Но этот результат требует подтверждения. Для этого проводится сравнение найденного результата с общим показателем для компонентов этого типа из базы данных либо повторное нахождение похожего результата в поисковой системе. Но такое быстрое нахождение результата встречается только для популярных компьютерных компонентов и определенных типов товаров, когда производители специально указывают характеристики надежности в маркетинговых целях. Показатель MTBF часто указывают в характеристиках внешних жестких дисков, в то время как найти показатели надежности для процессоров семейства Intel i3 не предоставляется возможным как ручным способом, так и автоматической парсинг системой.

Рис. 7. Поиск показателей надежности в поисковой системе Google

На риc. 8 представлен скриншот работы парсера по поиску характеристик MTBF компонента в поисковой системе Google и вывод стандартного значения MTBF для типа элемента.

Рис. 8. Работа системы парсинга показателя MTBF

Так как, численные показатели надежности указываются производителями компьютерных элементов не так часто, имеет смысл искать отзывы об этих компонентах в интернет-магазинах и обзорах в сети. В поисковую систему посылаются дополнительные ключевые слова, которые могут фигурировать в описании компонента и характеризующие его надежность. В роли таких слов могут выступать слова: “надежность”, “работоспособность”, “отказоустойчивость”, “качество”, а также их английские слова аналоги. Дополнительно к этому можно добавлять рейтинг товара и отзывы о нём на популярных интернет-магазинах. Таким образом, после неудачного поиска MTBF-показателя, система парсинга получает рейтинг и ссылки на отзывы вычислительного элемента. Для процессора “Intel core i3” численных показателей надежности парсинг система выявить не смогла, но по ключевому слову “reliability” первой ссылкой в поисковой системе выдает рейтинг товара, который можно получить из исходного кода страницы. А средний показатель MTBF характеристики для этого процессора можно получить из базы данных по типу компонента.

Рис. 9. Рейтинг компонента

Таким образом, при завершении работы система выведет рейтинг компонента, ссылку на отзывы о нём и примерные характеристики MTBF, MTTF для типовых вычислительных элементов, при отсутствии точного результата от производителя в сети.

5.6 Обработка полученной информации

После парсинга контента из поисковой системы, информация обрабатывается для дальнейшего вывода и анализа. Если результат какого-либо количественного показателя надежности для вычислительного элемента был успешно найден в сети Интернет, он записывается в базу данных для оптимизации работы парсера. Также, рассчитываются параметры FIT по показателю MTBF.

5.7 Алгоритм парсинг-системы

Программа начинает свою работу с приветствия и предложения ввести пользователю название компонента для которого необходимо найти показатели надежности. Введенные данные проверяются на валидность и при успешном результате программа переходит к следующему этапу - поиску компонента в базе данных. Так как база данных содержит в себе только стандартные данные численных показателей надежности для типовых элементов и ранее добавленные записи для компонентов, показатели которых были найдены в сети, вполне вероятно, что поиск по базе данных не увенчается успехом. В случае неудачи, система переходит к активному парсингу и поиску типа элемента и его показателей в сети Интернет. Парсинг типа элемента и дополнительных тегов производится на крупном интернет-магазине NewEgg, а поиск показателей надежности в поисковых системах Google и Yandex. При успешном поиске, на экран выводятся данные о показателях MTBF, FIT и гиперссылки на найденную информацию. Если информация о компоненте не была найдена, пользователю выводится информация о примерных характеристиках надежности по типу компонента. Блок схема алгоритма представлена на рис. 10.

Рис. 10. Блок-схема алгоритма программы

5.8 Проектирование веб-приложения

Клиентское приложение требует определенной настройки среды для запуска python-приложения на машине пользователя. Для запуска системы, необходимо установить Python 2.7 и менеджер пакетов pip. Однако, такое приложение может функционировать как сервис по поиску показателей надежности расположенном на удаленном веб-сервере и имеющим доступ по сети. Такое веб-приложение будет иметь некоторые ограничения связанные с пропускной способностью канала, мощностью серверной машины, а также лимитом запросов в поисковые системы. Для развертывания веб-приложения может быть использован фреймворк Django. Концепт такого веб приложения представлен на рис. 11.

Рис. 11. Концепт веб-приложения

6. Результаты тестирования

6.1 Функциональное тестирование

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

Таблица 2. Функциональное тестирование

Компонент системы

Функциональная часть

Результат тестирования

Время обработки, с

Ввод

Валидация ввода

Валидность определяется регулярным выражением, работоспособность проверена

0.01

Парсер

Поиск типа компонента

Выводится результат и гиперссылка на тип компонента

1-2

База данных

Поиск компонента в базе данных

Вывод характеристик компонента

0.1

Парсер

Парсинг и анализ информации из поисковой системы

Обработка результатов и вывод количественных показателей надежности и гиперссылки на контент

2-4

6.2 Нагрузочное тестирование

Нагрузочное тестирование проводится для определения работоспособности и производительности спроектированной системы. Для этого на вход посылается список из названий компьютерных компонентов, для которых система должна найти характеристики MTBF из сети Интернет или базы данных. Запрос считается успешно обработанным, если время обработки запроса не превышает 10 секунд и MTBF-характеристика для запрошенного компонента была найдена.

Заключение

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

В первой части работы были описаны методы автоматического поиска и синтаксического анализа данных, применяемые при проектировании автоматизированных систем нацеленных на поиск данных в сети Интернет, а также рассмотрены показатели надежности вычислительных элементов.

Во второй части работы было описано решение задачи поиска показателей надежности компьютерных компонентов с помощью автоматизированной системы спроектированной в рамках данной работы. Такая система используется поисковые системы, методы веб-краулинга и синтаксический анализ для поиска показателей надежности и характеристик вычислительных элементов. Преимуществом данной системы можно считать её автономность, быстроту поиска и объем выборки результатов. К недостаткам автоматизированной системы можно отнести ограничение количества запросов в поисковую систему, некачественность результатов. В дальнейшем desktop-приложение планируется перенести на веб-сервер для доступа к автоматизированной системе посредством сети Интернет.

Литература

1. Иорданская Л.Н. Автоматический синтаксический анализ. - Directmedia, 2016.

2. Карпова Г.Д. и др. Компьютерный синтаксический анализ: описание моделей и направлений разработок //Итоги науки и техники (серия “Вычислительные науки”). - 1991. - Т. 6.

3. Speaks S. Reliability and MTBF overview //Vicor reliability engineering. - 2010.

4. Nasukawa T. Parsing method and system for natural language processing : пат. 5761631 США. - 1998.

5. Castillo C. Effective web crawling //Acm sigir forum. - Acm, 2005. - Т. 39. - №. 1. - С. 55-56.

6. Najork M., Heydon A. High-performance web crawling //Handbook of massive data sets. - Springer, Boston, MA, 2002. - С. 25-45.

7. Nair V. G. Getting Started with Beautiful Soup. - Packt Publishing Ltd, 2014.

Приложение

Файл Search.py

import requests

from lxml import html

from bs4 import BeautifulSoup

import re

from string import *

from google import google

import sys

import codecs

if sys.stdout.encoding != 'cp850':

sys.stdout = codecs.getwriter('cp850')(sys.stdout, 'strict')

if sys.stderr.encoding != 'cp850':

sys.stderr = codecs.getwriter('cp850')(sys.stderr, 'strict')

def print_msg(msg, spaces=False):

if spaces:

print ''

print msg

print ''

else:

print msg

def print_line():

print'\n__________________________________________________________\n'

def find_rec(p_from,p_subs,p_ind):

l_next=find(p_from,p_subs,p_ind)

if l_next==-1:

return []

else:

return [l_next]+find_rec(p_from,p_subs,l_next+1)

def load_db(f):

db = {}

db_f = open(f, 'r')

for line in db_f:

words = line.split()

db[words[0].lower()] = words[1]

db_f.close()

print_msg('Database loaded', True)

return db

def google_search(name, extra_tags=None):

def_tags = "MTBF MTTF"

num_page = 1

search_query = name + " " + def_tags

search_results = google.search(search_query, num_page)

first_res = search_results[0]

return search_results

def hasNumbers(inputString):

return any(char.isdigit() for char in inputString)

def parse_mtbf(search_results):

none_results = True

print_msg('', True)

for i in range(0,len(search_results)):

if "MTBF" in search_results[i].description and hasNumbers(search_results[i].description):

print_msg(search_results[i].description.encode('ascii', 'ignore'), True)print_msg(search_results[i].link.encode('ascii', 'ignore'))print_msg(u'', True)

none_results = False

if none_results:

print_msg('None results fot MTBF characteristic')

def start_logo():

print_msg('',True)

print_msg('MTBF search”)

logo = “MTBF search”

print(logo)

def valid_input();

name = raw_input()

return name

def find_type_on_newegg(name):

url = "https://www.newegg.com/Product/ProductList.aspx?Submit=ENE&DEPA=0&Order=BESTMATCH&Description=" + name + "&ignorear=0&N=-1&isNodeId=1"

r = requests.get(url)

print_msg("search for component...", True)

soup = BeautifulSoup(r.content, "html.parser")

url_new = str(soup.find('div','items-view is-grid' ))

i = url_new.find('item-title')

j = url_new.find('"', i+19)

url_new=url_new[i+18:j]

print_msg('Url to this component on NewEgg:')

print_msg(url_new, True)

r2 = requests.get(url_new)

soup2 = BeautifulSoup(r2.content, "html.parser")

soup2 = str(soup2.find('ol', id="baBreadcrumbTop"))

comp_type = find_rec(soup2, 'title', 0)

return comp_type

start_logo()

db = load_db('mtbf.db')

name = valid_input()

comp_type = find_type_on_newegg(name)

print_msg('Name: ' + name)

print_msg('Tags:' )

pattern = re.compile(r'\w+')

for i in range(1,len(comp_type)):

j = soup2.find('"',comp_type[i]+8)

comp_type[i] = soup2[comp_type[i]+7:j].lower()

comp_type[i] = pattern.findall(comp_type[i])[0]

print(comp_type[i])

result = {k: db[k] for k in db.viewkeys() & set(comp_type)}

print_line()

if result:

print_msg('MTBF of this components type equals ' + str(result.values()[0]) + ' hours', True)

print_line()

print_msg('Search MTBF data in Google ... ')

search_result = google_search(name)

parse_mtbf(search_result)

Размещено на Allbest.ru

...

Подобные документы

  • Инфологическая модель предметной области "Курьерская служба". Разработка интерфейса пользователя. Функциональное тестирование приложения "Грузоперевозки", его стресс-тестирование. Порядок загрузки данных, проверка работоспособности информационной системы.

    дипломная работа [6,6 M], добавлен 10.10.2016

  • Описание технологии asp.net. Страницы веб-приложения, тестирование системы. Описание функциональной, динамической модели системы. Диаграммы вариантов использования, последовательности, база данных приложения. Реализация программы, интерфейс, тестирование.

    курсовая работа [3,2 M], добавлен 30.01.2013

  • Разработка приложений баз данных Delphi. Построение концептуальной модели, атрибуты сущностей и связей. Проектирование приложения для ведения базы данных телефонных номеров с возможностью поиска по всем имеющимся полям. Тестирование программного средства.

    курсовая работа [641,7 K], добавлен 17.08.2013

  • Особенности аналитической и эмпирической моделей надежности программных средств. Проектирование алгоритма тестирования и разработка программы для определения надежности ПО моделями Шумана, Миллса, Липова, с использованием языка C# и VisualStudio 2013.

    курсовая работа [811,5 K], добавлен 29.06.2014

  • Проверка работоспособности и производительности стандартно настроенного web-сервера в условиях нагрузочного тестирования. Определение критического количества одновременных запросов для данной конфигурации сервера. Нагрузка на скриптовой язык PHP.

    лабораторная работа [1,6 M], добавлен 23.03.2015

  • Выбор методологии проектирования и разработка информационной системы "Расчёт зарплаты" для предприятия ОАО РТП "Авторемонтник". Архитектурное проектирование базы данных информационной системы и разработка её интерфейса. Тестирование программного модуля.

    дипломная работа [2,3 M], добавлен 25.05.2014

  • Этапы разработки и отладки приложения "Помощь почтальону". Составление сопроводительной документации. Выбор средств и методов программирования. Анализ проектных данных. Особенности создания базы данных, СУБД. Тестирование созданного программного продукта.

    контрольная работа [2,5 M], добавлен 17.12.2014

  • Описание процесса разработки информационной системы. Анализ тестирования и выявления ошибок разработанного модуля. Обследование объекта автоматизации и оформление документации по эксплуатации программы. Сущность экспортирования и импортирования данных.

    отчет по практике [1,3 M], добавлен 20.05.2017

  • Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.

    курсовая работа [81,7 K], добавлен 18.08.2014

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

    курсовая работа [254,7 K], добавлен 25.03.2011

  • Проектирование функциональной и информационной моделей приложения с помощью AllFusion Process Modeler 7. Декомпозиция контекстной диаграммы "Обучение и тестирование". Логическая модель обучающей информационной системы. Тестирование программного продукта.

    курсовая работа [2,9 M], добавлен 18.01.2017

  • Проектирование базы данных, информационной подсистемы PLC-Tester, модуля тестирования и web-приложения. Разработка логической структуры программного продукта и общие требования к техническому обеспечению. Запуск программы и описание тестовых прогонов.

    дипломная работа [3,2 M], добавлен 30.06.2011

  • Разработка объектно-ориентированной модели железнодорожной информационной системы с использованием языка UML. Диаграмма последовательности для варианта "Забронировать билет". Главная особенность диаграммы кооперации. Генерация программного кода С++.

    курсовая работа [2,8 M], добавлен 30.06.2015

  • Анализ методов и средств моделирования мультиагентных схем. Тестирование лабораторных работ "Climatechange", "ElFarol" и "Pagerank". Экспериментальное тестирование и отладка программного комплекса. Оценка качества разработанного программного продукта.

    дипломная работа [4,5 M], добавлен 12.08.2017

  • Разработка информационной системы "Салон портьер" для автоматизации деятельности менеджера фирмы, занимающейся пошивом портьер на заказ. Создание и обоснование проекта базы данных. Создание запросов, форм, отчетов. Тестирование программного приложения.

    курсовая работа [4,6 M], добавлен 07.02.2016

  • Назначение и возможности разработанного приложения для контроля активности сетевых и периферийных устройств предприятия. Язык программирования Java. Распределенные многоуровневые приложения. Структура базы данных, интерфейс разработанного приложения.

    курсовая работа [1,0 M], добавлен 16.12.2012

  • Автоматизация системы снятия показаний счетчиков энергии. Разработка базы данных и клиентского приложения для структур жилищно-коммунального хозяйства, занимающихся составлением квитанций. Описание предметной области. Тестирование клиентского приложения.

    курсовая работа [953,3 K], добавлен 01.09.2016

  • Использование хеширования для поиска данных. Хеширование и хеш-таблицы. Способы разрешения конфликтов. Использование средств языка программирования в работе с хеш-таблицами. Описание разработанного приложения. Структура программы. Инструкция пользователя.

    курсовая работа [1,1 M], добавлен 19.08.2016

  • Определение системы m линейных уравнений с n неизвестными. Математическая модель задачи. Анализ входных и выходных данных. Требования к надежности разрабатываемой программы. Структурная диаграмма программного модуля. Разработка блок-схем и тестирование.

    курсовая работа [162,0 K], добавлен 28.08.2012

  • Разработка в среде Delphi приложения "Записная книжка" для ввода и корректировки информации, поиска данных. Выбор состава технических и программных средств. Текст программы, ее описание и тестирование. Основные условия программы, требования к компьютеру.

    курсовая работа [565,7 K], добавлен 08.12.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.