автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.17, диссертация на тему:Разработка методики количественной оценки "анализируемости" программных продуктов

кандидата технических наук
Стружков, Сергей Александрович
город
Москва
год
2009
специальность ВАК РФ
05.13.17
Диссертация по информатике, вычислительной технике и управлению на тему «Разработка методики количественной оценки "анализируемости" программных продуктов»

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

оо«^00 —

На правах рукописи

Стружков Сергей Александрович

РАЗРАБОТКА МЕТОДИКИ КОЛИЧЕСТВЕННОЙ ОЦЕНКИ «АНАЛИЗИРУЕМОСТИ» ПРОГРАММНЫХ ПРОДУКТОВ

05.13.17 - Теоретические основы информатики

АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата технических наук

I1 7 ЛЕН 2009

Москва 2009

003488926

Работа выполнена в Государственном учреждении высшего профессионального образования «Московский государственный университет путей сообщения» (?ЛИИ'Г) на кафедре «Математическое обеспечение автоматизированных систем управления» (МО АСУ)

Научный руководитель: доктор технических наук, профессор

Доении Виктор Васильевич

Официальные оппоненты:

доктор технических наук, профессор Горелик Владимир Юдаевич,

кандидат технических наук, старший

научный сотрудник

Ратин Геннадий Самуилович

Ведущая организация: Открытое акционерное общество «Научно-

исследовательский институт

железнодорожного транспорта» (ОАО «ВНИИЖТ»)

Защита диссертации состоится «16» декабря 2009 г. в 1330 часов на заседании диссертационного совета Д218.005.04 в Московском государственном университете путей сообщения (МИИТ) по адресу: 127994, ГСГТ-4, г. Москва, ул. Образцова, 9, стр. 9, ауд. 4518.

С диссертацией можно ознакомиться в библиотеке МИИТа.

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

Автореферат разослан «16» ноября 2009 года.

Ученый секретарь

диссертационного совета Д218.005.04, д.т.н.

В.Г.Сидоренко

Общая характеристика работы

Актуальность темы. За последние 50 лет развитие программирования привело к созданию целой отрасли, индустрии по производству программных продуктов. Сегодня программ ный продукт уже не предмет искусства доступный лишь немногим, это уже не штучные экземпляры, созданные в кустарных условиях. Программный продукт сегодня -это объект промышленного производства, к его созданию привлечены сотни тысяч людей, тиражи таких продуктов достигают сотен миллионов копий. Расширяется круг задач, в которых используются программные продукты. Очевидно, что создана благоприятная ситуация для все более глубокой интеграции программного продукта во все сферы человеческой жизни.

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

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

Многие крупные международные организации по стандартизации занимаются проблемой оценки и обеспечения качества программных продуктов, что подчеркивает существование и актуальность проблемы. На сегодняшний день выпущено несколько десятков международных стандартов, регламентирующих вопросы, связанные с качеством программных продуктов. В настоящее время наиболее распространенным и используемым международным стандартом в области качества программной продукции является 150/11-Х' 9126, модель качества, определенная в этом стандарте, берется за основу в данном исследовании.

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

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

Цслыо диссертационного исследования является разработка методики количественной опенки одного из показателей качества программных продуктов -«анализиру емости».

Для достижения поставленной цели необходимо решить следующие задачи:

• На основе анализа состояния вопроса в области оценивания и контроля «анализируемое™» программных продуктов выявить основные недостатки существующих подходов.

• Дать точное, формализованное определение характеристике качества программного продукта - «анализируемость».

• Разработать методику анализа программного кода на предмет анализируемости, позволяющую получать объективную, количественную оценку показателя качества «анализируемость» в соответствии с поставленными требованиями, ограничениями, назначением и специфическими особенностями продукта.

• Разработать распознаватель программного кода по показателю качества «анализируемость», обладающий способностью к распознаванию «нового» программного кода, т.е. обладающий способностью к обобщению.

• Сформировать набор метрик программного кода, по возможности, полно оценивающих показатель качества «анализируемость».

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

• Получить аналитическое представление «анализируемости» программного кода.

• Разработать комплекс алгоритмов, реализующих автоматизированное решение задачи оценки показателя качества «анализируемость».

• Разработать программный комплекс реализующий алгоритмы количественной оценки а - анализируемости посредством диалога с пользователем.

• Обосновать эффективность предложенной методики количественной оценки «анализируемости» программных продуктов.

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

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

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

Научная новизна состоит в том, что:

• Сформулирована и поставлена задача получения формализованной оценки показателя качества «анализируемость», в соответствии с которой введено, определено и формализовано понятие а - аналшируемости программного кода.

• Разработана методика количественной оценки показателя качества «анализируемость».

• Разработан распознаватель а - анализируемости, способный эффективно оценивать «анализируемость» программного кода.

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

• Получено аналитическое представление а - анализируемости программного кода, подтверждающее эффекпшность предложенной оценки «анализируемости»

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

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

• Создан практический инструмент для оценивания в условиях рыночной конкуренции качества программных продуктов по показателю «анализируе мость».

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

проблемы и перспективы» в 2007-2009гт., ежегодных научно-практических конференциях «Неделя науки. Наука МИИТа-транспорту» в 2007-2009гг., заседаниях кафедры «Математическое обеспечение автоматизированных систем управления» МИИТ'а в 20072009гг.

Реализация результатов работы. Программный модуль, реализующий количественную оценку «анализируемостп» программных продуктов внедрен в ЗАО «ИнтехГеоТранс». Результаты диссертации используются в учебном процессе кафедры «Математическое обеспечение автоматизированных систем управления». Результаты внедрения подтверждены соответствующими актами.

Публикации. По теме диссертации опубликованы 6 работ, из них - две работы - в ведущих изданиях из перечня, определенного ВАК России для опубликования основных результатов диссертаций.

Структура и объем диссертации. Диссертация состоит из введения, 4-х глав и заключешш, 5 приложений, списка литературы, включающего 59 наименований, изложена на 166 страницах и поясняется 12 рисунками, 29 таблицами, 5 графиками я 26 примерами.

Содержание работы

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

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

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

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

распространенным и используемым международным стандартом в области оценки качества ITC является ISO/IEC 9126 (российский перевод ГОСТ Р ИСО/МЭК 9126 - 93), который определяет качество как «весь объем признаков и характеристик продукции или услуги, который относится к их способности удовлетворять установленным или предполагаемым потребностям», а качество программного обеспечения как «весь объем признаков и характеристик программной продукции, который относится к ее способности удовлетворять установленным или предполагаемым потребностям».

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

• категорийно-описательный, отражающий набор свойств и общие характеристики объекта - его функции, категории ответственности, защищенности и важности;

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

• количественный, представляемый множеством упорядоченные числовых точек, отражающих непрерывные закономерности, которые можно объективно измерить и численно сопоставить с требованиями;

В стандарте 1SO/IEC 9126 приводятся 6 базовых характеристик качества, из которых, па сегодняшний день, лишь меньшую часть можно измерить количественно, остальные же показатели качества относятся, по точности измерения, к качественным или категорийно-описательным. Очевидно, что такое положение дел приводит к необоснованным управленческим решениям в области управления качеством, принятым на основе неформализованных, интуитивных оценок качества, что ведет к неоправданному риску, срыву сроков проектов, превышению бюджетов и, в конечном итоге, к финансовым потерям.

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

В программировании в цене качества выделяют согласованную (conformance) и несогласованную (non-conformance) цену:

• Согласованная цена качества - это сумма, затраченная на достижение качества продукта.

• Несог ласованная цена качества включает все издержки понесенные, вследствие выявления недостатков, возникновения ошибок и выхода из строя.

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

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

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

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

В основной части стандарта ISO/IEC 9126 ке дается определения анализируемое™, оно приводится в приложешш и iiocirr рекомендательный характер:

«Анализирусмость» (Analysability) - атрибуты программного обеспечения, относящиеся к усилиям, необходимым для диагностики недостатков ми случаев отказов или определения составных частей для модернизации.

Комплексный показатель «аналнзируемость» относится к характеристике качества «сопровождаемо«!.», которая определяется в стандарте как:

«Сопровождаемость» (Maintainability) - Набор атрибутов, относящихся к объему работ, требуемых для проведения конкретных изменений (модификаций). Изменение может включать исправления, усовершенствования или адаптацию программного обеспечения к изменениям в окружающей обстановке, требованиях и условиях функционирования.

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

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

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

В данном диссертационном исследовании при оценке «анализируемости» программного продукта «аналнзируемость» оценивается на уровне программного кода, исключая комментарии. Такое оценивание не противоречит определению, данному в стандарте, и позволяет более точно определить суть «анализируемости».

И так, под «анализируемостыо» программного продукта понимается «аналнзируемость» программного кода данного программного продукта, исключая комментарии.

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

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

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

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

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

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

Пусть V начальная сложность алгоритма, пусть К. коэффициент, зависящий от формы представления (языка описания алгоритмов), пусть V* сложность того же алгоритма при конкретной реализации, следовательно неравенство примет такой вид (1):

(1)

V

Из неравенства (1) видно, что если форма представления алгоритма не затрудняет его понимания (К=1), а реализация не усложняет его, то сложность конкретной реализации совпадает с начальной сложностью алгоритма. Как уже упоминалось выше, для каждой формы представления необходимо вводить поправку на сложность восприятия самой формы представления, т.е. алгоритм, реализованный при помощи разных форм представления (например, на разных языках программирования), будет иметь разную сложность - ЛГ, х К", А'г х V' и т.д. Один и тот же алгоритм, описанный при помощи одной и той же формы представления, также может иметь разную сложность, т.е. время затрачиваемое специалистом на его понимание будет разным - ЛГ, х И,' Ф А', х . Это различие в сложности конкретных реализаций зависит от количественных показателей того представления, на котором описан алгоритм. Например, для императивных языков программирования это сложность потока управления, потока данных, размеры программы и каких-либо се элементов. Очевидно, что фактически существует некий коэффициент А, способный учитывать эти измеряемые характеристики различных реализаций алгоритма, тогда неравенство (1) необходимо переписать следующим образом (2):

(2)

V v

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

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

В методике количественной оценки а - анализируемое™ выделяются два этапа:

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

• Получение количественной оценки а - анализируемости. На основе распознавателя, полученного на первом шаге, получение количественной оценки а - анализируемости.

Ниже приведены общие алгоритмы работы первого и второго этапов методики количественной оценки а-анализируемости программных продуктов.

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

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

2) Провести сбор доступных количественных метрик с каждого программного продукта из множества «эталонно анализируемых» ПП.

3) Применить к ранее выбранным программным продуктам алгоритмы «запутывающих преобразований», тем самым получить ПП с «эталонной неанализ1груемостью», т. е. такие ПП, у которых а - анализируемость минимальна.

4) Второй раз провести сбор доступных количественных метрик с каждого программного продукта из множества «эталонно неанализируемых» ПП.

5) Построить распознаватель а - анализируемости ПП на основе искусственной нейронной сети и обучить ее методом «обучение с учителем» распознаванию ПП из первой и второй групп.

Получение кодачественной оценки а - анализируемое™:

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

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

3) Подать на вход распознавателя, полученного на первом этапе, Значение мезрше, измеренных на втором шаге.

4) Получить количественную оценку а - анализируемости, как результат работы распознавателя.

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

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

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

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

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

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

Методика количественной оценки и - анализируемости, разработанная в главе 2, не накладывает ограничения ни на язык программирования, на котором разработан ПП, а -анализируемость которого будет оцениваться, ни на метрики, используемые при

метрическом анализе, ни ка алгоритмы «запутывающих преобразований», пи на используемый распознаватель. Очевидно, что нет ни универсальных метрик программного обеспечения, ни «запутывающих преобразований» (которые часто используют особенности конкретного языка программирования), подходящих для всех языков программирования. Следовательно, для разработки данного программного модуля были решены следующие задачи:

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

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

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

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

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

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

В качестве языка программирования, на котором будет оцениваться а -анализируемость ПП, выбран объектно-ориентированный язык Java версии 1.4. За ПП, обладающие «эталонной анализируемоетыо», приняты ПП, подготовленные специалистами компании Sun Microsystems, в качестве обучающих примеров. Эти примеры, вместе с исходными кодами, находятся в открытом доступе и поставляются

вместе с SDK. (Software Development Kit). Каждый пример оформлен в виде отдельного приложения и представляют собой полноценный ГШ па языке Java. Поскольку каждое из этих приложений готовилось специалистами компании как «эталонный» пример использования языка Java, то в данной работе делается предположение и об «эталонной» анализируемости этих приложений, как одного из показателей их качества. Для данного диссертационного исследования была выбрана следующая версия библиотеки: The J2SE Software Development Kit (SDK v. 1.4.2 J 9).

Для метрической оценки программных продуктов был сформирован набор из 44 метрик, количественно измеряющих различные свойства ГШ. В сформированный набор были включены метрики размера, сложности потока управления, сложности потока данных.

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

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

На графике 1 представлен один из этапов выбора наилучшей конфигурации ИНС, отображены точность обучения и способность к обобщению ИНС с 1 скрытым слоем, 5, 7 и 10 нейронами в скрытом слое, сигмоидой в качестве актив анионной функции и алгоритмом обучения «метод отжига металла»:

0,5 0,4 0,3

9

5 0,2

0,1

\ 1

— * ___

1 ( 4 1 — —.

1 1

50

100

150

200

-10 нейронов -

-10 нефонов ■

-5 нейронов — -5 нейронов •

-7 нейронов — - 7 нейронов

График 1. Точность обучения и способность к обобщению

В итоге, было установлено, что при данных условиях (44 входа ИНС, данная обучающая выборка и пр.) лучшие результаты показывает сеть с 1 скрытым слоем, 10 нейронами в скрытом слое, сигмоидой (3) в качестве активационной функции и алгоритмом обучения «метод отжига металла».

1

1 + е~

(3)

Температура в алгоритме обучения изменяется по закону (4).

ад/г.)

(4)

Веса нскусствешюй нейронной сети меняются по закону (5).

(5)

Среднеквадратична)! ошибка вычисляется по формуле (6).

V * п

(6)

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

Основной целью при проведении эксперимента являлось доказательство эффективности предложенного подхода к оценке показателя качества «анализируемость». В качестве дополнительных целей проведения эксперимента можно выделить следующие:

• Получение аналинпсского представления функции количественной оценки а -анализируемое™

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

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

• Выбран один из крупнейших в мире сайтов по разработке ПО с открытым исходным кодом (http.//sourceforge.net). На февраль 2009 года на сайте зарегистрировано 230.000 программных проектов с открытым исходным кодом.

• При помощи поиска на сайте по запросу «Java 1.4» отобраны все удовлетворяющие этому запросу проекты, tía май 2009 года таких проектов зарегистрировано на сайте 20401. Проекты отсортированы по релевантности, т.е. по степени соответствия запроса и найденного (уместности результата).

• При помощи метода полного перебора отобраны первые 10 работающих ПП, написанных на Java не выше версии 1.4.2 с открытым исходным кодом.

Общее количество *.java файлов во всех примерах 425. Размер приложений варьируется от 14 Кб до 369 Кб.

В качестве экспертов для оценки тестовых ПП по показателю качества «анализируемость» были привлечены специалисты в области разработки программного обеспечения, общим количеством 15 человек. Перед началом эксперимента им была разъяснена суть эксперимента и предложено оценить каждый из 10 программных продуктов по показателю качества «анализируемость». «анализируемость» предлагалось оценивать по 100 бальной шкале.

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

по методике

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

Поскольку распознаватель и - анализируемости построен на основе ИНС. то его работу можно представить в аналитическом виде, который для данного конкретного случая (44 измеряемые мегрики программного кода, которые служат входами ИНС, 1 скрытый слой в ИНС, 10 нейронов в скрытом слое и пр.) примет следующий вид: Рез!=Р(Вх1 * Вес| + Вх2 * Вес2 + ... + Вх«* Вес44) Рез2= Р" (Вх, * Вес45 + Вх2 * Вес45 + ... + Вх44 * Вес88)

Резт= Р (Вх| * Всс3>7 + Вх2 * Вес398 + ... + ВХ4.1 * Вес^о) а - анализируемосгь = Р (Рез] * Вес44! + Рез2 * Вес«2 + ... + Резю * Вес450), где Рсз, - значение, полученное на скрытом слое.

Вх,- 1-е входное значение. Вес, - 1-й вес.

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

I

Таблица 2

Метрики уровня класса.

Название метрики Степень влияния метрики на а-аиализируемостъ программного кода

Взвешенные методы на класс (Метрика Чидамбера-Кемерера) 3%

Глубина дерева наследования (Метрика Чидамбера-Кемерера) 25%

Отклик для класса (Метрика Чидамбера- 1%

График 3. Доля метрик в количественной оценке а - анализируемости

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

Таблица 1

Метрики уровня метода.

Название метрики Степень влияния метрики на а -анализируемое» программного кода

Словарь метода (Метрика Холстеда) 7%

Сложность метода (Метрика Холстеда) 2%

Объем метода (Метрика Холстеда) 1%

Цикломатическое число Мак-Кейба 12%

Метрика Мансона 17%

Длина идентификаторов 9%

В Словарь метода (Меприка Холстеда) (7%) О Объем метода {Метрика Холстеда) (1%) о Метрика Мансона для метода (17 %)

■ Взвешенные методы на класс (Метрика Чидамбера-Кемерера) (3%)

■ Отклик для класса (Метрика Чидэмбера-Кемерера) (1%) В Количество методов с модификатором public (2%)

В Длина названий методов (1 %) О Длина названий классов, интерфейсов (2%)

И Сложность метода (Метрика Холстедз) (2%) □ Цикломэтическое число Мах-Кейба для метода (12%) ы Длина идетификзторов (*>%)

В Высота дерева наследования (Метрика Чидамберэ-Кемерера) (25 %) ■ Недостаток связности а методах (Метрика Чидамбера-Кемерера) (1%) а Метрика Мансона длч класса (1%) В Количество детей (Метрика Чидэмбера-Кемерера) (15%) В Остальные 29 метрики (2%)

Кемерера)

Недостаток связности в методах (Метрика Чидамбера-Кемерера) 1%

Количество методов с модификатором public 2%

Метрика Мансона 1%

Длина названий методов 1%

Таблица 3 Метрики уровня приложения.

Название метрики Степень влияния метрики на а— анализируемость программного кода

Количество детей (Метрика Чидамбера-Кемерера) 15%

Длина названий классов, интерфейсов 2%

Остальные 29 метрики составляют лишь 2% от результата.

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

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

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

• Разработана методика оценки программного кода на предмет «анализируемости», позволяющая получать объективную количественную оценку показателя качества «анализируемость» в соответствии с поставленными требованиями, ограничениями, назначением и специфическими особенностями продукта.

• Разработан распознаватель программного кода по показателю качества «анализируемость», обладающий способностью к распознаванию «нового» программного кода, т.е. обладающий способностью к обобщению.

• Предоставлен инструмент, позволяющий на языке программирования Java версии 1.4 выявлять метрики в наибольшей степени влияющие на

«аналтируемость» 1111. Установлено, что для тестовых ПТ1 из 44-х измеряемых метрик 98% «анализируемое™» составляют лишь 15 метрик программного кода, остальные 29 метрики составляют лишь 2% «анализируемое™».

• Сформирован набор «запутывающих преобразований» для языка программирования Java версии 1.4, оказывающих влияние на «аналшируемость» программного кода. Произведено исследование влияния «запутывающих преобразований» на метрики программного кода, что позволяет сформировать инструментарий для исследования свойств программных кодов и его использования при построении распознавателя а - анализируемое™.

• Аналитическое представление «анализируемое™» программного кода дает возможность при проектировании программных продуктов задавать количественные характеристики свойств продукта.

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

• Проведенное имитационное моделирование показывает удовлетворительную сходимость результатов экспертной оценки «анализируемое™» и а -анализируемое™, измеренной по разработанной методике.

Основные результаты диссертации опубликованы в работах:

1. Стружков С. А. Определение и формализованное описание показателя качества «анапизируемоегь». //Естественные и технические науки, 2009 г., № 4 - ISSN 1684-2626-С. 7-12.

2. Стружков С. А. Разработка методики количественной оценки «анализируемое™» программного кода. //Естественные и технические науки, 2009 г., № 5, - ISSN 1684-2626 - С. 20-25.

3. Стружков С.А. Практическое применение метода™ количественной оценки «анализируемое™» программных продуктов. //Труды всероссийской научно-практической конференции «Транспорт России: проблемы и перспективы». М.: МИИТ, 2009 г. С. - 54-55.

4. Стружков С.А. Проблема формализации базовых показателей качества программного обеспечения на примере «сопровождаемое™». //Труды всероссийской научно-практической конференции «Транспорт России: проблемы и перспективы». М.: МИИТ, 2008 г. -С. 3.13.

5. Стружков С.Л. Шаблоны проектирования как новый этап в повторном использовании и абстракции программного кода. /АГруды всероссийской научно-практической конференции «Транспорт России: проблемы и перспективы». М: МИИТ,2007 г.-С. 84-85.

6. Стружков С.Л. Экстремальное программирование как альтернативный подход к проектированию программных продуктов. //Труды научно-практической конференции «Неделя науки 2007. Наука МИИТа-транспорту». М.: МИИТ, 2007 г.-С.З.

СТРУЖКОВ СЕРГЕЙ АЛЕКСАНДРОВИЧ

РАЗРАБОТКА МЕТОДИКИ КОЛИЧЕСТВЕННОЙ ОЦЕНКИ «АНАЛШИРУЕМОСТИ» ПРОГРАММНЫХ ПРОДУКТОВ 05.13.17 - Теоретические основы информатики

Подписано к печати //. 09. Объем 1,5 п.л.

Печать офсетная. Формат 60x84/16 Тираж 80 экз. Заказ № 633:__

Типография МИИТ», 127994, ГСП-4, Москва, ул. Образцова. 9, стр. 9

Оглавление автор диссертации — кандидата технических наук Стружков, Сергей Александрович

Введение.

Глава 1. Анализ проблемы оценки качества программного обеспечения.

Основные понятия и определения предметной области.

Состояние проблемы.

Определение понятия качества.

Международные стандарты оценки качества ПС.

Характеристики качества ПС.

Метрики характеристик качества ПС.

Цена качества.

Постановка задачи диссертационного исследования.

Выводы по главе 1.

Глава 2. Разработка методики количественной оценки а - анализируемости программных продуктов.

Метрический анализ программного кода.

Запутывания программного кода (обфускация).

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

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

Формализация и определение понятия а - анализируемость.

Требования к методике.

Разработка методики.

Разработка распознавателя.

Выводы по главе 2.

Глава 3. Разработка программного комплекса для количественной оценки а — анализируемости программных продуктов на основе разработанной методики, методов и алгоритмов.

Алгоритм функционирования программного комплекса.

Разработка программного комплекса.

Функциональные возможности разработанной системы.

Выводы по главе 3.

Глава 4. Применение разработанных методик, методов, алгоритмов и программного комплекса для решения практических задач.

Проведение эксперимента.

Цели и задачи эксперимента.

Условия проведения эксперимента.

Ход и результаты эксперимента.

Анализ результатов эксперимента.

Возможные применения результатов диссертации.

Выводы по главе 4.

Введение 2009 год, диссертация по информатике, вычислительной технике и управлению, Стружков, Сергей Александрович

Актуальность работы.

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

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

Цель и задачи.

Целью диссертационного исследования является разработка методики количественной оценки одного из показателей качества программных продуктов - «анализируемости».

Для достижения поставленной цели необходимо решить следующие задачи:

• На основе анализа состояния вопроса в области оценивания и контроля «анализируемости» программных продуктов выявить основные недостатки существующих подходов.

• Дать точное, формализованное определение характеристике качества программного продукта - «анализируемо сть».

• Разработать методику анализа программного кода на предмет анализируемости, позволяющую получать объективную, количественную оценку показателя качества «анализируемость» в соответствии с поставленными требованиями, ограничениями, назначением и специфическими особенностями продукта.

• Разработать распознаватель программного кода по показателю качества «анализируемость», обладающий способностью к распознаванию «нового» программного кода, т.е. обладающий способностью к обобщению.

• Сформировать набор метрик программного кода, по возможности, полно оценивающих показатель качества «анализируемость».

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

• Получить аналитическое представление «анализируемости» программного кода.

• Разработать комплекс алгоритмов, реализующих автоматизированное решение задачи оценки показателя качества «анализируемость».

• Разработать программный комплекс реализующий алгоритмы количественной оценки а - анализируемости посредством диалога с пользователем.

• Обосновать эффективность предложенной методики количественной оценки «анализируемости» программных продуктов.

Объектом исследования является программный продукт, а именно его исходный программный код.

Предметом исследования является количественная оценка показателя качества «анализируемость».

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

Выводы по главе 4

• Поставлены цели и сформулированы задачи проведения эксперимента.

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

• Произведена количественная оценка а — анализируемости на тестовых 1111.

• Произведен анализ полученных результатов и сделан вывод об эффективности предложенной методики оценки а — анализируемости.

• Выявлен набор метрик позволяющих адекватно оценить показатель качества «анализируемость» на языке программирования Java 1.4. На тестовых ПП из 44 измеряемых метрик 98% «анализируемости» составляют лишь 15 метрик программного кода, остальные 29 метрики составляют 2 % «анализируемости».

• Получено аналитическое представление «анализируемости» программного кода:

• Предложены возможные варианты использования результатов диссертационного исследования.

Заключение

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

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

• Разработана методика оценки программного кода на предмет «анализируемости», позволяющая получать объективную количественную оценку показателя качества «анализируемость» в соответствии с поставленными требованиями, ограничениями, назначением и специфическими особенностями продукта.

• Разработан распознаватель программного кода по показателю качества «анализируемость», обладающий способностью к распознаванию «нового» программного кода, т.е. обладающий способностью к обобщению.

• Предоставлен инструмент, позволяющий на языке программирования Java версии 1.4 выявлять метрики в наибольшей степени влияющие на «анализируемость» 1111. Установлено, что для тестовых ПП из 44-х измеряемых метрик 98% «анализируемости» составляют лишь 15 метрик программного кода, остальные 29 метрики составляют лишь 2% «анализируемости».

• Сформирован набор «запутывающих преобразований» для языка программирования Java версии 1.4, оказывающих влияние на «анализируемость» программного кода. Произведено исследование влияния «запутывающих преобразований» на метрики программного кода, что позволяет сформировать инструментарий для исследования свойств программных кодов и его использования при построении распознавателя а — анализируемости.

• Аналитическое представление «анализируемости» программного кода дает возможность при проектировании программных продуктов задавать количественные характеристики свойств продукта.

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

• Проведенное имитационное моделирование показывает удовлетворительную сходимость результатов экспертной оценки «анализируемости» и а - анализируемости, измеренной по разработанной методике.

Библиография Стружков, Сергей Александрович, диссертация по теме Теоретические основы информатики

1. Большой Российский энциклопедический словарь. М.: Изд-во Большая Российская энциклопедия, 2007 г.

2. ГОСТ 28806-90. Качество программных средств. М.: Изд-во стандартов, 1991 г.

3. ГОСТ Р ИСО/МЭК 9126 93. Информационная технология. Оценка программной продукции. Характеристики качества и руководство по их применению. М.: Изд-во стандартов, 1994 г.

4. Крайер Э. Успешная сертификация на соответствие нормам ИСО серии 9000: Пер. с нем. М.: Изд-во ИЗДАТ, 1999 г.

5. Липаев В.В. Оценка качества программных средств. Сетевой журнал — 2002 г., №3 Электронный ресурс. Режим доступа: http://www.setevoi.rU/cgi-bin/text.pl/magazines/2002/3/52, свободный.

6. Липаев В.В. Стандартизация характеристик и оценивания качества программных средств Приложение к журналу «Информационные технологии», 2001 г., № 4.

7. Липаев В.В. Методы обеспечения качества крупномасштабных программных средств. М.: Изд-во Синтег, 2003 г.

8. Липаев В.В. Выбор и оценивание характеристик качества программных средств. М.: Изд-во Синтег, 2001г.

9. Douglas L. Java Control Flow Obfuscation. A thesis submitted in partial fulfillment of the requirements for the degree of Master of Science in Computer Science. University of Auckland. June 3, 1998 r.

10. Романов В. Ю. Статический анализ программ. Метрики для измерения качества программного обеспечения. Электронный ресурс. Режим доступа:http://old.master.cmc.msu.ru/romanov/russian/pub/MartinMetrics.html, свободный.

11. Christian С., Ginger М., Michael S. An Empirical Study of Java Bytecode Programs Электронный ресурс. Режим доступа: ftp://ftp.cs.arizona.edu/reports/2004/TR04-ll.pdf, свободный.

12. Christian С., Clark Т., Gregg М. Dynamic Graph-Based Software Watermarking Электронный ресурс. Режим доступа: ftp://ftp.cs.arizona.edu/reports/2004/TR04-08.pdf, свободный.

13. Christian С., Kelly Н. The Obfuscation Executive Электронный ресурс. -Режим доступа: ftp://ftp.cs.arizona.edu/reports/2004/TR04-03.pdf, свободный.

14. Christian С., Clark Т., Douglas L. Manufacturing Cheap, Resilient, and Stealthy Opaque Constructs. Электронный ресурс. Режим доступа:http://www.cs.arizona.edu/~collberg/Research/Publications/CollbergThombors onLow98a/A4.pdf, свободный.

15. Lai H. A comparative survey of Java obfuscators available on the Internet. Электронный ресурс. Режим доступа:http://www.cs.auckland.ac.nz/~cthombor/Students/hIai/hongying.pdf, свободный.

16. Чернов А. В., Анализ запутывающих преобразований программ. Труды Института Системного программирования РАН Электронный ресурс. -Режим доступа: http://www.citforum.ru/security/articles/analysis, свободный.

17. Лифшиц Ю. Запутывание (обфускация) программ. Обзор. 19 декабря 2004 г. Электронный ресурс. Режим доступа: http://logic.pdmi.ras.ru/~yura/papers/lifshits2005obfuscation, свободный.

18. Уоссермен Ф. Нейрокомпьютерная техника: Теория и практика. Перевод на русский язык, Ю. А. Зуев, В. А. Точенов, М.: Изд-во Мир, 1992 г.

19. Яхъяева. Г. Э. Нечеткие множества и нейронные сети. М.: Изд-ва БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий. 2008 г.

20. Kevin S. Applying Neural Networks: A practical Guide. Publisher: Morgan Kaufmann; 1996 r.

21. Терехов А. А., Туньон В. Современные модели качества программного обеспечения. BYTE/Россия, 1999 г., №12.

22. Аншина М. Страсти по качеству. Открытые системы 1998 г., № 6. Электронный ресурс. - Режим доступа: http://www.osp.rU/os/l 998/06/179607/, свободный.

23. Jeffrey V., Software Quality's Eight Greatest Myths. IEEE Software -September/October 1999 r.

24. IEEE Std 982.1 2005 IEEE Standard Dictionary of Measures of the Software Aspects of Dependability. ISBN: 0-7381-4846-6. Publication Date: 2006 r.

25. IEEE Std 1012-1998 IEEE Standard for Software Verification and Validation. ISBN: 0-7381-0196-6. Publication Date: 20 Jul 1998 r.

26. IEEE Standard for Software Verification and Validation Supplement to 10121998 - Content Map to IEEE 12207.1. ISBN: 0-7381-1425-1. Publication Date: 21 Dec 1998 r.

27. Сборник действующих международных стандартов ИСО серии 9000. Т. 1, 2, 3. М.: Изд-во ВНИИКИ, 1998 г.

28. John J. Marciniak, Encyclopedia of Software Engineering, 2 Volume Set, 2nd Edition. ISBN: 978-0-471-37737-5. Publication Date:January 2002 r.

29. Глудкин О.П., Горбунов H.M., Гуров А.И., Зорин Ю.В. Всеобщее управление качеством: Учебник для вузов. М.: Изд-во Радио и связь, 1999 г.

30. Гличев А.В. Основы управления качеством продукции. М.: Изд-во МАИ, 1998 г.

31. Кулямин В. В. Технологии программирования. Компонентный подход Лекция 5. Качество ПО и методы его контроля Электронный ресурс. -Режим доступа: http://panda.ispras.ru/~kuliamin/sdt-course.html, свободный.

32. Роберт У. Себеста Основные концепции языков программирования. Concepts of Programming Languages. — 5-е изд. — М.: Изд-во Вильяме, 2001 г.

33. Гради Буч, Объектно-ориентированный анализ и проектирование с примерами приложений на С++. М.: Изд-во Бином, 1998 г.

34. Антошина И.В., Домрачев В.Г., Ретинская И.В. Основные тенденции оценивания качества программных средств. Качество, инновации, образование №4, 2002 г.

35. Воробьев В.И., Копыльцов А.В., Пальчук Б.П., Юсупов P.M. Методы и модели оценивания качества программного обеспечения. С-Пб.: Изд-во СПИИРАН 1992 г.

36. The International Obfuscated С Code Contest. Электронный ресурс. -Режим доступа: http://www.ioccc.org, свободный.

37. Вайнштейн В., Македонский М., Попов А. Управление качеством в процессах разработки программного обеспечения. Компьютера 2003 г. №4.

38. Wheeler Sh., Duggins Sh., Improving Software Quality. ACM Proceedings of the 36th Annual Conference on South-East Regional Conference, April 1998 r.

39. Eric В. Baum, David Н., What Size Net Gives Valid Generalization, MIT Press Cambridge, MA, USA, Neural Computation Spring 1989, Vol. 1, No. 1.

40. Изосимов A.B., Рыжко А.Л., Метрическая оценка качества программ, М.: Изд-во МАИ, 1989 г.

41. Холстед М.Х. Начала науки о программах. М.: Изд-во Финансы и статистика 1981 г.

42. John С. Munson. Software Engineering Measurement. Auerbach Publications. Publication Date: 2003 r.

43. Chidamber S.R., Kemerer C.F. A Metric Suite for Object Oriented Design. IEEE Transactions on Software Engineering vol. 20, no. 6. Publication Date: 1994 r.

44. Горбань A.H. Обучение нейронных сетей. M.: Изд-во СП Параграф, 1990 г.5 4. Благо датских В.А., Волнин В.А., Поскакалов К.Ф. Стандартизация разработки программных средств. М.: Изд-во Финансы и статистика, 2006 г.

45. Макконнелл С. Совершенный код. Мастер класс., пер. с англ., М: Изд-во Русская редакция, 2007 г.

46. Стружков С.А. Практическое применение методики количественной оценки «анализируемости» программных продуктов. Труды всероссийской научно-практической конференции «Транспорт России: проблемы и перспективы». М., 2009 г.

47. Стружков С.А. Проблема формализации базовых показателей качества программного обеспечения на примере «сопровождаемости». Труды всероссийской научно-практической конференции «Транспорт России: проблемы и перспективы». М., 2008 г.