-
Notifications
You must be signed in to change notification settings - Fork 2
exam02
-
Понятия информации, данных, знаний. Средства онтологического описания интернет-ресурсов (OWL).
-
Технологии автоматического тестирования и непрерывной интеграции в разработке программных средств.
Выполнили: Герасименко С.А. ИДМ-22-01, Баркан А.И. ИДМ-22-04, Гришин А.А. ИДМ-22-05, Горынин И.Д. ИДМ-22-06, Плаксунов Г.В. ИДМ-22-07
Данные - информация, представленная в формализованном виде, пригодном для передачи, интерпретации или обработки с участием человека или автоматическими средствами
Информация - осознанные сведения об окружающем мире, которые являются объектом хранения, преобразования, передачи и использования.
Знания –это зафиксированная и проверенная практикой обработанная информация, которая использовалась и может многократно использоваться для принятия решений; это вид информации, которая хранится в базе знаний и отображает знания специалиста в конкретной предметной области. Знания – это интеллектуальный капитал.
Язык веб - онтологий (OWL) - язык описания онтологий для семантической паутины. OWL предназначен для тех случаев, когда содержащаяся в документах информация должна быть обработана приложениями. OWL может использоваться, чтобы явно представлять значения терминов и отношения между этими терминами в словарях. Такое представление терминов и их взаимоотношений называют онтологией.
Язык OWL позволяет описывать классы и отношения между ними, присущие веб-документам и приложениям. В основе языка — представление действительности в модели данных «объект — свойство». OWL пригоден для описания не только веб-страниц, но и любых объектов действительности. Каждому элементу описания в этом языке (в том числе свойствам, связывающим объекты) ставится в соответствие URI.
Обычно онтологии строятся из экземпляров, понятий, атрибутов и отношений.
- Экземпляр (индивид) — элементы самого нижнего уровня. Главной целью онтологий является именно классификация экземпляров, и хотя их наличие в онтологии не обязательно, но как правило они присутствуют. Конкретные объекты, интересующие в области знаний.
- Понятия — абстрактные наборы, коллекции объектов.
- Атрибуты — каждый объект может иметь необязательный набор атрибутов позволяющий хранить специфичную информацию.
- Отношения — позволяют задать зависимости между объектами онтологии.
RDF (Resource Description Framework) язык описания метаданных ресурсов, главной его целью является представление утверждений в виде одинаково хорошо воспринимаемом как человеком, так и машиной.
OWL обеспечивает три различных по выразительности диалекта, спроектированных для использования отдельными сообществами разработчиков и пользователей. Каждый из этих диалектов - расширение его более простого предшественника, и в том, что касается выразительных возможностей, и в том, что касается возможностей производимых заключений.
- OWL Lite поддерживает тех пользователей, которые нуждаются, прежде всего, в классификационной иерархии и простых ограничениях.
- OWL DL поддерживает тех пользователей, которые хотят максимальной выразительности без потери полноты вычислений (все заключения гарантировано будут вычисляемыми). OWL DL включает все языковые конструкции OWL с ограничениями вроде разделения типа (класс не может быть частным свойством, а свойство не может быть индивидом или классом). OWL DL так назван из-за его соответствия дескриптивной логике, дисциплине, в которой изучен именно разрешаемый фрагмент логики первого порядка. OWL DL была спроектирована, чтобы поддержать существующий сегмент бизнеса, занимающийся дескриптивной логикой, и иметь желательные вычислительные свойства для систем рассуждения.
- OWL Full предназначается для пользователей, которые хотят максимальную выразительность и синтаксическую свободу RDF без вычислительных гарантий.
Структура OWL-онтологии Любая онтология имеет заголовок и тело. В заголовке содержится информация о самой онтологии (версия, примечания), об импортируемых онтологиях. За заголовком следует тело онтологии, содержащее описания классов, свойств и экземпляров.
На данный момент актуальной считается вторая версия языка OWL, в которой определяются следующие разновидности:
- OWL 2 DL предназначен для пользователей, которым нужна максимальная выразительность при сохранении полноты вычислений (все логические заключения, подразумеваемые той или иной онтологией, будут гарантированно вычислимыми) и разрешаемости (все вычисления завершатся за определенное время). OWL DL включает все языковые конструкции OWL, но они могут использоваться только согласно определенным ограничениям (например, класс может быть подклассом многих классов, но не может сам быть представителем другого класса). OWL DL так назван из-за его соответствия дескрипционной логике — дисциплине, в которой разработаны логики, составляющие формальную основу OWL. Существует три подмножества OWL DL, называемые «профилями»:
1.1. OWL EL, предназначенный для использования в приложениях с большим количеством свойств и классов. На EL-онтологиях основные алгоритмы логического вывода гарантированно завершаются за полиномиальное время.
1.2. OWL QL, особенно полезный для онтологий, содержащих множество индивидов. В этом профиле основной акцент приходится на обеспечение высокой скорости запросов к данным — они отрабатывают за логарифмическое время.
1.3. OWL RL предназначен для запуска алгоритмов, основанных на языках правил. Включает отличный от EL набор средств и позиционируется как язык, позволяющий повысить выразительность существующих RDFS-онтологий.
- OWL 2 Full предназначен для пользователей, которым нужна максимальная выразительность и синтаксическая свобода RDF без гарантий вычисления. Например, в OWL Full класс может рассматриваться одновременно как собрание индивидов и как один индивид в своём собственном значении. OWL Full позволяет строить такие онтологии, которые расширяют состав предопределённого (RDF или OWL) словаря. Маловероятно, что какое-либо программное обеспечение будет в состоянии осуществлять полную поддержку каждой особенности OWL Full.
- В первой версии языка также присутствовало подмножество OWL Lite, призванное ограничить выразительность языка и повысить скорость алгоритмов. В новой версии стандарта OWL Lite отсутствует.
2. Технологии автоматического тестирования и непрерывной интеграции в разработке программных средств.
Непрерывная интеграция (Continuous Integration, CI) и непрерывная поставка (Continuous Delivery, CD) представляют собой культуру, набор принципов и практик, которые позволяют разработчикам чаще и надежнее развертывать изменения программного обеспечения. CI/CD — это одна из DevOps-практик. Она также относится и к agile-практикам: автоматизация развертывания позволяет разработчикам сосредоточиться на реализации бизнес-требований, на качестве кода и безопасности.
Непрерывная интеграция — это методология разработки и набор практик, при которых в код вносятся небольшие изменения с частыми коммитами. И поскольку большинство современных приложений разрабатываются с использованием различных платформ и инструментов, то появляется необходимость в механизме интеграции и тестировании вносимых изменений.
С технической точки зрения, цель CI — обеспечить последовательный и автоматизированный способ сборки, упаковки и тестирования приложений. При налаженном процессе непрерывной интеграции разработчики с большей вероятностью будут делать частые коммиты, что, в свою очередь, будет способствовать улучшению коммуникации и повышению качества программного обеспечения.
Непрерывная поставка начинается там, где заканчивается непрерывная интеграция. Она автоматизирует развертывание приложений в различные окружения: большинство разработчиков работают как с продакшн-окружением, так и со средами разработки и тестирования.
Инструменты CI/CD помогают настраивать специфические параметры окружения, которые конфигурируются при развертывании. А также CI/CD-автоматизация выполняет необходимые запросы к веб-серверам, базам данных и другим сервисам, которые могут нуждаться в перезапуске или выполнении каких-то дополнительных действий при развертывании приложения.
CI/CD-конвейеры предназначены для организаций, которым необходимо часто вносить изменения в приложения с надежным процессом поставки. Помимо стандартизации сборки, разработки тестов и автоматизации развертываний мы получаем целостный производственный процесс по развертыванию изменений кода. Внедрение CI/CD позволяет разработчикам сосредоточиться на улучшении приложений и не тратить силы на его развертывание.
Автоматизация тестирования — это методика автоматической проверки и утверждения программного продукта, например веб-приложения. Она позволяет удостовериться, что продукт соответствует установленным стандартам качества в отношении оформления кода, функциональности (бизнес-логики) и удобства пользователя.
Существуют разные методики тестирования.
- Модульное тестирование: проверка работы отдельных модулей кода, например функций.
- Интеграционное тестирование: проверка способности нескольких фрагментов кода работать вместе без нежелательных последствий.
- Сквозное тестирование: проверка приложения на соответствие ожиданиям пользователя.
- Глубокое тестирование: неструктурированный подход к анализу многочисленных компонентов приложения с точки зрения пользователя для выявления функциональных и визуальных проблем. Раньше все тестирование выполнялось вручную. До создания инструментов автоматического тестирования это был медленный, затратный и ненадежный процесс.
Автоматическим тестированием называют применение программных инструментов для автоматизации ручных процессов проверки и утверждения программного продукта с участием человека. Большинство современных проектов разработки ПО, в которых используются методики Agile и DevOps, с самого начала включают автоматическое тестирование.
Многие используют фича-флаги (feature flag) — механизм для включения и выключения функционала в рантайме. Функционал, который еще находится в стадии разработки, оборачивается фича-флагами и развертывается из master-ветки в продакшн, но отключается до тех пор, пока не будет полностью готов к использованию. По данным недавнего исследования 63 процента команд, использующих фича-флаги, говорят об улучшении тестируемости и повышении качества программного обеспечения. Для работы с фича-флагами есть специальные инструменты, такие как CloudBees Rollout, Optimizely Rollouts и LaunchDarkly, которые интегрируются в CI/CD и позволяют выполнять конфигурацию на уровне фич.
Для уменьшения трудоемкости тестирования разрабатываются и применяются средства автоматизации, позволяющие:
- увеличить скорость выполнения тест-кейсов;
- снизить влияние человеческого фактора в процессе их выполнения;
- минимизировать затраты при многократном выполнении тест-кейсов;
- выполнять тест-кейсы, непосильные человеку ввиду сложности, скорости и других причин;
- собирать, хранить и обрабатывать большие объемы данных.
Так как основной целью является сборка более качественного продукта, то все усилия направлены на то, чтобы большинство его функционала было покрыто автоматизированными тестами. Так можно гарантировать, что проект не уйдет в регрессию при внесении новых изменений. Все технические шаги выполняются командами разработчиков и специалистами из отдела непрерывной интеграции.
Статическое тестирование позволяет найти ошибки, не запуская проект. Это значит, что можно перенести часть проверок на компьютер специалиста и выполнять их перед добавлением изменений в общий репозиторий. Поэтому данный вид разделяется на две части:
- Тестирование локально.
- Тестирование на сервере.
Методы динамического анализа программ позволяют с высокой точностью находить ошибочное поведение программ в связи с тем, что ошибки обнаруживаются в процессе исполнения программы и имеются входные данные, на которых возможно воспроизведение ошибочного поведения программы. В то же время методы динамического анализа программ обладают низкой производительностью обнаружения ошибок, связанной с проблемой взрывного роста количества путей для анализа при проведении исчерпывающего анализа программы.
С целью скомпенсировать переход к ретроинжинирингу и индуцируемый им переход к технологической идеологии KISS («Keep It Short and Simple» = «Делай короче и проще»; принципы проектирования, при которых простота системы декларируется в качестве основной цели \ ценности разработки), среди разработчиков замещающих технологий и их потребителей, в частности, было целесообразно использовать повышение эвристической ценности конкретных измерений за счет комплексирования дескрипторов. Согласно принципу KISS, система не усложнялась, и все требования сгруппированы в базовом классе тестирования. Ниже представлен основной код данного класса.
ИСТОЧНИКИ