Разработка программного обеспечения на основе поиска

редактировать

Разработка программного обеспечения на основе поиска (SBSE ) применяет метаэвристику методы поиска, такие как генетические алгоритмы, моделирование отжига и запретный поиск на проблемы разработки программного обеспечения. Многие виды деятельности в разработке программного обеспечения могут быть обозначены как проблемы оптимизации. Оптимизация методы исследования операций, такие как линейное программирование или динамическое программирование, часто непрактичны для крупномасштабной разработки программного обеспечения проблемы из-за их вычислительной сложности или их предположений о структуре проблемы. Исследователи и практики используют методы метаэвристического поиска, которые налагают небольшие предположения на структуру проблемы, чтобы найти почти оптимальные или «достаточно хорошие» решения.

Проблемы SBSE можно разделить на два типа:

  • проблемы оптимизации черного ящика, например, распределение людей по задачам (типичная задача комбинаторной оптимизации ).
  • проблемы белого ящика, при которых необходимо учитывать операции с исходным кодом.
Содержание
  • 1 Определение
  • 2 Краткая история
  • 3 Области приложения
    • 3.1 Разработка требований
    • 3.2 Отладка и обслуживание
    • 3.3 Тестирование
    • 3.4 Оптимизация программного обеспечения
    • 3.5 Управление проектами
  • 4 Инструменты
  • 5 Методы и технологии
  • 6 Приемлемость отрасли
  • 7 См. Также
  • 8 Ссылки
  • 9 Внешние links
Определение

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

Термин «приложение на основе поиска », напротив, относится к использованию технологии поисковых систем, вместо методов поиска в другом промышленном приложении.

Краткая история

Об одной из самых ранних попыток применить оптимизацию к проблеме разработки программного обеспечения сообщил Уэбб Миллер и Дэвид Спунер в 1976 г. в области тестирования программного обеспечения. В 1992 году С. Ксантакис и его коллеги впервые применили метод поиска к проблеме программной инженерии. Термин SBSE впервые был использован в 2001 г. Харманом и Джонсом. К 2013 году исследовательское сообщество выросло и насчитывало более 800 авторов, охватывающих примерно 270 организаций в 40 странах.

Области применения

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

Разработка требований

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

Отладка и обслуживание

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

Генетическое программирование, метод, вдохновленный биологией, который включает развитие программ за счет использования кроссовера и мутации, использовался для поиска исправлений программ путем изменения нескольких строк исходного кода. Программное обеспечение GenProg Evolutionary Program Repair исправило 55 из 105 ошибок примерно по 8 долларов каждая за один тест.

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

Тестирование

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

Оптимизация программного обеспечения

Использование SBSE в оптимизации программ или изменение части программного обеспечения, чтобы сделать его более эффективным с точки зрения скорости и использования ресурсов, было объект успешного исследования. В одном случае программа на 50 000 строк была генетически улучшена, что привело к ее ускорению в среднем в 70 раз. Недавняя работа Basios et al. показывает, что за счет оптимизации структуры данных Google Guava обнаружил улучшение времени выполнения на 9%, потребление памяти на 13% и улучшение использования ЦП отдельно на 4%.

Управление проектом

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

Инструменты

Инструменты, доступные для SBSE, включают OpenPAT. и EvoSuite и Coverage, инструмент измерения покрытия кода для Python

Методы и приемы

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

Принятие в отрасли

Как относительно новая область исследований, SBSE еще не получила широкого признания в отрасли.

Успешные применения SBSE в отрасли в основном можно найти в рамках тестирования программного обеспечения, где возможность автоматически генерировать случайные тестовые входные данные для обнаружения ошибок в большом масштабе привлекательна для компаний. В 2017 году Facebook приобрел программный стартап Majicke Limited, который разработал Sapienz, приложение для поиска ошибок на основе поиска.

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

Другая проблема заключается в том, что SBSE может сделать инженера-программиста ненужным.. Сторонники утверждают, что мотивация SBSE состоит в том, чтобы улучшить отношения между инженером и программой.

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-07 07:33:41
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте