WWW.DISUS.RU

БЕСПЛАТНАЯ НАУЧНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

 

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

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

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


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


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








АВТОРЕФЕРАТ

диссертации на соискание ученой степени

кандидата технических наук












Москва 2009

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

Научный руководитель: доктор технических наук, профессор Доенин Виктор Васильевич
Официальные оппоненты: доктор технических наук, профессор Горелик Владимир Юдаевич,
кандидат технических наук, старший научный сотрудник Ратин Геннадий Самуилович
Ведущая организация: Открытое акционерное общество «Научно-исследовательский институт железнодорожного транспорта» (ОАО «ВНИИЖТ»)

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

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

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

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

Ученый секретарь диссертационного совета Д218.005.04, д.т.н. В.Г.Сидоренко

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

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

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

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

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

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

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

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

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

Теоретическую основу исследования составили работы по:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(1)

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

(2)

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

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

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

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

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

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

  1. Выбрать в репрезентативном множестве достаточное количество программных продуктов (обучающая выборка) с максимальным значением - анализируемости, т. е. с такой «анализируемостью», которую можно определить как «эталонная анализируемость».
  2. Провести сбор доступных количественных метрик с каждого программного продукта из множества «эталонно анализируемых» ПП.
  3. Применить к ранее выбранным программным продуктам алгоритмы «запутывающих преобразований», тем самым получить ПП с «эталонной неанализируемостью», т. е. такие ПП, у которых – анализируемость минимальна.
  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_19).

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

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

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

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

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

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

(3)

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

(4)

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

(5)

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

(6)

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

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

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

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

  • Выбран один из крупнейших в мире сайтов по разработке ПО с открытым исходным кодом (http://sourceforge.net). На февраль 2009 года на сайте зарегистрировано 230.000 программных проектов с открытым исходным кодом.
  • При помощи поиска на сайте по запросу «Java 1.4» отобраны все удовлетворяющие этому запросу проекты. На май 2009 года таких проектов зарегистрировано на сайте 20401. Проекты отсортированы по релевантности, т.е. по степени соответствия запроса и найденного (уместности результата).
  • При помощи метода полного перебора отобраны первые 10 работающих ПП, написанных на Java не выше версии 1.4.2 с открытым исходным кодом.

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

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

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

График 2. Экспертная оценка анализируемости и анализируемость, рассчитанная по методике

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

Поскольку распознаватель – анализируемости построен на основе ИНС, то его работу можно представить в аналитическом виде, который для данного конкретного случая (44 измеряемые метрики программного кода, которые служат входами ИНС, 1 скрытый слой в ИНС, 10 нейронов в скрытом слое и пр.) примет следующий вид:

Рез1=F(Вх1 * Вес1 + Вх2 * Вес2 + … + Вх44 * Вес44)

Рез2= F (Вх1 * Вес45 + Вх2 * Вес46 + … + Вх44 * Вес88)

…….

Рез10= F (Вх1 * Вес397 + Вх2 * Вес398 + … + Вх44 * Вес440)

– анализируемость = F (Рез1 * Вес441 + Рез2 * Вес442 + … + Рез10 * Вес450), где

Резi – значение, полученное на скрытом слое.

F (x) = .

Вхi – i-е входное значение.

Весi – i-й вес.

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

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

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

Таблица 1

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

Название метрики Степень влияния метрики на – анализируемость программного кода
Словарь метода (Метрика Холстеда) 7%
Сложность метода (Метрика Холстеда) 2%
Объем метода (Метрика Холстеда) 1%
Цикломатическое число Мак-Кейба 12%
Метрика Мансона 17%
Длина идентификаторов 9%


Таблица 2

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

Название метрики Степень влияния метрики на – анализируемость программного кода
Взвешенные методы на класс (Метрика Чидамбера-Кемерера) 3%
Глубина дерева наследования (Метрика Чидамбера-Кемерера) 25%
Отклик для класса (Метрика Чидамбера-Кемерера) 1%
Недостаток связности в методах (Метрика Чидамбера-Кемерера) 1%
Количество методов с модификатором public 2%
Метрика Мансона 1%
Длина названий методов 1%


Таблица 3

Метрики уровня приложения.

Название метрики Степень влияния метрики на – анализируемость программного кода
Количество детей (Метрика Чидамбера-Кемерера) 15%
Длина названий классов, интерфейсов 2%


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

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

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

  • На основании проведенного анализа состояния вопроса, в области оценивания и контроля «анализируемости» программных продуктов, выявлены основные недостатки существующих подходов, при анализе которых стала очевидна необходимость в формализованном определении «анализируемости», что и было сделано при помощи введения понятия – анализируемости и его формализованном определении.
  • Разработана методика оценки программного кода на предмет «анализируемости», позволяющая получать объективную количественную оценку показателя качества «анализируемость» в соответствии с поставленными требованиями, ограничениями, назначением и специфическими особенностями продукта.
  • Разработан распознаватель программного кода по показателю качества «анализируемость», обладающий способностью к распознаванию «нового» программного кода, т.е. обладающий способностью к обобщению.
  • Предоставлен инструмент, позволяющий на языке программирования Java версии 1.4 выявлять метрики в наибольшей степени влияющие на «анализируемость» ПП. Установлено, что для тестовых ПП из 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 г. – С. 3.

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


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

Специальность: 05.13.17 Теоретические основы информатики

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

Печать офсетная. Формат 60х84/16

Тираж 80 экз. Заказ № ___________

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



 




<
 
2013 www.disus.ru - «Бесплатная научная электронная библиотека»

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