Application of machine learning in software engineering: an overview

Today, software is one of the main technologies contributing to the development of society. Therefore, its quality is a major requirement for both the global software industry and software engineering, which deals with all aspects of improving the quality and reliability of software products at all...

Повний опис

Збережено в:
Бібліографічні деталі
Дата:2019
Автори: Moroz, O.H., Moroz, H.B.
Формат: Стаття
Мова:rus
Опубліковано: Інститут програмних систем НАН України 2019
Теми:
Онлайн доступ:https://pp.isofts.kiev.ua/index.php/ojs1/article/view/381
Теги: Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
Назва журналу:Problems in programming
Завантажити файл: Pdf

Репозитарії

Problems in programming
id pp_isofts_kiev_ua-article-381
record_format ojs
resource_txt_mv ppisoftskievua/88/95a788f21094c71b565775aa50adb088.pdf
spelling pp_isofts_kiev_ua-article-3812024-04-28T11:07:28Z Application of machine learning in software engineering: an overview Применение машинного обучения в программной инженерии: обзор Застосування машинного навчання в програмній інженерії: огляд Moroz, O.H. Moroz, H.B. software engineering; software; machine learning; neural networks; support vector machine; decision trees UDC 004.4(075.8) программная инженерия; программное обеспечение; машинное обучение; нейронные сети; машины опорных векторов; деревья решений УДК 004.4(075.8) програмна інженерія; програмне забезпечення; машинне навчання; нейронні мережі; машини опорних векторів; дерева рішень УДК 004.4(075.8) Today, software is one of the main technologies contributing to the development of society. Therefore, its quality is a major requirement for both the global software industry and software engineering, which deals with all aspects of improving the quality and reliability of software products at all stages of their life cycle. To solve software engineering problems, the use of artificial intelligence methods is becoming increasingly relevant. The article presents a brief description of machine learning methods such as artificial neural networks, support vector machine, decision trees, inductive logic programming and others. Also, examples of the application of these methods to solve some problems of forecasting and quality assessment in software engineering are presented, recommendations for applying machine learning algorithms to solving problems of software engineering are given. The review will be useful by researchers and practitioners as a starting point, because it identifies important and promising areas of research. This will ultimately lead to more effective solving of software engineering problems, providing better, more reliable and cost effective software products.Problems in programming 2019; 4: 92-110 В статье дается  краткое описание некоторых методов машинного обучения, таких как искусственные нейронные сети, машины опорных векторов, деревья решений, индуктивное логическое программирование, CBR и других, приводятся примеры применения этих методов для решения  проблем прогнозирования и оценки качества в программной инженерии, даются общие рекомендации по применению алгоритмов машинного обучения к задачам программной инженерии. Обзор будет полезен исследователям и практикам в качестве отправной точки, поскольку он обеспечивает важные будущие направления исследований. Это в конечном итоге приведет к более эффективному принятию решений в програм­мной инженерии, тем самым обеспечивая лучшие, более надежные и экономически эффективные программные продукты.Problems in programming 2019; 4: 92-110 Сьогодні програмне забезпечення є однією з основних технологій, що сприяють розвитку суспільства. Тому його якість є головною вимогою як для світової індустрії програмного забезпечення, так і програмної інженерії, яка займається всіма аспектами підвищення якості і надійності програмних продуктів на всіх етапах їх життєвого циклу. Для вирішення проблем програмної інженерії все актуальнішим стає застосування методів штучного інтелекту. У статті подано короткий опис методів машинного навчання, таких як штучні нейронні мережі, машини опорних векторів, дерева рішень, індуктивне логічне програмування та інші. Також наводяться приклади застосування цих методів для вирішення деяких проблем прогнозування та оцінки якості в програмній інженерії, даються рекомендації для застосування алгоритмів машинного навчання до розв’язання задач програмної інженерії. Огляд буде корисний дослідникам і практикам в якості стартової точки, оскільки він окреслює важливі та перспективні напрямки досліджень. Це зрештою призведе до ефективнішого вирішення проблем програмної інженерії, забезпечуючи кращі, надійніші та економічно вигідніші програмні продукти.Problems in programming 2019; 4: 92-110  Інститут програмних систем НАН України 2019-12-05 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/381 10.15407/pp2019.04.092 PROBLEMS IN PROGRAMMING; No 4 (2019); 92-110 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 4 (2019); 92-110 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 4 (2019); 92-110 1727-4907 10.15407/pp2019.04 rus https://pp.isofts.kiev.ua/index.php/ojs1/article/view/381/384 Copyright (c) 2019 PROBLEMS IN PROGRAMMING
institution Problems in programming
baseUrl_str https://pp.isofts.kiev.ua/index.php/ojs1/oai
datestamp_date 2024-04-28T11:07:28Z
collection OJS
language rus
topic software engineering
software
machine learning
neural networks
support vector machine
decision trees
UDC 004.4(075.8)
spellingShingle software engineering
software
machine learning
neural networks
support vector machine
decision trees
UDC 004.4(075.8)
Moroz, O.H.
Moroz, H.B.
Application of machine learning in software engineering: an overview
topic_facet software engineering
software
machine learning
neural networks
support vector machine
decision trees
UDC 004.4(075.8)
программная инженерия
программное обеспечение
машинное обучение
нейронные сети
машины опорных векторов
деревья решений
УДК 004.4(075.8)
програмна інженерія
програмне забезпечення
машинне навчання
нейронні мережі
машини опорних векторів
дерева рішень
УДК 004.4(075.8)
format Article
author Moroz, O.H.
Moroz, H.B.
author_facet Moroz, O.H.
Moroz, H.B.
author_sort Moroz, O.H.
title Application of machine learning in software engineering: an overview
title_short Application of machine learning in software engineering: an overview
title_full Application of machine learning in software engineering: an overview
title_fullStr Application of machine learning in software engineering: an overview
title_full_unstemmed Application of machine learning in software engineering: an overview
title_sort application of machine learning in software engineering: an overview
title_alt Применение машинного обучения в программной инженерии: обзор
Застосування машинного навчання в програмній інженерії: огляд
description Today, software is one of the main technologies contributing to the development of society. Therefore, its quality is a major requirement for both the global software industry and software engineering, which deals with all aspects of improving the quality and reliability of software products at all stages of their life cycle. To solve software engineering problems, the use of artificial intelligence methods is becoming increasingly relevant. The article presents a brief description of machine learning methods such as artificial neural networks, support vector machine, decision trees, inductive logic programming and others. Also, examples of the application of these methods to solve some problems of forecasting and quality assessment in software engineering are presented, recommendations for applying machine learning algorithms to solving problems of software engineering are given. The review will be useful by researchers and practitioners as a starting point, because it identifies important and promising areas of research. This will ultimately lead to more effective solving of software engineering problems, providing better, more reliable and cost effective software products.Problems in programming 2019; 4: 92-110
publisher Інститут програмних систем НАН України
publishDate 2019
url https://pp.isofts.kiev.ua/index.php/ojs1/article/view/381
work_keys_str_mv AT morozoh applicationofmachinelearninginsoftwareengineeringanoverview
AT morozhb applicationofmachinelearninginsoftwareengineeringanoverview
AT morozoh primeneniemašinnogoobučeniâvprogrammnojinženeriiobzor
AT morozhb primeneniemašinnogoobučeniâvprogrammnojinženeriiobzor
AT morozoh zastosuvannâmašinnogonavčannâvprogramníjínženerííoglâd
AT morozhb zastosuvannâmašinnogonavčannâvprogramníjínženerííoglâd
first_indexed 2024-09-16T04:08:39Z
last_indexed 2024-09-16T04:08:39Z
_version_ 1818568291845668864
fulltext Формальні методи розробки програмного забезпечення © О.Г. Мороз, Г.Б. Мороз, 2019 92 ISSN 1727-4907. Проблеми програмування. 2019. № 4 УДК 004.4(075.8) https://doi.org/10.15407/pp2019.04.092 О.Г. Мороз, Г.Б. Мороз ПРИМЕНЕНИЕ МАШИННОГО ОБУЧЕНИЯ В ПРОГРАММНОЙ ИНЖЕНЕРИИ: ОБЗОР В статье дается краткое описание некоторых методов машинного обучения, таких как искусственные нейронные сети, машины опорных векторов, деревья решений, индуктивное логическое программиро- вание, CBR и других, приводятся примеры применения этих методов для решения проблем прогнози- рования и оценки качества в программной инженерии, даются общие рекомендации по применению алгоритмов машинного обучения к задачам программной инженерии. Обзор будет полезен исследова- телям и практикам в качестве отправной точки, поскольку он обеспечивает важные будущие направле- ния исследований. Это в конечном итоге приведет к более эффективному принятию решений в про- граммной инженерии, тем самым обеспечивая лучшие, более надежные и экономически эффективные программные продукты. Ключевые слова: программная инженерия, программное обеспечение, машинное обучение, нейронные сети, машины опорных векторов, деревья решений. Введение Сегодня достижение успеха в про- мышленной, военной, коммерческой, со- циальной и многих других сферах дея- тельности человека немыслимо без при- менения различных компьютерных си- стем, функционирование которых невоз- можно без соответствующего програм- много обеспечения (ПО), ставшего основ- ной технологией для развития современ- ного общества и являющегося неотъемле- мой, но небезопасной частью повседнев- ной жизни. Человечество знает множество неприятных историй, произошедших из-за проблем с ПО, к примеру, неудачная посадка спускаемого модуля на Марс в 1999 г. обошлась США потерей $165 млн. или нецелевой запуск ракет «Патриот» в системе обороны США в 1991 г., что при- вело к гибели мирного населения. Поэто- му в настоящее время проблема качества – это главная проблема для мировой ин- дустрии ПО. Аспектами повышения каче- ства и надежности программных продук- тов на всех этапах их жизненного цикла, начиная с подготовительных работ и заканчивая снятием их из обращения, занимается отдельная дисциплина − программная инженерия (software engine- ering, SE). Основные проблемы разработки и поддержки больших программных систем в изменяющейся среде были изложены в классической статье Ф. Брукса [1] еще в далеком 1987 году. В ней же отмечалось, что многие из классических проблем раз- работки программных продуктов обуслов- лены их существенной сложностью, кото- рая нелинейно увеличивается с ростом размера ПО. Спустя более 30 лет разнооб- разие, размеры и сложность ПО много- кратно увеличились, что привело к появ- лению множества новых чрезвычайно сложных проблем, возникающих на всех этапах его жизненного цикла [2]. Уже в конце XX столетия возникла острая необ- ходимость в поиске альтернативы суще- ствующим технологиям разработки и ана- лиза ПО. Обнадеживающие результаты в преодолении некоторых из возникающих трудностей дало применение в программ- ной инженерии методов искусственного интеллекта [3–8]. В своей основной речи на ежегодной конференции Американской ассоциации искусственного интеллекта в 1992 году О. Селфридж призывал к актив- ному использованию для решения проблем программной инженерии методов машин- ного обучения (Machine Learning, ML) – одной из важных подобластей искусствен- ного интеллекта [9]. Последние два десятилетия показа- ли, что многие задачи по разработке и со- провождению ПО могут быть сформули- рованы как проблемы обучения и алгорит- мы ML являются жизнеспособной альтер- нативой существующим подходам к реше- Формальні методи розробки програмного забезпечення 93 нию многим проблем SE. Чтобы лучше использовать методы ML в качестве инс- трументов для решения реальных проблем SE, необходимо знать, как эти проблемы, так и условия, при которых имеющиеся в нашем распоряжении методы ML могут быть наиболее эффективно применены. Остальная часть статьи организова- на следующим образом: первый раздел посвящен краткому обзору наиболее важ- ных, с точки зрения SE, методов ML; во втором разделе рассматриваются вопросы применения ML для решения проблем прогнозирования и оценки качества ПО; в третьем разделе даются некоторые реко- мендации по применению алгоритмов ML к задачам SE, далее приведены основные выводы. 1. Подходы к машинному обучению В качестве подобласти искусствен- ного интеллекта ML имеет дело с тем, как создавать компьютерные программы, ко- торые улучшают свою производительность при выполнении определенной задачи с помощью опыта [8]. Поскольку многие за- дачи разработки или сопровождения SE зависят от некоторой функции (или функ- ций, отображений или моделей) для про- гнозирования, оценки, классификации, ди- агностики, обнаружения, приобретения, понимания, генерации или преобразования определенного качественного или количе- ственного аспекта программного артефак- та или программного процесса, примене- ние ML в SE сводится к тому, как в про- цессе обучения найти такую целевую функцию (отображение или модель), кото- рую можно использовать для выполнения задач SE. В зависимости от используемых ме- тодов обучения целевая функция может быть представлена в различных форма- лизмах языка гипотез (например, деревья решений, битовые строки или правила). Когда целевая функция не определена яв- но, но учащийся может сгенерировать ее значения для заданных входных запросов (например, в случае обучения на основе экземпляров), то говорят, что функция определена неявно. При изучении целевой функции на заданном наборе обучающих данных ее обобщение может быть либо усердным (на этапе обучения), либо ленивым (на этапе классификации). Усердное обучение мо- жет создать одну целевую функцию из всех данных обучения, в то время как ле- нивое обучение может принимать разные (неявные) функции для каждого запроса. Оценка целевой функции зависит от мно- гих факторов: точности прогнозирования, интерпретируемости, статистической зна- чимости, содержания информации и ком- промисса между ее сложностью и степе- нью соответствия данным [10]. Алгоритмы обучения в зависимости от чувствительности к изменениям данных обучения делятся на стабильные и неста- бильные [11]. Для нестабильных алгорит- мов небольшие изменения в обучающих данных приведут к тому, что алгоритмы будут генерировать существенно различ- ную выходную функцию. С другой сторо- ны, стабильные алгоритмы невосприимчи- вы к небольшим изменениям в данных [11]. Существует четыре основных типа машинного обучения [8, 12, 13]:  Контролируемое обучение (su- pervised learning): все входные и выходные данные помечены, и алгоритмы учатся предсказывать выходные данные из вход- ных данных, т. е. целевая функция изуча- ется на основе обучающих примеров ее входов и выходов.  Неконтролируемое обучение (unsupervised learning): все данные не по- мечены, и алгоритмы учатся присваивать структуру из входных данных. Пытается изучить шаблоны на входе, для которых нет доступных выходных значений. При- мером является кластеризация.  Частично контролируемое обу- чение (semi-supervised learning): некоторые данные помечены, но большинство из них немаркированы, (данные обучения вклю- чают в себя несколько желаемых результа- тов.) Может использоваться смесь контро- лируемых и неконтролируемых методов. Хорошим примером является фотоархив, в котором помечены только некоторые Формальні методи розробки програмного забезпечення 94 изображения (например, собака, кошка, человек), а большинство изображений не имеет маркировки.  Обучение с подкреплением (reinforcement learning): это наиболее об- щая форма обучения. В нем рассматрива- ется вопрос о том, как выучить последова- тельность действий, называемых стратеги- ей управления, из косвенной и отложенной информации о вознаграждении. Контролируемое обучение является наиболее зрелым и изученным типом обу- чения. Подавляющее большинство исполь- зуемых в SE методов ML принадлежат этому типу обучения. Далее приводится краткое описание основных методов обу- чения, имеющих отношение к данной ра- боте, в следующих группах:  деревья решений (decision trees, DT);  нейронные сети (neural networks, NN);  обучение на основе экземпля- ров (instance-based learning, IBL);  индуктивное логическое про- граммирование (inductive logic programming, ILP);  машины опорных векторов (support vector machines, SVM);  генетические алгоритмы (Genetic Algorithms, GA);  генетическое программирова- ние (genetic programming, GP);  байесовское обучение (Bayesian learning, BL); Организация различных методов обучения в группы в значительной степени находится под влиянием [8, 11]. Деревья решений Деревья решений, предложенные в [14, 15], состоят из листьев и ветвей, где листья представляют классификации, а ветви – соединения признаков, которые приводят к классификациям. Таким обра- зом, DT являются инструментом модели- рования принятия решений, который гра- фически отображает процесс классифика- ции заданных входных данных для задан- ных меток выходных классов. Внутренние узлы DT обозначают различные атрибуты, а ветви между узлами представляют воз- можные значения, которые эти атрибуты могут иметь в наблюдаемых выборках. В алгоритмах DT целевая функция определяется как дерево решений. Поиск в DT часто управляется мерой прироста ин- формации, основанной на энтропии, кото- рая показывает, сколько информации дает тест по атрибуту. Алгоритмы обучения DT часто имеют тенденцию к небольшим де- ревьям. Это усердный, контролируемый и нестабильный метод обучения, подвер- женный шумным данным, что является причиной переобучения. Он не может ис- пользовать априорные знания в процессе обучения. Тем не менее, он хорошо мас- штабируется с большими данными не- сколькими различными способами [11]. Деревья решений являются одним из самых популярных алгоритмов класси- фикации, применяемых в интеллектуаль- ном анализе данных и машинном обуче- нии. Наиболее востребованными алгорит- мами DT являются такие как ID3 (iterative dichotomiser 3), C4.5, C5, J48 и CART (classification and regression trees) [16–19]. Нейронные сети Каждая из миллиардов клеток нейронов человеческого мозга подобна крошечному компьютеру с чрезвычайно ограниченными возможностями. Искус- ственные NNs формируются из сотен или тысяч симулированных нейронов, со- единенных вместе подобно нейронам в мозге [20]. Модель нейрона показана на рисунке. входы x1 выход nj w1j j  S w2j wnj w3j функция активации qj x2 x3 xn веса целевая функция � порог� Рисунок. Нелинейная модель нейрона Формальні методи розробки програмного забезпечення 95 Нейронные сети, являясь мощным инструментом анализа данных, способна фиксировать и представлять сложные от- ношения ввода/вывода. Мотивацией для разработки технологии NN является со- здание искусственной системы, которая могла бы выполнять «интеллектуальные» задачи, подобные тем, которые выполня- ются человеческим мозгом. NNs подобно человеческому мозгу приобретают знания через обучение и хранят их в пределах межнейронных связей, известных как си- наптические веса [21]. Истинная сила и преимущество NN заключается в их способности представ- лять, как линейные, так и нелинейные от- ношения и изучать эти отношения непо- средственно из моделируемых данных [22]. Традиционные линейные модели про- сто неадекватны, когда речь идет о данных моделирования, содержащих нелинейные характеристики. Учитывая фиксированную структу- ру NN, обучение ее целевой функции рав- нозначно нахождению вектора весов со- единений, минимизирующего сумму квад- ратов ошибок, применяемых ко всем набо- рам данных. Поскольку вектор весов по существу определяет целевую функцию, то это делает ее очень трудной для чтения и интерпретации человеком. Нейронные сети – это усердный, контролируемый и нестабильный подход к обучению, который не может использовать предварительные знания. Популярным ал- горитмом для сетей прямой связи является Backpropagation, который принимает поиск с градиентным спуском и санкционирует индуктивное смещение гладкой интерпо- ляции между точками данных [8]. Среди других архитектур NN, применяемых в SE, выделим следующие: многослойный пер- септрон (multilayer perceptron, MLP) [23], сеть радиально базисных функций (radial basis function network, RBFN) [24], вероят- ностная нейронная сеть (probabilistic neural network, PNN) [25], cеть Элмана (Elman network, EN) [26], «самоорганизующаяся» каскадно-корреляционная нейронная сеть (Cascade correlation neural network, ССNN) [27], карта самоорганизующихся объектов (self-organising feature map, SOM) [28]. Обучение на основе экземпляров В машинном обучении IBL пред- ставляет собой семейство алгоритмов обу- чения, которые вместо выполнения явного обобщения сравнивают новые проблемные экземпляры с экземплярами, наблюдаемы- ми в процессе обучения, хранящиеся в па- мяти. По этой причине IBL иногда назы- вают обучением на основе памяти [29]. IBL – это типичный метод ленивого обу- чения в том смысле, что обобщение за пределы обучающих данных откладывает- ся до классификации невидимого случая. Кроме того, целевая функция явно неопре- делена; вместо этого учащийся возвращает значение целевой функции при классифи- кации данного невидимого случая. Значе- ние целевой функции генерируется на ос- нове подмножества обучающих данных, считающихся локальными для невидимого примера, а не на всех обучающих данных. Это равносильно аппроксимации другой целевой функции для отдельного невиди- мого примера. Это значительный отход от методов усердного обучения, когда одна целевая функция получается в результате того, что учащийся обобщает все данные обучения. Процесс поиска основан на ста- тистических рассуждениях и состоит в определении данных обучения, которые близки к данному невидимому случаю, и создании значения целевой функции на основе его соседей. Одним из преиму- ществ IBL по сравнению с другими мето- дами ML является его способность адап- тировать свою модель к ранее невидимым данным. Учащиеся на основе экземпляров могут просто сохранить новый экземпляр или выбросить старый. Наиболее известными алгоритмами IBL являются алгоритмы k-ближайших со- седей (K-nearest neighbors) [30] и рассуж- дения по прецедентах (Case-Based Reasoning, СBR) [31, 32]. Индуктивное логическое программирование Индуктивное логическое програм- мирование впервые упоминается в статье [33], где «индуктивное» употребляется в философском (предложение теории для объяснения наблюдаемых фактов), а не в Формальні методи розробки програмного забезпечення 96 математическом (доказательство свойства членов множества) смысле. Сегодня ILP – раздел машинного обучения, который ис- пользует логическое программирование как форму представления примеров, фоно- вых знаний и гипотез. Получив описания уже известных фоновых знаний и набор примеров, представленных как логическая база фактов, система ILP может породить логическую программу в форме гипотез, объясняющую все положительные приме- ры и ни одного отрицательного. Поскольку целевая функция в ILP определяется набо- ром правил (пропозициональных или пер- вого порядка), она легко поддается вос- приятию и интерпретации человеком. ILP позволяет использовать фоновые знания в процессе обучения и является усердным и контролируемым обучением. Наиболее из- вестными алгоритмами ILP являются FOIL [34, 35] и PROGOL [36]. Машины опорных векторов Предложенный В.Н. Вапником ме- тод SVM [37] представляет собой набор схожих алгоритмов обучения, использую- щихся для задач классификации и регрес- сионного анализа. Принадлежит семейству линейных классификаторов и может также рассматриваться как специальный случай регуляризации по А.Н. Тихонову. Являясь не вероятностным двоичным линейным классификатором, SVM, вместо того, что- бы изучать нелинейную целевую функцию непосредственно из данных во входном пространстве, использует функцию ядра (определенную в форме внутреннего про- изведения обучающих данных) для преоб- разования обучающих данных из входного пространства сначала в пространство объ- ектов большого размера F, а затем изучает оптимальный линейный разделитель (ги- перплоскость) в F. Функцию выбора реше- ния, определенную на основе линейного разделителя, можно использовать для классификации невидимых случаев. Функ- ция ядра играет ключевую роль в SVM. Она основывается только на подмножестве обучающих данных, называемых опорны- ми векторами. Модели SVM тесно связаны с ис- кусственными NN [38, 39]. Поэтому SVM можно использовать в качестве альтерна- тивного метода обучения для полиноми- альной, радиальной базисной функции и многослойных сетей персептрона с ис- пользованием функции ядра [40]. Генетические алгоритмы и генетическое программирование GA был разработан в [41] как аль- тернативный метод решения общих задач оптимизации с большими поисковыми пространствами. Он имеет то преимуще- ство, что ему не нужны предварительные знания, опыт или логика, связанные с кон- кретным решением проблемы. Основные идеи GA основаны на дарвиновской тео- рии эволюции, которая в сущности гово- рит о том, что генетические операции между хромосомами особей в конечном итоге приводят к выживанию сильнейших. Таким образом, в течение длительного пе- риода времени улучшается популяция осо- бей в целом. Целевая функция представля- ется в виде битовых строк. Процесс поиска начинается с совокупности исходных ги- потез. Посредством операций кроссинго- вера и мутации особи текущей популяции образуют новую популяцию с лучшими средними характеристиками. На каждом шаге итерации гипотезы в текущей попу- ляции оцениваются с учетом заданной степени пригодности, причем наиболее подходящие гипотезы выбираются в каче- стве членов следующего поколения. Про- цесс поиска заканчивается, когда некото- рая гипотеза имеет значение пригодности выше некоторого порога. Таким образом, процесс обучения по существу воплощен в поиске по пучку траектории с порождени- ем и проверкой вариантов [8]. Предложенное в [42] GP в машин- ном обучении используется для автомати- ческого создания или изменения программ с помощью GA. Выбор способа кодирова- ния программы в GA – один из основных вопросов в GP. Программа должна быть закодирована в таком виде, чтобы легко было автоматически вносить случайные изменения (оператор мутации) и объеди- нять два алгоритма в один (оператор скрещивания). Различают два способа ко- дирования: прямое и косвенное. В первом https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5 https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 Формальні методи розробки програмного забезпечення 97 случае GA работает с программой в явном виде, а во втором – GA работает не с са- мим кодом программы, а с правилами его построения, то есть GA работает с про- граммой, генерирующая нужную нам про- грамму. Байесовское обучение BL предлагает вероятностный под- ход к выводу, который основан на предпо- ложении, что интересующие величины определяются распределением вероятно- стей, и что оптимальные решения или классификации могут быть достигнуты путем рассуждения об этих вероятностях наряду с наблюдаемыми данными [8]. Ме- тоды BL на основе результатов учащегося могут быть разделены на две группы: те, которые дают наиболее вероятную гипоте- зу с учетом данных обучения, и те, кото- рые производят наиболее вероятную клас- сификацию нового экземпляра с учетом данных обучения. Таким образом, целевая функция явно представлена в первой груп- пе, но неявно определена во второй груп- пе. Одним из основных преимуществ явля- ется то, что BL учитывает предшествую- щее знание (в форме байесовских сетей доверия, априорных вероятностей для ги- потез-кандидатов или распределения веро- ятностей по наблюдаемым данным для возможной гипотезы). Классификация не- видимого случая получается посредством комбинированных предсказаний несколь- ких гипотез. Это также хорошо масштаби- руется с большими данными. BL – усерд- ный и контролируемый метод обучения, который не требующий поиска в процессе обучения. Хотя BL не имеет проблем с за- шумленными данными, у него возникают проблемы с небольшими наборами дан- ных. BL принимает смещение, основанное на принципе минимальной длины описа- ния, который предпочитает гипотезу h, ко- торая минимизирует длину описания h плюс длину описания данных, заданных h [8]. Среди популярных алгоритмов BL можно выделить следующие: максималь- ный апостериорный (maximum a posteriori (MAP)), оптимальный байесовский клас- сификатор (Bayes optimal classzjier), наив- ный байесовский классификатор (naive Bayes classijier), GIBBS [8, 11]. 2. Применение машинного обучения в программной инженерии В разработке ПО есть три категории объектов: процессы (наборы действий, свя- занных с ПО, такие как создание специфи- кации, детальное проектирование или те- стирование), продукты (артефакты, ре- зультаты, документы, являющиеся резуль- татом действия процесса, такие как доку- мент спецификации, проектный документ или сегмент кода) и ресурсы (объекты, не- обходимые для деятельности процесса, та- кие как персонал, программные средства или оборудование) [2, 43]. Здесь есть внутренние и внешние атрибуты для сущ- ностей вышеназванных категорий. Внут- ренние атрибуты описывают сам объект, тогда как внешние атрибуты характеризу- ют поведение объекта (как объект отно- сится к его среде). В работе [44] выделяются следую- щие области SE, к решению задач которых успешно применяются методы ML: 1) прогнозирование или оценка измерений для внутренних или внешних атрибутов процессов, продуктов или ре- сурсов; 2) обнаружение внутренних или внешних свойств процессов, продуктов или ресурсов; 3) преобразование продуктов для достижения некоторых желаемых или улучшенных внешних атрибутов; 4) синтезирование различных про- граммных продуктов; 5) повторное использование про- дуктов или процессов; 6) улучшение процессов (напри- мер, восстановление спецификации из ПО); 7) управление специальными про- дуктами (такими как знания в области ди- зайна и разработки). Поскольку на сегодня этот список стал длиннее, а размер статьи ограничен, то в этом разделе мы кратко рассмотрим результаты, попадающие только в первую из эти областей, где методы ML использу- Формальні методи розробки програмного забезпечення 98 ются для прогнозирования или оценки из- мерений как внутренних, так и внешних атрибутов процессов, продуктов или ре- сурсов. К ним, в частности, относятся: ка- чество ПО, размер ПО, стоимость разра- ботки ПО, работа над проектом или ПО, работа по техническому обслуживанию, ресурс ПО, стоимость исправления, надежность ПО, дефекты ПО, возмож- ность повторного использования, время выпуска ПО, производительность, время выполнения и тестируемость программных модулей и прочее. Список приложений, включенных в раздел, хотя и далеко неполный, все же должен убедить читателя о необходимости и важности применения методов машин- ного обучения в программной инженерии. Прогнозирование качества программного обеспечения В работе [45] GP используется для генерации моделей качества ПО, прини- мающих в качестве входных данных мет- рики ПО, собранные ранее в процессе раз- работки, и прогнозируют для каждого мо- дуля количество ошибок, которые будут обнаружены позднее в процессе разработ- ки или во время эксплуатации. Эти про- гнозы станут основой для ранжирования модулей, что позволит менеджеру выбрать столько модулей в верхней части списка, сколько ресурсов позволяют повысить надежность. В работе [46] проведено эмпириче- ское сравнение нескольких методов моде- лирования (логистическую регрессию, многоуровневые нейронные сети, голо- графические сети и др.) для прогнозирова- ния качества программных компонентов в начале жизненного цикла ПО. Другая ра- бота по прогнозированию качества ПО на основе NN, как сообщается в [47], связана с конкретным языком, где сначала опреде- ляются метрики проектирования для языка SDL (язык спецификации и описания), а затем используются при построении моде- лей прогнозирования для идентификации подверженных сбоям компонентов. В ра- боте [48] модели, основанные на NN, ис- пользуются для прогнозирования ошибок и показателей качества ПО. В работе [49] использован алгоритм CART для оценки моделей качества ПО в течение несколь- ких выпусков. Авторы использовали очень большую унаследованную телекоммуни- кационную систему для разработки двух деревьев классификации качества ПО. Оба модуля дали лучшую точность, которая была бы полезной для разработчиков в различных методах разработки ПО. В статье [50] представлено исполь- зование эволюционных DT в качестве под- хода к прогнозированию ошибок. Было показано, что α-метрика как атрибут вме- сте с другими показателями сложности ПО может быть успешно использована для со- здания деревьев решений для прогнозиро- вания опасных модулей (модулей, имею- щих много необнаруженных ошибок). Мо- дернизация таких модулей или выделение для них дополнительных усилий по тести- рованию или обслуживанию может в зна- чительной степени повысить качество и надежность, сделав программное обеспе- чение гораздо более безопасным в исполь- зовании. В работах [51–55] для прогнози- рования качества ПО используется метод обучения CBR. Основное внимание в [51] уделяется сравнению производительности различных классификаторов CBR. В рабо- те [52] CBR применяется для моделирова- ния качества ПО семейства полномас- штабных промышленных программных систем, и точность прогнозируется лучше, чем соответствующая модель множествен- ной линейной регрессии при прогнозиро- вании числа ошибок проектирования. Два практических правила классификации (большинство голосов и кластеризация данных) предложены в [53] для оценки ка- чества ПО высоконадежных систем. В ра- боте [54] обсуждается процедура выбора атрибута, который может помочь иденти- фицировать соответствующие метрики ка- чества ПО, которые будут использоваться в прогнозировании качества на основе CBR. В работе [55] подход CBR использу- ется для калибровки моделей классифика- ции качества ПО. В работе [56] подход, основанный на DT, используется для генерации моде- лей компонентов высокого риска. Предло- женный метод опирается на исторические Формальні методи розробки програмного забезпечення 99 данные (показатели из предыдущих вы- пусков или проектов) для определения компонентов, склонных к сбоям. Другой подход, основанный на DT, используется при построении моделей для прогнозиро- вания компонентов Ada высокого риска [57]. Деревья регрессии используются в [58] для классификации программных мо- дулей, подверженных ошибкам. Подход позволяет иметь предпочтительный баланс между типами ошибочной классификации типов I и II. Алгоритм SPRINT DT исполь- зуется в [59] для построения деревьев классификации как моделей оценки каче- ства, предсказывающих класс программ- ных модулей (подверженных ошибкам или не подверженных ошибкам). Набор мето- дов вычислительного интеллекта, одним из которых является DT, предложен в [60] для анализа качества ПО. Гибридный под- ход, основанный на GP и DT, предложен в [61] для прогнозирования качества ПО и позволяет оптимизировать как показатели производительности, так и точности. Дру- гой сравнительный результат исследова- ния представлен в [62] об использовании методов ILP при прогнозировании сбоев ПО для программ на C ++. Как естествен- ные, так и искусственные данные исполь- зуются при оценке производительности двух методов ILP (FOIL и FLIPPER), для одного из них предлагаются некоторые расширения. Оценка размера программного обеспечения NN и GP используются в [63] для валидации основанного на компонентах метода для оценки размера ПО. В допол- нение к полученным результатам, под- тверждающие компонентный подход к определению размера ПО, в исследовании отмечается, что NN хорошо работает с данными, распознавая некоторые нели- нейные отношения, которые не удается обнаружить методом множественной ли- нейной регрессии. Уравнения, разработан- ные GP, дают аналогичные или лучшие значения, чем полученные уравнениями регрессии, и являются понятными, обеспе- чивая уверенность в результатах. Прогноз стоимости программного обеспечения Общий подход, называемый опти- мизированное сокращение набора (optimized set reduction) и основанный на DT, описан в [64] для анализа данных раз- работки ПО и продемонстрирован как эф- фективный метод оценки стоимости ПО. Сравнительное исследование нескольких методов моделирования стоимости ПО, основаннное на реальных данных, прове- дено в [65] и включает метод CBR для прогнозирования стоимости ПО. Результат работы [66] указывает на то, что улучшен- ные прогностические характеристики мо- делей стоимости ПО могут быть получены с использованием байесовского анализа, предлагающего структуру, в которой мо- гут быть использованы как предваритель- ные экспертные знания, так и данные вы- борки для получения прогнозов. В работе [67] предложен подход на основе GP для поиска возможных функций стоимости ПО. Прогнозирование усилий по разработке ПО (проекта) Методы IBL используются в [68] для прогнозирования усилий проекта ПО для новых проектов. Полученные эмпири- ческие результаты (из девяти различных промышленных наборов данных, насчиты- вающих в общей сложности 275 проектов) показывают, что CBR предлагает жизне- способное дополнение к существующим методам прогнозирования и оценки. Дру- гое применение CBR в оценке усилий ПО описано в [69]. Работа [70] фокусируется на эвристике поиска, чтобы помочь опре- делить оптимальный набор функций в си- стеме CBR для прогнозирования усилий по проекту ПО. Сравнение нескольких мето- дов оценки CBR сделано в [71], и резуль- таты показывают, что оценки, полученные с помощью аналогов, выбранных челове- ком, являются более точными, чем оценки, полученные с помощью аналогов, выбран- ных инструментами, и более точными, чем оценки с помощью простой регрессионной модели. В работе [72] DT и NN использу- ются для прогнозирования усилий по раз- Формальні методи розробки програмного забезпечення 100 работке ПО. Результаты были конкуренто- способны с традиционными методами, та- кими как COCOMO и функциональные точки. Основное преимущество систем оценки на основе DT и NN заключается в том, что они являются адаптируемыми и непараметрическими. В работах [73, 74] для прогнозирования усилий по разработке ПО также использовались NN и результа- ты обнадеживают с точки зрения точности. Дополнительные исследования по прогно- зированию усилий на основе ML включа- ют в себя: генетически обученный предик- тор NN (GA + NN) [75] и подход, основан- ный на GP [76]. В работах [77–79] сообща- лось о нескольких сравнительных иссле- дованиях оценки программных усилий с использовнием NN&CBR в [78], CBR&NN&DT в [79] и NN&CBR&GP в [77]. Прогнозирование усилий по обслуживанию В работе [80] модели генерируются в терминах методов NN и DT и методов регрессии для прогнозирования усилий по обслуживанию ПО. Исследование измеря- ет и сравнивает точность прогноза для каждой модели и делает вывод, что модели на основе DT и множественной регрессии имеют лучшие результаты точности. Ре- комендуется использовать прогнозные мо- дели в качестве инструментов для под- держки экспертных оценок и анализа вли- яния переменных технического обслужи- вания на процесс и продукт технического обслуживания. Анализ программных ресурсов В работе [81] DT используется при анализе данных о программных ресурсах для определения классов программных модулей, испытывающих большие усилия при разработке или отказы (понятие «вы- сокий» определено в отношении самого верхнего квартиля относительно прошлых данных). Шестнадцать программных си- стем используются в исследовании. Дере- вья решений правильно идентифицируют 79,3 процента программных модулей, у которых были большие усилия по разра- ботке или сбои. Оценка стоимости исправления ошибок Эмпирическое исследование сдела- но в [82], где DT и ILP используются для генерации моделей для оценки стоимости коррекции при обслуживании ПО. Сгене- рированные модели оказываются полез- ными для оптимизации распределения ре- сурсов при корректирующих действиях по техническому обслуживанию и принятию решений относительно того, когда следует реструктурировать или реинжинирировать компонент, чтобы сделать его более об- служиваемым. Сравнение приводит к наблюдению, что результаты на основе ILP работают лучше, чем результаты на основе DT. Прогноз повторного использования Прогнозирующие модели построе- ны с помощью DT в [83], чтобы проверить влияние некоторых внутренних свойств объектно-ориентированных приложений на возможность повторного использова- ния. Усилия направлены на установление корреляции между возможностью повтор- ного использования компонентов и тремя атрибутами ПО (наследование, связывание и сложность). Результаты эксперимента показывают, что некоторые программные метрики могут использоваться для прогно- зирования с высокой степенью точности потенциальных классов многократного ис- пользования. Время выпуска программного обеспечения Как определить график выпуска ПО – это проблема, влияющая как на разра- ботчика программного продукта, так и на пользователя и рынок. Метод, основанный на NN, предложен в [84] для оценки опти- мального времени выпуска ПО. Метод принимает критерий минимизации затрат и переводит его в задачу прогнозирования временных рядов. Затем NN используется Формальні методи розробки програмного забезпечення 101 для оценки времени обнаружения неис- правности в будущем. Прогнозирование тестируемости В работе [85] описывается пример, в котором NN используется для прогнози- рования тестируемости программных мо- дулей на основе статических измерений исходного кода. Цель исследования – пред- сказать величину от нуля до единицы, рас- пределение которой сильно смещено к ну- лю, что затруднительно для стандартных статистических методов. Результаты отра- жают характерную особенность прогнози- рующих моделей на основе NN, обсуждае- мые по настоящее время: их способность моделировать нелинейные отношения. Производительность Подход, основанный на BL, описан в [86] для оценки производительности программных проектов. Определена де- монстрационная байесовская сеть доверия для захвата причинно-следственных связей между компонентами в модели COCOMO81 вместе с таблицами вероятно- стей для узлов. Время выполнения Временное поведение ПО в реаль- ном времени имеет решающее значение для общей правильности системы. Таким обра- зом, проверка того, нарушает ли система реального времени определенные ограни- чения по времени для определенных вход- ных данных, становится критической про- блемой. Подход, основанный на GA, опи- сан в [87] для получения входных данных с самым длинным или самым коротким временем выполнения, которые можно ис- пользовать для проверки того, приведут ли они к временной ошибке или нарушению временных ограничений системы. Прогнозирование надежности программного обеспечения В работе [88] сообщается об ис- пользовании NN для прогнозирования ро- ста надежности ПО. Эмпирическое срав- нение проводится между NN-моделями и пятью известными моделями роста надеж- ности ПО с использованием фактических наборов данных из ряда различных про- граммных проектов. Результаты показы- вают, что основанные на NN модели хо- рошо адаптируются к различным наборам данных и имеют лучшую точность прогно- зирования. Однако эффективность моде- лей прогнозирования на основе нейронной сети зависит от поведения набора данных, который в основном носит флуктуирую- щий характер. Поэтому часто NN страдает от переобучения результатов при работе с реальными неизвестными наборами дан- ных. В работе [89] предложена модель прогнозирования надежности ПО на осно- ве SVM и показано, что данные об ошиб- ках, собранные на ранних этапах жизнен- ного цикла разработки ПО, являются более подходящими для использования и влияют на точность прогнозирования. В работе [90] исследовали состояние методов ран- него прогнозирования надежности ПО, ис- пользуя SVM. Определено, что модель раннего прогнозирования, основанная на SVM, более точна в своем прогнозе с луч- шей способностью обобщения. В работе [91] проводилось эмпирическое исследо- вание нескольких методов ML, таких как ANN (BPN, RBFN и сеть Элмана), SVM, CCNN, DT и др., для прогнозирования надежности ПО. В частности, изучался во- прос: являются ли рабочие характеристики SVM и DT лучше, чем CCNN и NN. Отме- чалось, что хотя DT действительно демон- стрируют свои сильные стороны в различ- ных реальных приложениях, однако на практике они неэффективны для прогно- зирования надежности ПО. Предсказание дефектов Для прогнозирования дефектов ПО в работе [92] используется BL. Хотя си- стема, о которой сообщается, является все- го лишь прототипом, она показывает по- тенциал байесовских сетей доверия (BBN) в объединении нескольких точек зрения на прогнозирование дефектов в единую уни- фицированную модель. Переменные в прототипе системы BBN выбираются для представления процессов спецификации, проектирования и реализации, а также те- стирования жизненного цикла (сложность https://translate.academic.ru/%D0%91%D0%B0%D0%B9%D0%B5%D1%81%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D0%B5%20%D1%81%D0%B5%D1%82%D0%B8%20%D0%B4%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%8F/en/ru/ Формальні методи розробки програмного забезпечення 102 проблемы, усилия на проект, размер про- екта, введенные дефекты, тестирующее усилие, обнаруженные дефекты, плотность дефектов при тестировании, остаточное количество дефектов и остаточная плот- ность дефектов). Надлежащие причинно- следственные связи между этими процес- сами жизненного цикла ПО затем фикси- руются и отражаются в виде дуг, соединя- ющих переменные. Затем используется инструмент в отношении модели BBN следующим образом. Для заданных фактов об усилиях на проект и размере проекта в качестве входных данных инструмент бу- дет использовать байесовский вывод для получения распределений вероятностей для введенных дефектов, обнаруженных дефектов и плотности дефектов. 3. Общие рекомендации по применению алгоритмов ML к задачам SE Применяя машинное обучение к решению любой реальной проблемы, обычно нужно следовать определенному курсу действий. Проблемы программной инженерии не являются исключением. Предлагаемые рекомендации по примене- нию ML к задачам SE имеют такие шаги. Постановка проблемы. Первый шаг – сформулировать данную проблему так, чтобы она соответствовала структуре конкретного метода обучения, выбранного для этой задачи. Разные методы обучения имеют различную индуктивную предвзя- тость, используют разные стратегии поис- ка, основанные на различных руководящих факторах, предъявляют различные требо- вания в отношении теории предметной об- ласти (наличие или отсутствие) и обучаю- щих данных (оценка и свойства) и основа- ны на разных рассуждениях обоснования. Все эти вопросы должны быть приняты во внимание на этапе формулирования про- блемы. Этот шаг имеет решающее значе- ние для применимости метода обучения. Такие стратегии, как «разделяй и власт- вуй», могут потребоваться для разложения исходной проблемы на набор подзадач, более поддающихся выбранному методу обучения. Иногда лучшая формулировка проблемы не всегда может быть наиболее интуитивной для исследователя машинно- го обучения [94]. Проблемное представление. Сле- дующим шагом является выбор подходя- щего представления как для данных обу- чения, так и для знаний, которые необхо- димо изучить. Разные методы обучения имеют разные формализмы представления. Таким образом, представление атрибутов и функций в учебной задаче часто зависит от конкретной проблемы и от формализма. Сбор информации. Третий шаг – сбор данных, необходимых для учебного процесса. Качество и количество необхо- димых данных зависят от выбранного ме- тода обучения. Данные, возможно, должны быть предварительно обработаны, прежде чем они могут быть использованы в про- цессе обучения. Подготовка теории предметной области. Некоторые методы обучения (например, EBL) полагаются на доступ- ность теории предметной области для дан- ной проблемы. Приобретение и подготовка теории предметной области (или базовых знаний) и обеспечение качества этой тео- рии (правильность, полноту) становится важной проблемой, которая повлияет на результат процесса обучения. Выполнение учебного процесса. Как только данные и теория предметной области (при необходимости) готовы, про- цесс обучения может быть выполнен. Дан- ные будут разделены на тренировочный набор и тестовый набор. Если использует- ся какой-либо инструмент обучения или среда, данные обучения и тестовые дан- ные, возможно, должны быть организова- ны в соответствии с требованиями ин- струмента. Знания, полученные из обуча- ющего набора, проверяются на тестовом наборе. Из-за различий между обучающим набором и тестовым набором сам процесс обучения является итеративным. Анализ и оценка полученных зна- ний является неотъемлемой частью учеб- ного процесса. Интерес и эффективность полученных знаний будут тщательно изу- чены на этом этапе, часто с помощью экс- пертов-людей, что, как мы надеемся, при- ведет к улучшению знаний. Если получен- ные знания считаются несущественными, Формальні методи розробки програмного забезпечення 103 неинтересными, неуместными или откло- няющимися, это может указывать на необ- ходимость пересмотра на ранних стадиях, таких как постановка проблемы и пред- ставление. Во многих методах обучения существуют известные практические про- блемы, такие как переоснащение, локаль- ные минимумы или проклятие размерно- сти, которые обусловлены либо неадекват- ностью данных, шумом или не относящи- мися к ним атрибутами в данных, характе- ром стратегии поиска или неверной теори- ей предметной области. Хранение базы знаний. Этот шаг влечет за собой использование получен- ных знаний [93]. Знания могут быть встро- ены в систему разработки программного обеспечения или в программный продукт или использованы без встраивания их в компьютерную систему. Как отмечалось в [93], сила методов машинного обучения заключается не в конкретном индукцион- ном методе, а в правильной постановке задач и создании представления, позволя- ющего сделать процесс обучения более понятным. Выводы Область разработки ПО оказалась благодатной почвой, где многие задачи по разработке и сопровождению ПО могут быть сформулированы как проблемы обу- чения и подходят с точки зрения алгорит- мов обучения. Последние два десятилетия стали свидетелями многих приложений ML в разработке и обслуживании ПО. Большинство публикаций посвящены во- просу о том, как создавать модели для про- гнозирования или оценки определенных свойств процесса разработки ПО или арте- фактов. При этом формируется некоторое представление о том, какие типы техник ML чаще других используются при реше- нии задач прогнозирования и оценки каче- ства в программной инженерии. Тремя ос- новными из них являются CBR, NN и DT. Литература 1. Brooks F. No silver bullet: essence and accidents of software engineering. IEEE Computer. 1987. Vol. 20, N 4. P. 10–19. 2. Андон Ф.И. и др. Основы инженерии качества программных систем. 2-е изд., перераб. и доп. К.: Академпериодика. 2007. 672 с. 3. Lowry M. Software engineering in the twenty first century. AI Magazine. 1992. Vol. 14, N 3. P. 71–87. 4. Mostow J. Special issue on artificial intelligence and software engineering. IEEE Trans. SE. 1985. Vol. 11, N 11. P. 1253–1408. 5. Partridge D. Artificial Intelligence and Software Engineering. AMACOM. 1998. 277 p. 6. Rich C., Waters R. Readings in Artificial Intelligence and Software Engineering. Morgan Kaufmann. 1986. 589 p. 7. Tsai J.J.P., Weigert T., Knowledge-Based Software Development for Real-Time Distributed Systems. World Scientific Inc. 1993. 236 p. 8. Mitchell T. Machine Learning. McGraw-Hill. 1997. 414 p. 9. Selfridge O. The gardens of learning: a vision for AI. AI Magazine. 1993. Vol.14, N 2. P. 36–48. 10. Quinlan J.R. Some elements of machine learning. 9 th International Workshop on Inductive Logic Programming. Lecture Notes in Artificial Intelligence. Springer-Verlag. 1999. Vol. 1634. P.15–18. 11. Dietterich T.G. Machine learning research: four current directions. AI Magazine. 1997. Vol. 18, N 4. P. 97–136. 12. Seeger M. Learning with labeled and unlabeled data. Technical Report. University of Edinburgh. 2001. 13. Zhu X., Ghahramani Z., Lafferty J. D. Semi- supervised learning using gaussian fields and harmonic functions. International Conference on Machine Learning (ICML). 2003. P. 912–919. 14. Quinlan J.R. Decision trees as probabilistic classifiers. 4th International Workshop on Machine Learning. Irvine, CA. 1987. P. 31–37. 15. Gehrke J., Ramakrishnan R., Loh W.R. BOAT-optimistic decision tree construction. ACM SIGMOD International Conference Management of Data. 1999. P. 169–180. 16. Quinlan J.R. C4.5: Programs for machine learning. Morgan Kaufmann, San Mateo. CA. 1993. 312 p. 17. Breiman L., Friedman J., Olshen R., Stone C. Classification and Regression Trees. Technical report, Wadsworth International, Monterey, CA. 1984. 358 p. Формальні методи розробки програмного забезпечення 104 18. Kohavi R. The power of decision tables. The eighth european conference on machine learning (ECML), 1995. P. 174–189. 19. Han J., Kamber M. Data mining: concepts and techniques. Morgan Kaufmann. 2006. 740 р. 20. Lyu M.R. Handbook of Software Reliability Engineering. New York: McGraw-Hill. 1996. 873 р. 21. Park S., Hoyoung N., Sugumaran V. A Semi automated filtering technique for software process tailoring using neural networks. Expert System and Applications. 2006. Vol. 30. P. 179–189. 22. Perlovsky L.I. Neural Networks and Intellect: Using Model Based Concepts. New York: Oxford University Press. 2000. 496 р. 23. Rumelhart D.E, Hinto G.E., Williams R.J. Learning internal representations by error propagation. Parallel Distributed Processing: Explorations in the Microstructure of Cognition. Cambridge, MA: The MIT Press. 1986. Vol. 1. P. 318–362. 24. Moody J., Darken C.J. Fast learning in networks of locally tuned processing units. Neural Computing. 1989. Vol. 1. P. 81–294. 25. Specht D.F. Probabilistic neural networks. Journal of Neural Networks. 1990. Vol. 3. P. 110–118. 26. Elman J.L. Finding Structure in Time. Cognitive science. 1990. Vol.14, N 2. P. 179–211. 27. Fahlman S.E., Lebiere C. The cascade- correlation learning architecture. Advances in Neural Information Processing Systems. San Mated, CA: Morgan Kaufmann.1990. P. 524–532. 28. Kohonen T. Self-Organizing Maps. Berlin: Springer-Verlag. 1997. 513 р. 29. Daelemans W., Van den Bosch A. Memory- Based Language Processing. Cambridge University Press. 2005. 198 р. 30. Russell S.P., Norvig P. Artificial Intelligence. A Modern Approach. New Jersey, USA: Prentice-Hall. 2003. 932 p. 31. Hammond K.J. Case-Based Planning. Academic Press: New York. 1989. 297 p. 32. Kolodner J.L. An introduction to Case Based Reasoning. Artificial Intelligence Review. 1992. Vol. 6, N 1. P. 3–34. 33. Muggleton S. Inductive Logic Programming. New Generation Computing. 1991. Vol. 8. P. 295–318. 34. Quinlan J.R. Learning logical definitions from relations. Machine Learning. 1990. Vol. 5. P. 239–266. 35. Muggleton S., Feng C. Efficient induction of logic programs. The First Conference on Algorithmic Learning Theory. Japanese Society for Artificial Intelligence, Tokyo. 1990. P. 368–381. 36. Muggleton S. Inverse Entailment and Progol. New Generation Computing. 1995. Vol. 13. P. 245–286. 37. Vapnik V. Statistical learning theory. Adaptive and Learning Systems. 1998. Vol. 736. 38. Hanley J, McNeil B. J. The meaning and use of the area under a receiver operating characteristic ROC curve. Radiology. 1982. Vol. 143. P. 29–36. 39. Yang B, Xiang L. A study on software reliability prediction based on support vector machines. International conference on industrial engineering and engineering management (IEEM). 2007. P. 1176–1180. 40. Phillip S. DTReg predictive modeling software available. 2003. 395 р. http://www.dtreg.com. 41. Goldberg G.E. Genetic Algorithmic Search, Optimization and Machine Learning. Reading, MA: Addition-Wisely. 1989. 624 р. 42. Koza J.R. Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT Press. 1992. 609 p. 43. Fenton N.E., Pfleeger S.L. Software Metrics. PWS Publishing Company, 2nd ed. 1997. 411 р. 44. Zhang D., Tsai J.J.P. Machine learning and software engineering. Software Quality Journal. 2003. Vol. 11, Issue 2. P. 87–119. 45. Evett M., Khoshgoftar T., Chien P. and Allen E. GP-based software quality prediction. Third Annual Genetic Programming Conference. 1998. P. 60–65. 46. Lanubile F. and Visaggio G. Evaluating predictive quality models derived from software measures: lessons learned. Journal of Systems and Software. 1997. Vol. 38. P. 225–234. 47. Hong E., Wu C. Criticality models using SDL metrics set. 4 th Asia-Pacific Software Engineering and International Computer Science Conference. 1997. P. 23–30. 48. Khoshgoftaar T., Pandya A., Lanning D. Application of neural networks for predicting faults. Annals of Software Engineering. 1995. Vol. 1. P. 141–154. 49. Khoshgoftaar T.M., Allen E.B., Jones W.D., Hudepohl J.P. Classification – tree models of software quality over multiple releases. IEEE Transactions on Reliability. 2000. Vol. 49, N 1. P. 4–11. 50. Kokol P., Podgorelec V., Pighim M. Using software metrics and evolutionary Формальні методи розробки програмного забезпечення 105 decision trees for software quality control. 2001. http://www.escom.co.uk/conference2001/pap ers/kokol.pdf. 51. El Emam K., Benlarbi S., Goel N., Rai S. Comparing case-based reasoning classifiers for predicting high risk software components. Journal of Systems and Software. 2001. Vol. 55, N 3. P. 301–320. 52. Ganesan K., Khoshgoftaar T., Allen E. Cased- based software quality prediction. International Journal of Software Engineering and Knowledge Engineering. 2000. Vol. 10, N 2. P. 139–152. 53. Khoshgoftaar T., Seliya N. Analogy-Based Practical Classification Rules for Software Quality Estimation. Empirical Software Engineering. 2003. Vol. 8, N 4. P. 325–350. 54. Khoshgoftaar T., Nguyen L., Gao K., Rajeevalochanam J. Application of an attribute selection method to CBR-based software quality classification. 15 th IEEE International Conference on Tools with AI. 2003. 55. Khoshgoftaar T., Cukic B., Seliya N. Predicting fault-prone modules in embedded systems using analogy-based classification models. International Journal of Software Engineering and Knowledge Engineering. 2002. Vol. 12, N 2. P. 201–221. 56. Porter A., Selby R. Empirically-guided software development using metric-based classification trees. IEEE Software. 1990. Vol. 7. P. 46–54. 57. Briand L., Basili V., Hetmanski C. Developing interpretable models with optimized set reduction for identifying high- risk software components. IEEE Trans. SE. 1993. Vol. 19, N 11. P. 1028–1043. 58. Khoshgoftaar T., Allen E.B., Deng J. Using regression trees to classify fault-prone software modules. IEEE Transactions on Reliability. 2002. Vol. 51, N 4. P. 455–462. 59. Khoshgoftaar T., Seliya N. Software quality classification modeling using the SPRINT decision tree algorithm. 14 th IEEE International Conference on Tools with AI. 2002. P. 365–374. 60. Reformat M., Pedrycz W., Pizzi N.J. Software quality analysis with the use of computational intelligence. Information and Software Technology. 2003. Vol. 45, N 7. P. 405–417. 61. Khoshgoftaar T., Liu Y., Seliya N. Genetic programming-based decision trees for software quality classification. 15 th IEEE International Conference on Tools with AI. 2003. 62. Cohen W., Devanbu P. A comparative study of inductive logic programming for software fault prediction. The fourteenth International Conference on Machine Learning. 1997. 63. Dolado J. A validation of the component- based method for software size estimation. IEEE Trans. SE. 2000. Vol. 26, N 10. P. 1006–1021. 64. Briand L., Basili V., Thomas W. A pattern recognition approach for software engineering data analysis. IEEE Trans. SE. 1992. Vol. 18, No 11. P. 931–942. 65. Briand L. et al. An assessment and Comparison of common software cost estimation modeling techniques. International Conference on Software Engineering. 1999. P. 313–322. 66. Chulani S., Boehm B., Steece B. Bayesian analysis of empirical software engineering cost models. IEEE Trans. SE. 1999. Vol. 25, N 4. P. 573–583. 67. Dolado J.J. On the problem of the software cost function. Information and Software Technology. 2001. Vol. 43, N l. P. 61–72. 68. Shepperd M., Schofield C. Estimating software project effort using analogies. IEEE Trans. SE. 1997. Vol. 23, N 12. P. 736–743. 69. Vicinanza S., Prietulla M.J., Mukhopadhyay T. Case-based reasoning in software effort estimation. 11th Intl. Conf. On Information Systems. 1990. P. 149–158. 70. Kirsopp C., Shepperd M. J., Hart J. Search Heuristics, Case-based Reasoning And Software Project Effort Prediction. Genetic and Evolutionary Computation Conference (GECCO). 2002. P. 1367–1374. 71. Walkerden F., Jeffrey R. An empirical study of analogy-based software effort estimation. Empirical Software Engineering. 1999. Vol. 4. P. 135–158. 72. Srinivasan K., Fisher D. Machine learning approaches to estimating software development effort. IEEE Trans. SE. 1995. Vol. 21, N 2. P. 126–137. 73. Heiat A. Comparison of artificial neural network and regression models for estimating software development effort. Information and Software Technology. 2002. Vol. 44, N 15. P. 911–922. 74. Wittig G., Finnie G. Estimating software development effort with connectionist models. Information and Software Technology. 1997. Vol. 39. P. 469–476. 75. Shukla K. Neuro-genetic prediction of software development effort. Information and Software Technology. 2000. Vol. 42, N 10. P. 701–713. Формальні методи розробки програмного забезпечення 106 76. Lefley M., Shepperd M. J. Using genetic programming to improve software effort estimation based on general data sets. Genetic and Evolutionary Computation Conference (GECCO). 2003. P. 2477–2487. 77. Burgess C.J., Lefley M. Can genetic programming improve software effort estimation a comparative evaluation. Information and Software Technology. 2001. Vol. 43, N 14. P. 863–873. 78. Finnie G., Wittig G., Desharnais J-M. A comparison of software effort estimation techniques: using function points with neural networks, case-based reasoning and regression models. Journal of Systems and Software. 1997. Vol. 39, N 3. P. 281–289. 79. Mair C., Kadoda G., Lefley M., Phalp K., Schofield C., Shepperd M., Webster S. An investigation of machine learning based prediction systems. Journal of Systems and Software. 2000. Vol. 53, N l. P. 23–29. 80. Jorgensen M. Experience with the accuracy of software maintenance task effort prediction models. IEEE Trans. SE. 1995. Vol. 21, N 8. P. 674–681. 81. Selby R., Porter A. Learning from examples: generation and evaluation of decision trees for software resource analysis. IEEE Trans. SE. 1988. Vol. 14. P. 1743–1757. 82. De Almeida M., Lounis H., Melo W. An investigation on the use of machine learned models for estimating correction costs. International Conference on Software Engineering. 1998. P. 473–476. 83. Mao Y., Sahraoui H., Lounis H. Reusability hypothesis verification using machine learning techniques: a case study. 13 th IEEE International Conference on Automated Software Engineering. 1998. P. 84–93. 84. Dohi T., Nishio Y., Osaki S. Optimal software release scheduling based on artificial neural networks. Annals of Software Engineering. 1999. Vol. 8, N l. P. 167–185. 85. Khoshgoftaar T., Allen E., Xu Z. Predicting testability of program modules using a neural network. IEEE Symposium on Application- Specific Systems and Software Engineering Technology. 2000. P. 57–62. 86. Stamelos I., Angelis L., Dimou P., Sakellaris E. On the use of Bayesian belief networks for the prediction of software productivity. Information and Software Technology. 2003. Vol. 45, N l. P. 51–60. 87. Wegener J., Sthamer H., Jones B.F., Eyres D.E. Testing real-time systems using genetic algorithms. Software Quality Journa. 1997. Vol. 6. P. 127–135. 88. Karunanithi N., Whitely D., Malaiya Y. Prediction of software reliability using connectionist models. IEEE Trans. SE. 1992. Vol. 18, N 7. P. 563–574. 89. Yang B., Xiang L. A study on software reliability prediction based on support vector machines. International conference on industrial engineering and engineering management (IEEM). 2007. P. 1176–1180. 90. Xingguo L., Yanhua S. An early prediction method of software reliability based on support vector machine. International conference on wireless communications, networking and mobile computing (WiCom). 2007. P. 6075–6078. 91. Kumar P., Singh Y. An empirical study of software reliability prediction using machine learning techniques. International Journal of System Assurance Engineering and Management (Int J Syst Assur Eng Manag). 2012. Vol. 3, N 3. P. 194−208. 92. Fenton N., Neil M. A critique of software defect prediction models. IEEE Trans. SE. 1999. Vol. 25, N 5. P. 675−689. 93. Langley P., Simon H. Applications of machine learning and rule induction. Communications of ACM. 1995. Vol. 38, N 11. P. 55−64. References 1. Brooks F. (1987), "No silver bullet: essence and accidents of software engineering", IEEE Computer, Vol. 20 No.4, pp.10-19. 2. Andon P.I., Koval G.I., Korotune T.M., Lavrischeva E.M. and Suslov V.Yu. (2007), The Fundamentals for Software Quality Engineering, 2-nd ed., К.: Akademperiodika, 672 p. (in Russian). 3. Lowry M. (1992), "Software engineering in the twenty first century", AI Magazine, Vol.14 No.3, pp.71–87. 4. Mostow J. (1985), "Special issue on artificial intelligence and software engineering", IEEE Trans. SE, Vol.11 No.ll, pp. 1253─1408. 5. Partridge D. (1998), Artificial Intelligence and Software Engineering, AMACOM, 277 p. 6. Rich C. and Waters R.(1986), "Readings in Artificial Intelligence and Software Engineering", Morgan Kaufmann, 589 p. 7. Tsai J.J.P. and Weigert T. (1993), Knowledge-Based Software Development for Формальні методи розробки програмного забезпечення 107 Real-Time Distributed Systems, World Scientific Inc., Singapore, 236 p. 8. Mitchell T. (1997), Machine Learning, McGraw-Hill, 414p. 9. Selfridge O. (1993), "The gardens of learning: a vision for AI", AI Magazine, Vol.14, N 2. P.36–48. 10. Quinlan J.R. (1999), "Some elements of machine learning", Proceedings of the 9 th International Workshop on Inductive Logic Programming, Lecture Notes in Artificial Intelligence, Springer-Verlag, Vol. 1634. P. 15–18. 11. Dietterich T. G. (1997), "Machine learning research: four current directions", AI Magazine. Vol. 18, N 4. P. 97–136. 12. Seeger M. (2001). Learning with labeled and unlabeled data (Technical Report). University of Edinburgh. 13. Zhu X., Ghahramani Z., and Lafferty J.D. (2003), "Semi-supervised learning using gaussian fields and harmonic functions", In International Conference on Machine Learning (ICML). P. 912–919. 14. Quinlan J.R. (1987), "Decision trees as probabilistic classifiers", Proceedings of 4th International Workshop on Machine Learning, Irvine, CA. P. 31–37. 15. Gehrke J., Ramakrishnan R. and Loh W.R. (1999) "BOAT-optimistic decision tree construction", In Proceedings ACM SIGMOD International Conference Management of Data, Philadelphia, PA. P. 169–180. 16. Quinlan J.R. (1993), C4.5: Programs for machine learning, Morgan Kaufmann, San Mateo, CA, 312 р. 17. Breiman L., Friedman J., Olshen R. and Stone C. (1984), Classification and Regression Trees. Technical report, Wadsworth International, Monterey, CA, 358 p. 18. Kohavi R. (1995), "The power of decision tables", In: The eighth european conference on machine learning (ECML-95), Heraklion, Greece, P. 174–189. 19. Han J. and Kamber M. (2006), Data mining: concepts and techniques, Morgan Kaufmann, India. 20. Lyu M.R. (1996) Handbook of Software Reliability Engineering. New York: McGraw- Hill. 21. Park S., Hoyoung N. and Sugumaran V. (2006) "A Semi automated filtering technique for software process tailoring using neural networks", Expert System and Applications, Vol. 30. P. 179–189. 22. Perlovsky L.I. (2000), Neural Networks and Intellect: Using Model Based Concepts. New York: Oxford University Press. 23. Rumelhart D.E, Hinto G.E. and Williams R.J. (1986), "Learning internal representations by error propagation", In D.E. Rumelhart and J.L. McClelland (Eds.), Parallel Distributed Processing: Explorations in the Microstructure of Cognition, Cambridge, MA: The MIT Press, Vol. 1. P. 318–362. 24. Moody J. and Darken C.J. (1989), "Fast learning in networks of locally tuned processing units", Neural Computing, Vol. 1, P. 81–294. 25. Specht D.F. (1990), "Probabilistic neural networks", Journal of Neural Networks, Vol. 3. P. 110–118. 26. Elman J. L. (1990), "Finding Structure in Time", Cognitive science, Vol. 14, N 2. P. 179–211. 27. Fahlman S.E. and Lebiere C. (1990), "The cascade-correlation learning architecture", In Advances in Neural Information Processing Systems. San Mated, CA: Morgan Kaufmann. P. 524–532. 28. Kohonen T. (1997), Self-Organizing Maps. Berlin: Springer-Verlag, 513p. 29. Daelemans W. and Van den Bosch A. (2005), Memory-Based Language Processing. Cambridge University Press. 30. Russell S.P. and Norvig, P. (2003), Artificial Intelligence. A Modern Approach (2nd ed.). New Jersey, USA: Prentice-Hall, 932 p. 31. Hammond K. J. (1989), Case-Based Planning. Academic Press: New York, 297 p. 32. Kolodner J.L. (1992), "An introduction to Case Based Reasoning", Artificial Intelligence Review, Vol. 6, N 1, P. 3–34. 33. Muggleton S. (1991), "Inductive Logic Programming",New Generation Computing, Vol. 8. P. 295–318 34. Quinlan J.R. (1990), "Learning logical definitions from relations", Machine Learning, Vol. 5. P. 239–266. 35. Muggleton S. and Feng C. (1990), "Efficient induction of logic programs", In Proceedings of the First Conference on Algorithmic Learning Theory, Japanese Society for Artificial Intelligence, Tokyo, pp. 368–381. 36. Muggleton S. (1995), "Inverse Entailment and Progol", New Generation Computing, Vol. 13, pp. 245-286. 37. Vapnik V. (1998), "Statistical learning theory", Adaptive and Learning Systems,Vol. 736. 38. Hanley J., McNeil B.J. (1982), "The meaning and use of the area under a receiver operating Формальні методи розробки програмного забезпечення 108 characteristic ROC curve", Radiology, Vol. 143. P. 29–36. 39. Yang B. and Xiang L. (2007), "A study on software reliability prediction based on support vector machines", In: Proceedings of international conference on industrial engineering and engineering management (IEEM’07), pp. 1176–1180. 40. Phillip S. (2003), "DTReg predictive modeling software", 395р. http://www.dtreg.com. 41. Goldberg G.E. (1989), "Genetic Algorithmic Search, Optimization and Machine Learning", Reading, MA: Addition-Wisely, 412p. 42. Koza J.R. (1992), "Genetic Programming: On the Programming of Computers by Means of Natural Selection", MIT Press, 609 p. 43. Fenton N.E. and Pfleeger S.L. (1997), Software Metrics, PWS Publishing Company, 2nd ed. 44. Zhang D. and Tsai J.J.P. (2003), "Machine learning and software engineering", Software Quality Journal, Vol.11, Issue 2, pp.87–119. 45. Evett M., Khoshgoftar T., Chien P. and E. Allen, (1998) "GP-based software quality prediction", Proc. Third Annual Genetic Programming Conference, P. 60–65. 46. Lanubile F. and Visaggio G., (1997) "Evaluating predictive quality models derived from software measures: lessons learned", Journal of Systems and Software, Vol. 38, P. 225–234. 47. Hong E. and Wu C., (1997), "Criticality models using SDL metrics set", Proc. the 4th Asia-Pacific Software Engineering and International Computer Science Conference, P. 23–30. 48. Khoshgoftaar T., Pandya A. and Lanning D. (1995), "Application of neural networks for predicting faults", Annals of Software Engineering, Vol. 1. P. 141–154. 49. Khoshgoftaar T.M., Allen E.B., Jones W.D. and Hudepohl J.P. (2000), "Classification – tree models of software quality over multiple releases", IEEE Transactions on Reliability, Vol. 49. N 1. P. 4–11. 50. Kokol P., Podgorelec V. and Pighim M. (2001), "Using software metrics and evolutionary decision trees for software quality control", Available at: http://www.escom.co.uk/conference2001/pape rs/kokol.pdf. 51. El Emam K., Benlarbi S., Goel N. and Rai S. (2001), "Comparing case-based reasoning classifiers for predicting high risk software components", Journal of Systems and Software, Vol. 55, N 3. P. 301–320. 52. Ganesan K., Khoshgoftaar T. and Allen E. (2000), "Cased-based software quality prediction", International Journal of Software Engineering and Knowledge Engineering, Vol.10 No.2, pp. 139–152. 53. Khoshgoftaar T. and Seliya N. (2003), "Analogy-Based Practical Classification Rules for Software Quality Estimation", Empirical Software Engineering. Vol. 8. N 4. P. 325–350. 54. Khoshgoftaar T., Nguyen L., Gao K. and Rajeevalochanam J. (2003), "Application of an attribute selection method to CBR-based software quality classification", Proceedings of 15th IEEE International Conference on Tools with AI. 55. Khoshgoftaar T., Cukic B. and Seliya N. (2002), "Predicting fault-prone modules in embedded systems using analogy-based classification models", International Journal of Software Engineering and Knowledge Engineering, Vol.12 N 2. P. 201–221. 56. Porter A. and Selby R.(1990), "Empirically- guided software development using metric- based classification trees", IEEE Software, Vol. 7. P. 46–54. 57. Briand L., Basili V. and Hetmanski C. (1993), "Developing interpretable models with optimized set reduction for identifying high-risk software components", IEEE Trans. SE, Vol. 19. N 11. P. 1028–1043. 58. Khoshgoftaar T., Allen E.B. and Deng J. (2002), "Using regression trees to classify fault-prone software modules", IEEE Transactions on Reliability, Vol. 51. N 4. P. 455–462. 59. Khoshgoftaar T. and Seliya N. (2002), "Software quality classification modeling using the SPRINT decision tree algorithm", Proceedings of 14th IEEE International Conference on Tools with AI. P. 365–374. 60. Reformat M., Pedrycz and W. and Pizzi N.J. (2003), "Software quality analysis with the use of computational intelligence", Information and Software Technology, Vol.45 No.7, pp.405–417. 61. Khoshgoftaar T., Liu Y. and Seliya N. (2003), "Genetic programming-based decision trees for software quality classification", Proceedings of 15th IEEE International Conference on Tools with AI. 62. Cohen W. and Devanbu P. (1997), "A comparative study of inductive logic programming for software fault prediction", Proc. the fourteenth International Conference on Machine Learning. Формальні методи розробки програмного забезпечення 109 63. Dolado J. (2000), "A validation of the component-based method for software size estimation", IEEE Trans. SE, Vol.26 No. 10, pp. 1006–1021. 64. Briand L., Basili V. and Thomas W. (1992), "A pattern recognition approach for software engineering data analysis", IEEE Trans. SE, Vol. 18 No. 11, pp. 931–942. 65. Briand L. et al. (1999), "An assessment and Comparison of common software cost estimation modeling techniques", Proc. International Conference on Software Engineering, pp.313–322. 66. Chulani S., Boehm B. and Steece B. (1999), "Bayesian analysis of empirical software engineering cost models", IEEE Trans. SE, Vol. 25 No. 4, pp. 573–583. 67. Dolado J.J. (2001), "On the problem of the software cost function", Information and Software Technology, Vol.43 No.l, pp.61–72. 68. Shepperd M.and Schofield C. (1997), "Estimating software project effort using analogies", IEEE Trans. SE, Vol. 23 No. 12, pp. 736–743. 69. Vicinanza S., Prietulla M.J. and Mukhopadhyay T. (1990), "Case-based reasoning in software effort estimation", Proc. 11th Intl. Conf. On Information Systems, pp.149–158. 70. Kirsopp C., Shepperd M. J. and Hart J. (2002), "Search Heuristics, Case-based Reasoning And Software Project Effort Prediction", Proceedings of Genetic and Evolutionary Computation Conference (GECCO), pp. 1367–1374. 71. Walkerden F. and Jeffrey R. (1999), "An empirical study of analogy-based software effort estimation", Empirical Software Engineering, Vol.4, pp.135–158. 72. Srinivasan K. and Fisher D. (1995), "Machine learning approaches to estimating software development effort", IEEE Trans. SE, Vol. 21 No. 2, pp. 126–137. 73. Heiat A., (2002), "Comparison of artificial neural network and regression models for estimating software development effort", Information and Software Technology, Vol.44 No. 15, pp.911–922. 74. Wittig G. and Finnie G. (1997), "Estimating software development effort with connectionist models", Information and Software Technology, Vol.39, pp.469–476. 75. Shukla K. (2000), "Neuro-genetic prediction of software development effort", Information and Software Technology, Vol.42 No.10, pp.701–713. 76. Lefley M. and Shepperd M. J. (2003), "Using genetic programming to improve software effort estimation based on general data sets", Proceedings of Genetic and Evolutionary Computation Conference (GECCO), pp.2477– 2487. 77. Burgess C.J. and Lefley M. (2001), "Can genetic programming improve software effort estimation? a comparative evaluation", Information and Software Technology, Vol.43 No.14, pp.863–873. 78. Finnie G., Wittig G.and Desharnais J-M. (1997), "A comparison of software effort estimation techniques: using function points with neural networks, case-based reasoning and regression models", Journal of Systems and Software, Vol.39 No.3, pp.281–289. 79. Mair C., Kadoda G., Lefley M., Phalp K., Schofield C., Shepperd M. and Webster S. (2000), "An investigation of machine learning based prediction systems", Journal of Systems and Software, Vol.53 No.l, pp.23–29. 80. Jorgensen M. (1995), "Experience with the accuracy of software maintenance task effort prediction models", IEEE Trans. SE, Vol.21 No.8, pp.674–681. 81. Selby R. and Porter A. (1988), "Learning from examples: generation and evaluation of decision trees for software resource analysis," IEEE Trans. SE, Vol. 14, pp.1743–1757. 82. De Almeida M., Lounis H. and Melo W. (1998), "Proc. International Conference on Software Engineering", 1998, pp.473–476. 83. Mao Y., Sahraoui H. and Lounis H. (1998), "Reusability hypothesis verification using machine learning techniques: a case study", Proc. 13th IEEE International Conference on Automated Software Engineering, 1998, pp.84–93. 84. Dohi T., Nishio Y. and Osaki S. (1999), "Optimal software release scheduling based on artificial neural networks", Annals of Software Engineering, Vol.8 No.l, pp.167– 185. 85. Khoshgoftaar T., Allen E. and Xu Z. (2000), "Predicting testability of program modules using a neural network", Proc. IEEE Symposium on Application-Specific Systems and Software Engineering Technology, pp.57–62. 86. Stamelos I., Angelis L., Dimou P., Sakellaris E. (2003), "On the use of Bayesian belief networks for the prediction of software productivity", Information and Software Technology, Vol.45 No.l, pp.51–60. 87. Wegener J., Sthamer H., Jones B.F. and Eyres D.E. (1997), "Testing real-time systems Формальні методи розробки програмного забезпечення 110 using genetic algorithms", Software Quality Journal, Vol. 6. P.127–135. 88. Karunanithi N., Whitely D. and Malaiya Y. (1992), Prediction of software reliability using connectionist models. IEEE Trans. SE. Vol. 18, N 7. P. 563–574. 89. Yang B. and Xiang L. (2007) A study on software reliability prediction based on support vector machines. International conference on industrial engineering and engineering management (IEEM). P. 1176–1180. 90. Xingguo L. and Yanhua S. (2007), An early prediction method of software reliability based on support vector machine. International conference on wireless communications, networking and mobile computing (WiCom). P. 6075–6078. 91. Kumar P., Singh Y. (2012) An empirical study of software reliability prediction using machine learning techniques. International Journal of System Assurance Engineering and Management (Int J Syst Assur Eng Manag).Vol. 3, N 3. P. 194−208. 92. Fenton N., Neil M. (1999) A critique of software defect prediction models. IEEE Trans. SE. Vol. 25, N 5. P. 675−689. 93. Langley P., Simon H. (1995), "Applications of machine learning and rule induction", Communications of ACM, Vol. 38. N ll. P. 55–64. Получено 14.10.2019 Об авторах: Мороз Ольга Григорьевна, кандидат технических наук, научный сотрудник. Количество научных публикаций в украинских изданиях – 27. Количество научных публикаций в зарубежных изданиях – 2. Индекс Хирша – 2. https://orcid.org/0000-0002-0356-8780, Мороз Григорий Борисович, кандидат технических наук, старший научный сотрудник. Количество научных публикаций в украинских изданиях – 65. Количество научных публикаций в зарубежных изданиях – 4. Індекс Хирша – 3. https://orcid.org/0000-0001-8666-9503. Место работы авторов: Международный научно-учебный центр информационных технологий и систем НАН Украины и МОН Украины, 03680, г. Киев, проспект Академика Глушкова, 40. Тел.: (044) 502 6355. Институт программных систем НАН Украины, 03187, г. Киев, проспект Академика Глушкова, 40, корпус 5. Тел.: (044) 526 33 09. E-mail: olhahryhmoroz@gmail.com, mgb@isofts.kiev.ua mailto:mgb@isofts.kiev.ua