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

кандидата технических наук
Никифорова, Наталия Юрьевна
город
Владивосток
год
2003
специальность ВАК РФ
05.13.11
Диссертация по информатике, вычислительной технике и управлению на тему «Разработка и исследование методов и средств структурных испытаний программ»

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

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

НИКИФОРОВА Наталия Юрьевна

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

05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

Автореферат

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

Владивосток 2003

Работа выполнена в Институте автоматики и процессов управления (ИАПУ) ДВО РАН.

Научный руководитель:

доктор технических наук профессор

Борис Исаакович Коган

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

доктор физико-математических наук Константин Валентинович Кошель

кандидат технических наук Евгений Александрович Голенков

Ведущее предприятие:

Дальневосточный государственный университет (Владивосток)

Защита состоится

4

2003 года в ¿О часов на

заседании диссертационного совета Д 005.007.01 в Институте автоматики и процессов управления Дальневосточного отделения РАН по адресу:

690041, г. Владивосток, ул. Радио, 5

С диссертацией можно ознакомится в библиотеке Института автоматики и процессов управления Дальневосточного отделения РАН.

Автореферат разослан " Я " аМШЛ^ 2003 г.

Исп. обязанности ученого секретаря диссертационного совета д.т.н. ' ^ В.А.Бобков

Sooj-A

ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

Актуальность работы. Успехи технологии программирования последних лет привели к смещению акцента с просто разработки программного обеспечения на разработку высококачественного программного обеспечения. На достижение этой цели направлены усилия специалистов различного профиля, принимающих участие в разработке программных средств. Одним из основных видов деятельности в процессах разработки и сопровождения программного обеспечения являются испытания. Цель испытаний - убедиться, что программное средство функционирует в соответствии с требованиями заказчика и их спецификациями, и этим удостоверить его качество. Испытания программного обеспечения выполняются не только при создании новых компонентов программ, но и при всех их последующих изменениях. Следствием этого является высокая потенциальная стоимость испытаний, что, в итоге, ведет к уменьшению объема испытаний, а потому недостаточной проверенности программных средств, поставляемых заказчику или предлагаемых "на рынке". Одним из традиционных путей снижения стоимости и повышения эффективности испытаний является автоматизация их проведения, охватывающая все аспекты деятельности испытателей.

В работах Майерса (G. J. Myers), Пратера (R. Е. Prather), Мак-Кейба (T.J. McCabe), Канера (С. Капег) и других авторов описаны различные методы испытаний программного обеспечения, применяемые в настоящее время на практике. Однако эти методы имеют определенные недостатки и не гарантируют полную правильность программы по завершению их применения. Существующие методы и средства являются взаимодополняющими, и появление новых методов и средств позволяет либо получать "более правильные" программы, либо достигать этого более дешевым путем.

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

Диссертационная работа является частью исследований, проводившихся в контексте автоматизации измерения и оценивания программного обеспечения в рамках предложенного в Институте автоматики и процессов управления (ИАПУ) ДВО РАН языково-ориентированного подхода (ЯОП) к измерению и оцениванию качеств Основ-

ным требованием ЯОП является строгое, семантически обоснованное определение понятий предметной области качество программного обеспечения, что позволяет достичь единства в толковании этих понятий и связей между ними. В работах Б.И. Когана, Т.О. Матвеевой, С.Н. Остро-уховой и Е.А. Шалфеевой были определены принципы применения ЯОП к специфицированию требований к качеству программного средства, измерению составляющих его программных продуктов и оцениванию достигнутого в них уровня качества; построены обобщенная измерительная модель современного алгоритмического языка программирования и обобщенные статические модели программ, обеспечивающие интерпретацию метрик качества в терминах этих моделей; разработаны методы реализации функций статических измерений измерительных языковых процессоров.

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

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

1. Формально определить систему понятий, в терминах которых принято представлять результаты структурных испытаний программ.

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

3. Разработать методы реализации функций динамических измерений программ при использовании средств автоматизации построения трансляторов (языковых процессоров).

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

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

Научная новизна работы заключается в следующем.

1. Формально определены в терминах измерительной модели алгоритмического языка программирования традиционные методы и метрики покрытия испытаниями семантических языковых конструкций (компонентов) программной единицы и компонентов графа потока управления.

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

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

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

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

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

В работе получены следующие основные практические результаты.

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

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

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

3. Разработанное программное средство измерения процесса исполнения программ, написанных на языке Турбо Паскаль версии 7.0, включающее в себя метод покрытия потенциальных контекстов, используется в ИАПУ ДВО РАН как компонент измерительной среды для исследования языково-ориентированного подхода к измерению и оцениванию качества программ, написанных на алгоритмических языках программирования.

4. Вышеуказанное программное средство измерения процесса исполнения программ, написанных на языке Турбо Паскаль версии 7.0, используется в учебном процессе на кафедре программного обеспечения ЭВМ Института математики и компьютерных наук ДВГУ при выполнении курсовых и дипломных работ по специальности "Программное обеспечение вычислительной техники и автоматизированных систем".

Реализация результатов работы. Представленные в работе исследования по созданию методов и средств структурных испытаний программ в рамках языково-ориентированного подхода выполнены в рамках научно-исследовательских тем ИАПУ ДВО РАН:

• "Развитие методов и инструментальных средств решения задач математического моделирования, исследования операций, математического программирования, автоматизированной обработки знаний и графической информации с использованием параллельных вычислений и многопроцессорных вычислительных комплексов", № гос. регистрации 01200205277;

• "Методы и средства технологии автоматизированной обработки знаний, специфицирования и анализа программного обеспечения, распределенных вычислительных систем, обработки и визуализации графической информации с применением параллельных вычислений", № гос. регистрации 01.99.00 05772;

• "Методы и средства технологии создания экспертных систем, основанных на системах логических соотношений", № гос. регистрации 01.9.50006915.

В указанных работах автор принимал участие в качестве исполнителя.

Апробация работы. Основные научные и практические результаты работы докладывались и обсуждались на следующих конференциях и семинарах: IV Международной конференции "Качество программного

обеспечения информационных технологий" (Дагомыс, 1992); IV Международной конференции "Измерения, контроль и автоматизация производственных процессов" (Барнаул, 1997); Региональной научной конференции "Молодежь и научно-технический прогресс" (Владивосток, 1998); Дальневосточной математической школе-семинаре им. Е.В.Золотова (Владивосток, 1999 и 2000 гг.); IV Всероссийской научной Ыегпеь конференции "Компьютерное и математическое моделирование в естественных и технических науках" (Тамбов, 2002); 10-й Международной конференции 8ойСОМ-2002 "Программное обеспечение, телекоммуникации и компьютерные сети" (Сплит (Хорватия), Венеция, Анкона (Италия), Дубровник (Хорватия), 2002); совместных научных семинарах отдела экспертных систем ИАПУ ДВО РАН и Института математики и компьютерных наук ДВГУ.

Публикация результатов работы. По теме диссертации опубликовано 14 печатных работ.

Структура и объем работы. Диссертация состоит из введения, пяти глав, заключения, списка литературы и пяти приложений. Основная часть работы содержит 164 страницы текста, 24 рисунка. Список литературы содержит 106 наименований.

КРАТКОЕ СОДЕРЖАНИЕ РАБОТЫ

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

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

Вторая глава диссертационной работы посвящена решению первой задачи диссертационной работы.

Базовым понятием ЯОП к измерению и оцениванию качества программного обеспечения является так называемая измерительная модель языка программирования (ИМЯ) - обобщенная модель класса алгоритмических

языков программирования. Компонентом ИМЯ в частности является модель конструкции простой оператор. Для определения в терминах ИМЯ методов и метрик структурных испытаний программной единицы необходимо для каждого метода определить: покрываемый компонент -элемент множества покрываемых в соответствии с данным методом компонентов программной единицы или графа потока управления и покрытый компонент - элемент множества покрытых компонентов.

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

является множество трасс исполнения программной единицы, формальное определение которого приведено ниже.

Множество трасс исполнения программной единицы = {Описание исполнения программной единицы]

Описание исполнения программной единицы = (Имя программной единицы. Идентификация трассы. Список исполненных простых операторов)

Идентификация трассы = (Имя трассы, Имя теста)

Список исполненных простых операторов =

Номер простого оператора. Номер простого оператора I

Список исполненных простых операторов, Номер простого оператора

Имя программной единицы и Номер простого оператора здесь и далее являются ссылками на измерительную модель программной единицы.

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

Множество ветвей в программной единице = {Ветвь в программной единице]

Ветвь в программной единице = (Имя программной единицы,

Номер предикатного простого оператора, Номер следующего простого оператора)

Множество покрытых ветвей в программной единице = {Покрытая ветвь в программной единице}

Покрытая ветвь в программной единице = (Имя программной единицы,

Номер предикатного простого оператора, Номер следующего простого оператора)

Пусть для программной единицы с именем пате построено множество измерительных моделей простых операторов Операторы и множество трасс исполнения Трассы. Определим для этой программной единицы множество ветвей Ветви в программной единице и множество покрытых ветвей Покрытые ветви в программной единице.

3 s е Операторы | s = (пате,

Язык программирования,

п, /* Номер простого оператора */

Указатель типа простого оператора, Ссылка на метку,

(tj,..., fr,..., г«), /* Список номеров следующих по порядку выполнения простых операторов */ Список ссылок на операнды) &R> 1

=>3 В с, Ветви в программной единице, В = {br)r=i,.. л I Vre [l,...,R](b = (name,(n,tr)))

(3 be Ветви в программной единице | b = (пате, (nl, п2)))

& (3 t е Трассы | t = (пате, (Имя трассы, Имя теста), (hi,..., h„ ..., Л/)) & (3 i е [1,..., 7—1] | h, = nl & hl+1 = п2))

=> 3 с е Покрытые ветви в программной единице | с = (пате, (nl, п2))

| Покрытые ветви в программной единице |

D --i-i-

о Ветви в программно й единице

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

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

Контекстом в языке программирования (контекстом в программе) является часть трассы исполнения программы, такая, что она состоит из

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

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

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

Контекст в рамках семантической единицы языка программирования не является "полным покрытием" текста этой единицы. Это является следствием того, что в языках программирования есть конструкции, в рамках которых существует структура потока управления, и трасса исполнения семантической единицы может проходить только по некоторой части такой конструкции, и, следовательно, только по подмножеству языковых конструкций рассматриваемой семантической единицы. И это позволяет говорить о множестве потенциальных контекстов (МПК) фрагмента программы (ФП), строить и изучать не отдельные модели потенциальных контекстов, а модель множества потенциальных контекстов фрагмента программы (МПКФП).

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

МПКФП = (Идентификация фрагмента.

Множество видимых в ФП переменных,

Множество состояний переменных перед выполнением ФП,

Множество потенциальных путей в ФП,

Множество использованных переменных,

Множество состояний переменных после выполнения ФП)

Описаны особенности моделей МПК во фрагментах следующих типов: программная единица, блок, последовательность простых операторов, простой оператор.

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

Построение модели МПК программной единицы всегда начинается с объединения модели оператора-заголовка программной единицы и модели следующего за ним исполняемого оператора программы или блока. Результатом объединения является модель МПК фрагмента программной единицы - последовательности операторов. Полученная модель МПК последовательности объединяется с моделью МПК следующего оператора или блока и т.д. Формирование модели МПК блока всегда начинается с объединения модели МПК его первого оператора с моделью МПК стоящего за ним оператора или блока.

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

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

Множеством покрываемых компонентов для метода покрытия испытаниями потенциальных контекстов является множество потенциальных контекстов программной единицы. Условием покрытия потенциального контекста программной единицы при ее исполнении на некотором тесте является последовательное исполнение простых операторов, составляющих потенциальный контекст.

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

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

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

3. Затраты на создание статического и динамического компонентов средства измерения покрытия испытаниями потенциальных контекстов программной единицы аналогичны затратам на создание средств поддержки традиционных методов покрытия испытаниями.

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

Пятая глава работы посвящена решению третьей и четвертой задач диссертации.

Механизмом для получения значений мер внутренних свойств программ являются измерительные языковые процессоры (ИЯП). Для построения ИЯП, выполняющего оснащение текста измеряемой программы средствами сбора динамической информации, были использованы СПТ Тр Lex и Тр Yacc. Правила СПТ Тр Yacc были дополнены обращениями к подпрограммам библиотеки подпрограмм генерации расширенной программы, выполняющим расширение текста измеряемой программы операторами обращения к подпрограммам библиотеки подпрограмм сбора динамической информации и необходимыми языковыми конструкциями, обеспечивающими сохранение синтаксической и семантической правильности текста, и формирование таблицы соответствия простых операторов линейным участкам.

В процессе исполнения измеряемой программы, расширенной средствами сбора информации об исполнении, выполняются обращения к подпрограммам разработанной библиотеки подпрограмм сбора динами-

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

Разработанное при выполнении диссертационной работы программное средство предназначено для измерения процесса исполнения программ, написанных на языке Турбо Паскаль 7.0, с целью определения степени покрытия структурных компонентов программных единиц испытаниями. Схема выполнения динамических измерений и определения степени покрытия программ испытаниями с использованием измерительного анализатора представлена на рис. 1 (с. 14). На рисунке использованы следующие сокращения: ЕК - единица компиляции, ИЯМ - измерительная языковая модель, РТ - расширенный средствами сбора динамической информации текст.

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

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

Подсистема визуализации средства измерения процесса исполнения программ, разработанная В.М.Высоцким, обеспечивает возможность выделения на изображении графа потока управления "неконтекстных" путей, покрываемых и покрытых испытаниями компонентов (см. рис. 2, с. 15).

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

РТ Стандартный транслятор

1 г

Тесты Расширенная программа

1

Библиотека подпрограмм

сбора динамической информации

Библиотека подпрограмм построения множеств покрытых компонентов и вычисления значений метрик покрытия

Библиотека подпрограмм построения графа потока управления

Граф потока управления

Библиотека подпрограмм построения множества потенциальных контекстов

Множество потенциальных контекстов

Множество 'неконтекстных" путей

Библиотека подпрограмм построения множеств традиционно покрываемых компонентов

Г

Множества традиционно покрываемых компонентов

Подсистема визуализации

Рисунок 1. Схема выполнения динамических измерений и определения степени покрытия программ испытаниями с использованием измерительного анализатора.

игажшшашштшашшшттшяшшшшшшшшш^ш:

Рисунок 2. Выделение на изображениях графов потока управления

потенциального контекста, "неконтекстного" пути и покрытого испытаниями контекста.

ОСНОВНЫЕ РЕЗУЛЬТАТЫ РАБОТЫ

1. Формально определены в терминах измерительной модели алгоритмического языка программирования традиционные методы и метрики покрытия испытаниями семантических языковых конструкций (компонентов) программной единицы и компонентов графа потока управления. Полученные определения позволяют целостно встроить эти методы и метрики в программные средства поддержки языково-ориентированного подхода к измерению и оцениванию программных средств.

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

которая обычно выполняется при их динамических испытаниях -тестировании.

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

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

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

6. Разработано программное средство измерения процесса исполнения программ, написанных на языке Турбо Паскаль версии 7.0, включающее в себя метод покрытия потенциальных контекстов. Оно используется в ИАПУ ДВО РАН как компонент измерительной среды для исследования языково-ориентированного подхода к измерению и оцениванию качества программ, написанных на алгоритмических языках программирования, и на кафедре программного обеспечения ЭВМ Института математики и компьютерных наук ДВГУ при выполнении курсовых и дипломных работ по специальности "Программное обеспечение вычислительной техники и автоматизированных систем".

ОСНОВНЫЕ ПУБЛИКАЦИИ ПО ТЕМЕ ДИССЕРТАЦИИ

1. Никифорова Н.Ю. Система измерений Паскаль-программ для РС-подобных ЭВМ // IV Международная конференция "Качество программного обеспечения информационных технологий", 2-7 ноября 1992 г. Тезисы докл. М.: СНПО "Алгоритм", 1992. С.65-69.

2. Никифорова Н.Ю. Представление структурных свойств программ в терминах измерительных языковых моделей // Доклады 4-й Международной конференции "Измерения, контроль и автоматизация производственных процессов" - "ИКАПП-97". Том I: Измерение и информационные технологии в производственных процессах. Барнаул: Изд-во АлтГТУ, 1997. С. 125-127.

3. Коган Б.И., Никифорова Н.Ю. Модели традиционных покрытий испытаниями // Материалы региональной научной конференции "Молодежь и научно-технический прогресс". Тезисы докл. Владивосток: Изд-во ДВГТУ, 1998. С.100-101.

4. Никифорова Н.Ю. Определение и модель контекста в языке программирования // Сборник научных трудов Дальневосточной математической школы-семинара имени академика Е.В. Золотова. Тезисы докл. Владивосток: ИПМ ДВО РАН, 1999. С.63-64.

5. Никифорова Н.Ю. Определение и модель контекста в программе // Сборник научных трудов Дальневосточной математической школы-семинара имени академика Е.В. Золотова. Тезисы докл. Владивосток: ИПМ ДВО РАН, 2000. С.84-86.

6. Коган Б.И., Никифорова Н.Ю. Контекст в языках программирования: определение контекста в программе. Препринт 4-2001. Владивосток: ИАПУ ДВО РАН, 2001.21 с.

7. Коган Б.И., Никифорова Н.Ю. Контекст в языках программирования: модель контекста в программе. Препринт 5-2001. Владивосток: ИАПУ ДВО РАН, 2001.43 с.

8. Никифорова Н.Ю. Контекст в языках программирования: пример построения модели контекста в программе. Препринт 6-2001. Владивосток: ИАПУ ДВО РАН, 2001. 28 с.

9. Коган Б.И., Матвеева Т.О., Никифорова Н.Ю., Остроухова С.Н., Шалфеева Е.А. Автоматическое оценивание качества программных продуктов с использованием формализованных знаний предметной

области // Сборник научных статей (к тридцатилетию ИАПУ ДВО РАН). Владивосток: ИАПУ ДВО РАН, 2001. С.303-318.

10. Никифорова Н.Ю. Модель множества потенциальных контекстов программной единицы // Материалы IV Всероссийской научной Internet-конференции "Компьютерное и математическое моделирование в естественных и технических науках" / под ред. A.A. Арзамасцева. Тамбов: ИМФИ ТГУ им. Г.Р.Державина, 2002 г. Вып. 16. С. 22-26.

11. Коган Б.И., Матвеева Т.О., Никифорова Н.Ю. Традиционные методы покрытия испытаниями потока управления в программной единице. Часть 1: Методы, определяемые в терминах семантических конструкций языка программирования. Препринт 50-2002. Владивосток: ИАПУ ДВО РАН, 2002. 23 с.

12. Коган Б.И., Матвеева Т.О., Никифорова Н.Ю. Традиционные методы покрытия испытаниями потока управления в программной единице. Часть 2: Методы, определяемые в терминах компонентов графа потока управления. Препринт 29-2002. Владивосток: ИАПУ ДВО РАН, 2002. 33 с.

13. Cogan B.I., Matveeva Т.О., Nikiforova N.Yu. Formal definitions of language-based coverage metrics in the context of the language-oriented approach. In SoftCOM-2002, Proceedings of the 10th International Conference on Software, Telecommunications, and Computer Networks, October 8-11, 2002, University of Split, Croatia, 2002. P. 28-34.

14. Коган Б.И., Никифорова Н.Ю. Метод покрытия испытаниями потенциальных контекстов программной единицы. Препринт 10-2003. Владивосток: ИАПУ ДВО РАН, 2003. 32 с.

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

Никифорова Наталия Юрьевна РАЗРАБОТКА И ИССЛЕДОВАНИЕ МЕТОДОВ И СРЕДСТВ СТРУКТУРНЫХ ИСПЫТАНИЙ ПРОГРАММ

Автореферат

Подписано к печати 26.05.2003 г. Усл. п. л. 1.0. Уч.-изд. л. 0.75. Формат 60x84/16. Тираж 100. Заказ 38.

Издано ИАПУ ДВО РАН. Владивосток, Радио, 5 Отпечатано участком оперативной печати ИАПУ ДВО РАН Владивосток, Радио, 5

« 1 094 6

QaoJ-A

Оглавление автор диссертации — кандидата технических наук Никифорова, Наталия Юрьевна

ВВЕДЕНИЕ

ГЛАВА 1 МЕТОДЫ И СРЕДСТВА ИСПЫТАНИЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. ОСНОВНЫЕ ПОНЯТИЯ

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

1.1.1 Качество программного средства.

1.1.2 Метрики свойств программных продуктов.

1.1.3 Методы измерений программного обеспечения.

1.1.4 Граф потока управления.

1.2 Испытания программного обеспечения.

1.2.1 Методы испытаний программного обеспечения.

1.2.2 Программные средства поддержки испытаний программного обеспечения. 2 О

1.3 Традиционные методы покрытия испытаниями потока управления в программной единице.

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

1.3.2 Методы покрытия испытаниями компонентов графа потока управления.

1.4 Языково-ориентированный подход к измерениям и оцениванию качества программных продуктов.

1.4.1 Характеристика языково-ориентированного подхода.

1.4.2 Измерительная модель конструкции простой оператор.

1.4.3 Определение графа потока управления в терминах измерительной языковой модели.

1.4.4 Динамические измерения программных продуктов.

1.4.5 Метод частотных счетчиков.

1.4.6 Трасса исполнения программной единицы.

1.4.7 Измерительный языковой процессор.

1.4.8 Построение измерительных языковых анализаторов с использованием систем построения трансляторов.

1.4.9 Статический измерительный анализатор языка программирования Турбо Паскаль версии 7.0.

1.5 Задачи диссертационной работы.

ГЛАВА 2 ФОРМАЛЬНЫЕ ОПРЕДЕЛЕНИЯ ТРАДИЦИОННЫХ

МЕТОДОВ И МЕТРИК СТРУКТУРНЫХ ИСПЫТАНИЙ ПРОГРАММНОЙ ЕДИНИЦЫ В ТЕРМИНАХ ИЗМЕРИТЕЛЬНОЙ ЯЗЫКОВОЙ МОДЕЛИ

2.1 Формальное определение множества трасс исполнения программной единицы.

2.2 Формальное определение метода покрытия операторов.

2.3 Формальное определение метода покрытия циклов.

2.3.1 Определение множества циклов.

2.3.2 Определение множества покрытых циклов.

2.4 Формальное определение метода покрытия ветвей в программной единице.

2.4.1 Определение множества ветвей в программной единице.

2.4.2 Определение множества покрытых ветвей в программной единице.

2.5 Формальное определение метода покрытия путей между определением и использованием значений переменных.

2.5.1 Определение множества путей между определением и использованием значений переменных.

2.5.2 Определение множества покрытых путей между определением и использованием значений переменных.

2.6 Формальное определение метода покрытия всех путей в программной единице.

2.6.1 Определение множества всех путей в программной единице.

2.6.2 Определение множества покрытых путей в программной единице.

2.7 Формальное определение метода покрытия вершин.

2.7.1 Определение множества вершин.

2.7.2 Определение множества покрытых вершин.

2.8 Формальное определение метода покрытия дуг.

2.8.1 Определение множества дуг.

2.8.2 Определение множества покрытых дуг.

2.9 Формальное определение метода покрытия ветвей в графе потока управления.

2.9.1 Определение множества ветвей в графе потока управления.

2.9.2 Определение множества покрытых ветвей в графе потока управления.

2.10 Формальное определение метода покрытия линейно-независимых путей.

2.10.1 Определение графа потока управления, преобразованного в сильно связный граф.

2.10.2 Определение множества элементарных контуров в преобразованном графе потока управления.

2.10.3 Определение базисного множества линейно-независимых путей графа потока управления.

2.10.4 Определение множества покрытых линейно-независимых путей.

2.11 Формальное определение метода покрытия простых путей.

2.11.1 Определение множества простых путей.

2.11.2 Определение множества покрытых простых путей.

2.12 Формальное определение метода покрытия всех путей в каждом цикле

2.12.1 Определение множества всех путей в каждом цикле.

2.12.2 Определение множества покрытых путей в циклах.

2.13 Выводы ко второй главе.

ГЛАВА 3 КОНТЕКСТ В ПРОГРАММЕ

3.1 Понятие контекст в естественном языке.

3.2 Интерпретация в терминах языка программирования понятий, используемых при определении контекста в естественном языке.

3.2.1 "Единица языка".

3.2.2 "Точно определенный смысл и значение единицы языка".

3.2.3 "Законченная по смыслу часть текста".

3.3 Основные отличия текста на языке программирования от текста на естественном языке.

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

3.5 Принципы построения модели множества потенциальных контекстов.

3.6 Модель множества потенциальных контекстов фрагмента программы

3.7 Построение моделей множества потенциальных контекстов в простом операторе.

3.7.1 Модель простого оператора с одним выходным потоком управления -МПКПО-1.

3.7.2 Модель простого оператора с несколькими выходными потоками управления - МПКПО-2.

3.8 Построение модели множества потенциальных контекстов в последовательности простых операторов.

3.9 Построение модели множества потенциальных контекстов в блоке

3.10 Построение модели множества потенциальных контекстов в программной единице.

3.11 Выводы к третьей главе.

ГЛАВА 4 МЕТОД ПОКРЫТИЯ ИСПЫТАНИЯМИ ПОТЕНЦИАЛЬНЫХ

КОНТЕКСТОВ ПРОГРАММНОЙ ЕДИНИЦЫ

4.1 Определение метода покрытия испытаниями множества потенциальных контекстов программной единицы.

4.1.1 Множество потенциальных контекстов программной единицы.

4.1.2 Множество потенциальных контекстов, покрытых испытаниями.

4.2 Равнозначные методы покрытия испытаниями.

4.2.1 Метод покрытия операторов и метод покрытия вершин графа потока управления.

4.2.2 Метод покрытия ветвей в программной единице и метод покрытия ветвей в графе потока управления.

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

4.3.1 Метод покрытия потенциальных контекстов, метод покрытия операторов и метод покрытия вершин графа потока управления.

4.3.2 Метод покрытия потенциальных контекстов и метод покрытия дуг.

4.3.3 Метод покрытия потенциальных контекстов и метод покрытия ветвей

4.3.4 Метод покрытия потенциальных контекстов и метод покрытия циклов.

4.3.5 Метод покрытия потенциальных контекстов и метод покрытия простых путей.

4.3.6 Метод покрытия потенциальных контекстов и метод покрытия линейно-независимых путей.

4.3.7 Метод покрытия потенциальных контекстов и метод покрытия всех путей в каждом цикле.

4.3.8 Метод покрытия потенциальных контекстов и метод покрытия путей между определением и использованием значений переменных (метод покрытия def-use путей).

4.3.9 Метод покрытия потенциальных контекстов и метод покрытия всех путей.

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

4.4 Достоинства и недостатки метода покрытия потенциальных контекстов программной единицы.

4.4.1 Степень проверенности ^программной единицы, обеспечиваемая применением метода покрытия потенциальных контекстов.

4.4.2 Создание средств поддержки покрытия потенциальных контекстов.

4.4.3 Ресурсоемкость тестирования программной единицы при использовании метода покрытия потенциальных контекстов.

4.5 Выводы к четвертой главе.

ГЛАВА 5 МЕТОДЫ РЕАЛИЗАЦИИ ФУНКЦИЙ ДИНАМИЧЕСКИХ

ИЗМЕРЕНИЙ ИЗМЕРИТЕЛЬНОГО ЯЗЫКОВОГО ПРОЦЕССОРА. СОЗДАНИЕ ПРОГРАММНЫХ СРЕДСТВ ИЗМЕРЕНИЯ ПРОЦЕССА ИСПОЛНЕНИЯ ПРОГРАММ, ПОДДЕРЖИВАЮЩИХ СТРУКТУРНЫЕ ИСПЫТАНИЯ.

5.1 Измерение динамических свойств программ.

5.1.1 Расширение исходного текста измеряемой программы средствами сбора динамической информации.

5.1.2 Библиотека подпрограмм генерации расширенной программы.

5.1.3 Библиотека подпрограмм сбора динамической информации.

5.1.4 Создание с использованием систем построения трансляторов TP Lex и TP Yacc измерительного анализатора, обеспечивающего выполнение динамических измерений.

5.1.5 Выполнение динамических измерений программ с использованием измерительного анализатора.

5.2 Создание программных средств измерения процесса исполнения программ, поддерживающего структурные испытания.

5.2.1 Определение степени покрытия программ испытаниями с использованием измерительного анализатора.

5.2.2 Построение множеств покрываемых испытаниями компонентов.

5.2.3 Построение множеств покрытых испытаниями компонентов и вычисление значений метрик покрытия.

5.3 Выводы к пятой главе.

Введение 2003 год, диссертация по информатике, вычислительной технике и управлению, Никифорова, Наталия Юрьевна

Актуальность работы. Успехи технологии программирования последних лет привели к смещению акцента с просто разработки программного обеспечения на разработку высококачественного программного обеспечения. На достижение этой цели направлены усилия специалистов различного профиля, принимающих участие в разработке программных средств. Одним из основных видов деятельности в процессах разработки и сопровождения программного обеспечения являются испытания. Цель испытаний — убедиться, что программное средство функционирует в соответствии с требованиями заказчика и их спецификациями, и этим удостоверить его качество. Испытания программного обеспечения выполняются не только при создании новых компонентов программ, но и при всех их последующих изменениях. Следствием этого является высокая потенциальная стоимость испытаний, что, в итоге, ведет к уменьшению объема испытаний, а потому недостаточной проверенности программных средств, поставляемых заказчику или предлагаемых "на рынке". I

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

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

В работах Майерса (G. J. Myers) [35], Пратера (R. Е. Prather) [98], Мак-Кейба (T.J. McCabe) [94], Канера (С. Капег) [89, 90] и других авторов описаны различные методы испытаний программного обеспечения, применяемые в настоящее время на практике. Однако эти методы имеют определенные недостатки и не гарантируют полную правильность программы по завершению их применения. Существующие методы и средства являются взаимодополняющими, и появление новых методов и средств позволяет либо получать "более правильные" программы, либо достигать этого более дешевым путем.

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

Данная работа является частью исследований, проводившихся в контексте автоматизации измерения и оценивания программного обеспечения в рамках предложенного в Институте автоматики и процессов управления (ИАПУ) ДВО РАН языково-ориентированного подхода (ЯОП) к измерению и оцениванию качества программного обеспечения. Основным требованием ЯОП является строгое, семантически обоснованное определение понятий предметной области качество программного обеспечения, что позволяет достичь единства в толковании этих понятий и связей между ними. В работах Б.И. Кована, Т.О. Матвеевой, С.Н. Остроуховой и Е.А. Шалфеевой были определены принципы применения ЯОП к специфицированию требований к качеству программного средства, измерению составляющих его программных продуктов и оцениванию достигнутого в них уровня качества [16, 17, 19, 22, 36, 63, 64, 66, 68, 69]; построены обобщенная модель современного алгоритмического языка программирования [18, 20, 67, 70, 71] и обобщенные статические модели программ, обеспечивающие интерпретацию метрик качества в терминах этих моделей [48, 72]; разработаны методы реализации функций статических измерений измерительных языковых процессоров [44].

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

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

1. Формально определить систему понятий, в терминах которых принято представлять результаты структурных испытаний программ.

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

3. Разработать методы реализации функций динамических измерений программ при использовании средств автоматизации построения трансляторов (языковых процессоров).

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

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

Научная новизна работы заключается в следующем.

1. Формально определены в терминах измерительной модели алгоритмического языка программирования традиционные методы и метрики покрытия испытаниями семантических языковых конструкций (компонентов) программной единицы и компонентов графа потока управлений. Полученные определения позволяют целостно встроить эти методы и метрики в программные средства поддержки языково-ориентированного подхода к измерению и оцениванию программных средств.

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

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

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

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

В работе получены следующие основные практические результаты.

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

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

3. Разработанное программное средство измерения процесса исполнения программ, написанных на языке Турбо Паскаль версии 7.0, включающее в себя метод покрытия потенциальных контекстов, используется в ИАПУ ДВО РАН как компонент измерительной среды для исследования языково-ориентированного подхода к измерению и оцениванию качества программ, написанных на алгоритмических языках программирования.

4. Вышеуказанное программное средство измерения процесса исполнения программ, написанных на языке Турбо Паскаль версии 7.0, используется в учебном процессе на кафедре программного обеспечения ЭВМ Института математики и компьютерных наук ДВГУ при выполнении курсовых и дипломных работ по специальности "Программное обеспечение вычислительной техники и автоматизированных систем".

Реализация результатов работы. Представленные в работе исследования по созданию моделей, методов и средств структурных испытаний программ в рамках языково-ориентированного подхода выполнены в рамках научно-исследовательских тем ИАПУ ДВО РАН:

• "Развитие методов и инструментальных средств решения задач математического моделирования, исследования операций, математического программирования, автоматизированной обработки знаний и графической информации с использованием параллельных вычислений и многопроцессорных вычислительных комплексов", № гос. регистрации 01200205277;

• "Методы и средства технологии автоматизированной обработки знаний, специфицирования и анализа программного обеспечения, распределенных вычислительных систем, обработки и визуализации графической информации с применением параллельных вычислений", № гос. регистрации 01.99.00 05772;

• "Методы и средства технологии создания экспертных систем, основанных на системах логических соотношений", № гос. регистрации 01.9.50006915.

В указанных работах автор принимал участие в качестве исполнителя.

Апробация работы. Основные научные и практические результаты работы докладывались и обсуждались на следующих конференциях и семинарах:

• IV Международной конференции "Качество программного обеспечения информационных технологий" (Дагомыс, 1992);

• IV Международной конференции "Измерения, контроль и автоматизация производственных процессов" (Барнаул, 1997);

• Региональной научной конференции "Молодежь и научно-технический прогресс" (Владивосток, 1998);

• Дальневосточной математической школе-семинаре им. Е.В.Золотова (Владивосток, 1999 и 2000 гг.);

• IV Всероссийской научной Internet-конференции "Компьютерное и математическое моделирование в естественных и технических науках" (Тамбов, 2002);

• 10-й Международной конференции SofiCC)M-2002 "Программное обеспечение, телекоммуникации и компьютерные сети" (Сплит (Хорватия), Венеция, Анкона (Италия), Дубровник (Хорватия), 2002);

• совместных научных семинарах отдела экспертных систем ИАПУ ДВО РАН и факультета компьютерных наук Института математики и компьютерных наук ДВГУ. !

Публикация результатов работы. По теме диссертации опубликовано 14 печатных работ [21, 23, 24, 25, 26, 27, 28, 37, 38, 39, 40, 41, 42, 73]. I

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

Структура и объем работы. Диссертация состоит из введения, пяти глав, заключения, списка литературы и пяти приложений. Основная часть работы содержит 164 страницы текста, 24 рисунка. Список литературы содержит 106 наименований.

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

5.3 Выводы к пятой главе

1. Разработаны методы реализации функций динамических измерений измерительных языковых процессоров алгоритмических языков программирования, основанные на использовании систем построения трансляторов TP Yacc и TP Lex и разработке библиотек измерительных подпрограмм.

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

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

4. Разработанные измерительный анализатор и программное средство измерения процесса исполнения программ используются в ИАПУ ДВО РАН как 'компонент измерительной среды для исследования языково-ориенти-рованного подхода к измерению и оценке качества программ и на кафедре программного обеспечения ЭВМ Института математики и компьютерных наук ДВГУ при выполнении курсовых и дипломных работ по специальности "Программное обеспечение вычислительной техники и автоматизированных систем".

ЗАКЛЮЧЕНИЕ

В диссертации получены следующие основные результаты.

1. Формально определены в терминах измерительной модели алгоритмического языка программирования традиционные методы и метрики покрытия испытаниями семантических языковых конструкций (компонентов) программной единицы и компонентов графа потока управления. Полученные определения позволяют целостно встроить эти методы и метрики в программные средства поддержки языково-ориентированного подхода к измерению и оцениванию программных средств.

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

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

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

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

6. Разработано программное средство измерения процесса исполнения программ, написанных на языке Турбо Паскаль версии 7.0, включающее в себя метод покрытия потенциальных контекстов. Оно используется в ИАПУ ДВО РАН как компонент измерительной среды для исследования языково-ориентированного подхода к измерению и оцениванию качества программ, написанных на алгоритмических языках программирования, и на кафедре программного обеспечения ЭВМ Института математики и компьютерных наук ДВГУ при выполнении курсовых и дипломных работ по специальности "Программное обеспечение вычислительной техники и автоматизированных систем".

Библиография Никифорова, Наталия Юрьевна, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

1. Введение в языки программирования: Перевод с англ. М.: Мир, 1980. 192 с.

2. Берж К. Теория графов и ее применения. Перевод с франц. М.: Изд-во иностранной литературы, 1962. 319с.

3. Борковский А.Б. Англо-русский словарь по программированию и информатике (с толкованиями). М.: Рус. яз., 1990. 335 с.

4. Боэм Б., Браун Дж., Каспар X., Липов М., Мак-Леод Г., Мерит М. Характеристики качества программного обеспечения: Пер. с англ. М.: Мир, 1981.206 с.

5. Большая Советская Энциклопедия: в 30 т. / Гл. ред. A.M. Прохоров. М.: Советская энциклопедия, 1969-1978. Т. 1-30.

6. Грис Д. Конструирование компиляторов для цифровых вычислительных машин. Перевод с англ. М.: Мир, 1975. 544 с.

7. Оценка качества программных средств. Общие положения. ГОСТ 28195-89. М.: Издательство стандартов, 1989. 38 с.

8. Джонсон С.С. Yacc. http//www.docs.rinet.ru/YACC/yacc.html

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

10. Кауфман В.Ш. Языки программирования. Концепции и принципы. М.: Радио и связь, 1993. 432 с.

11. Коган Б.И. Экспериментальные исследования программ. М.: Наука, 1988. 184 с.

12. Коган Б.И. Измерительные языковые процессоры // Адаптируемые средства программирования. Методы оценки трансляторов: Материалы школы-семинара 5-10 июня 1989 г. Кишинев: ДНТ, 1989. С. 59-63.

13. Коган Б.И. Использование измерительных языковых процессоров в интеллектуальных средствах оценки качества программ // Методыповышения качества программного обеспечения: Материалы семинара. Владивосток: ДВО АН СССР, 1990. С.31-36.

14. Коган Б.И. Измерительные языковые процессоры для исследований и оценки качества программных средств: Диссертация на соискание ученой степени доктора технических наук. Владивосток: ИАПУ ДВО РАН, 1993.450 с.

15. Коган Б.И. Определение базовой объективной системы внутренних свойств программных продуктов. Препринт. Владивосток: ИАПУ ДВО РАН, 1996. 56 с.I

16. Коган Б.И., Матвеева Т.О. Повышение возможностей автоматизации оценки качества программ при использовании реляционного подхода к их измерению. // Вестник ДВО РАН, N 4, 1996. С. 29-42.

17. Коган Б.И., Остроухова С.Н. Построение измерительной модели языка программирования. Препр. Владивосток: ИАПУ ДВО РАН, 1996. 56 с.

18. Коган Б.И. Языково-ориентированный подход к оцениванию качества программного обеспечения // Информационные технологии, М.: Машиностроение, N.1, 1998. С.26-30.

19. Коган Б.И., Остроухова С.Н. Построение измерительной модели современного языка программирования. Препринт. Владивосток: ИАПУ ДВО РАН, 1998. 38 с.

20. Коган Б.И., Никифорова НЛО. Модели традиционных покрытий испытаниями // Материалы региональной научной конференции "Молодежь и научно-технический прогресс". Тезисы доклада. Владивосток: Изд-во ДВГТУ, 1998. С. 100-101.

21. Коган Б.И., Шалфеева Е.А. Средства специфицирования моделей и метрик. Препринт 34-2000. Владивосток: ПАПУ ДВО РАН. 47 с.

22. Коган Б.И., Никифорова Н.Ю. Контекст в языках программирования: определение контекста в программе. Препринт 4—2001. Владивосток: ИАПУ ДВО РАН, 2001. 21 с.

23. Коган Б.И., Никифорова Н.Ю. Контекст в языках программирования: модель контекста в программе. Препринт 5-2001. Владивосток: ИАПУ ДВО РАН, 2001. 43 с.

24. Коган Б.И., Никифорова Н.Ю. Метод покрытия испытаниями потенциальных контекстов программной единицы. Препринт 10-2003. Владивосток: ИАПУ ДВО РАН, 2003. 32 с.

25. Кодухов В.И. Общее языкознание. Учебное пособие для студентов фил. специальностей. М.: высшая школа, 1974. 303 с.

26. Колшанский Г.В. Контекстная семантика. М.: Наука, 1980. 150 с.

27. Кристофидес H. Теория графов. Алгоритмический подход. М.: Мир, 1978. 432 с.

28. Лавров С.С. Основные понятия и конструкции языков программирования. М.: Финансы и статистика, 1982. 22 с.

29. Лингвистический энциклопедический словарь / Гл.ред. В.Н.Ярцева. М.: Сов. энциклопедия, 1990. 685 с.

30. Литвин Ф.А. Многозначность слова в языке и речи. М.: Высшая школа, 1984. 119 с.

31. Майерс Г. Искусство тестирования программ. М.: Финансы и статистика, 1982. 176 с.

32. Матвеева Т.О., Шалфеева Е.А. Специфицирование метрик программных продуктов на основе измерительных языковых моделей // Информационные технологии, 1999. № 7. С. 15-21.

33. Никифорова Н.Ю. Система измерений Паскаль-программ для РС-подобных ЭВМ // IV Международная конференция "Качество программного обеспечения информационных технологий", 2-7 ноября 1992 г. Тезисы докл. М.: СНПО "Алгоритм", 1992. С.65-69.

34. Никифорова Н.Ю. Определение и модель контекста в языке программирования II Сборник научных трудов Дальневосточной математической школы-семинара имени академика Е.В. Золотова. Тезисы доклада. Владивосток: ИПМ ДВО РАН, 1999. С.63-64.

35. Никифорова Н.Ю. Определение и модель контекста в программе // Сборник научных трудов Дальневосточной математической школы-семинара имени академика Е.В. Золотова. Тезисы докл. Владивосток:

36. ИПМ ДВО РАН, 2000. С.84-86.

37. Никифорова Н.Ю. Контекст в языках программирования: пример построения модели контекста в программе. Препринт 6-2001. Владивосток: ИАПУ ДВО РАН, 2001. 28 с.

38. Ожегов С.И. Словарь русского языка / Под ред. Н.Ю. Шведовой. 18-е изд. М.: Рус.яз. 1986. 797 с.

39. Остроухова С.Н. Разработка и исследование измерительных процессоров алгоритмических языков программирования. ДиссертацияIна соискание ученой степени кандидата тех. наук. Владивосток: ИАПУ ДВО РАН, 2000. 142с.I

40. Першиков В.И., Савинков В.М. Толковый словарь по информатике. М.: Финансы и статистика, 1991. 543 с.

41. Русский язык. Энциклопедия /Гл.ред. Ю.Н.Караулов. 2 изд., М.: Большая Российская энциклопедия; Дрофа, 1997. 703 с.

42. Татт У. Теория графов. М.: Мир, 1988. 424 с.

43. Шалфеева Е.А. Разработка и исследование методов и средствформального специфицирования моделей и метрик программ.

44. Диссертация на соискание ученой степени кандидата тех. наук. Владивосток: ИАПУ ДВО РАН, 2000. 146 с.

45. Фахрутдинов К.И. Языки программирования. Владивосток: Изд-во Дальневосточного университета, 1991. 188 с.

46. Материалы сайта "Algolist". http://algoHst.manual.ru/maths/linalg/

47. AMI: Application of metrics in industry. A quantitative approach tosoftware management. London: South Bank University, 1993. 170 p. •

48. Bache R., Mullerburg M. Measures of testability as a basis for quality assurance // Software Eng. J., 1990. Vol.5. No.2. P. 86-92.

49. Bache R., Bazzana G. Software metrics for product assessment. McGraw-Hill Book Company, 1994. 249 p.

50. Basili V.R., Hutchens D.H. An empirical study of a syntactic somplexity family // IEEE Trans, on Software Eng., 1983. Vol.9. No.6. P.664-672.

51. Basili V.R., Briand L.C., Melo W.L. A validation of object-oriented design metrics as quality indicators // IEEE Trans, on Software Eng., 1996. Vol. 22. N. 10. P.751-761.

52. Bazzana G., Brigliadori R., Cole R., Kirkwood K., Seigneur F. Techniques and Tools for Software Assessment and Certification. Research Report SQ-12-93, University of Strathclyde, Department of Computer Science, 1993. 10 p.

53. Beizer B. Black-Box Testing. Wiley, 1995.

54. Ben-Menachem M., Marliss G.S. Software Quality. Producing Practical, Consistent Software. International Thomson Computer Press, 1997. 326 p.

55. Boehm B. Software Engineering Economics. Prentice-Hall, 1981.

56. Brian L., Emam K., Morasca S. On the Application of Measurement Theory in Software Engineering: International Software Engineering Research Network technical report #ISERN-95-04. 23 p.

57. The Brighton University Resource Kit for Students, 2002, http://burks.bton.ac.uk7burks/

58. Chidamber S.R., Kemerer C.F. A metrics suite for object oriented design: // IEEE Trans. Sofware Eng., 1994. V. 20, N. 6. P.476-493."

59. Cogan B.I. Building a basic system of internal attributes for software products: An objective approach // Proc. of Int. Conf. on Software Quality, Maribor, Slovenia, 1995. Maribor: University of Maribor press, 1995. P. 127-136.

60. Cogan B.I. and Hunter R.B. Language-oriented approach to software measurement, in SMS-96 (eds C. Munson and Walter F. Tichy), pp. 3 to 8, Proceedings of Software Metrics Symposium. Germany, 1996, Berlin: IEEE Computer Society Press, 1996.

61. Cogan B.I., Matveeva Т.О. A relational approach to software measurement and quality assessment. In ESCM'96 (ed Adrian J. Couderoy). Proc. 7th European Software Control and Metrics Conference. UK, 1996, Wilmslow. P. 280-291.

62. Cogan B.I., Ostrouchova S.N. Building a measuring model of a programming language, Research Report RR/96/200. Glasgow: University of Strathclyde, Department of Computer Science, 1996. 37 p.

63. Cogan B.I., Ostrouchova S.N. Building a measuring model of a modern programming language, Preprint Research Report, University of Strathclyde, Department of Computer Science,1998. 33 p.

64. Cogan B.I., Ostrouchova S.N. Measuring models of programming languages. In: B.Cogan, I.Rosman (eds). Proc. Slovenian-Russian

65. Workshop on Software Engineering, Vladivostok, 1998. Maribor University Press, 1998. P.77-90.

66. Cogan B.L, Shalfeeva E.A. A generalised structural model of structured programs for software metrics definition // Software Quality J., 2002, No.10. P. 147-165.

67. Cornett S. Code Coverage Analysis. 1995. http://www.bullseye.com/coverage.html

68. Coupal D., Robillard P.N. Factor analysis of source code metrics // J. Syst. and Software, 1990. Vol.12. No.3. P.263-269.I

69. Deutsch M. Verification and Validation // Software Engineering (R. Jensen and C. Tonies, eds.). Prentice-Hall, 1979. pp.329-480.

70. Fenton N.E. Software Metrics: A rigorous approach, Chapman & Hall, 1991. 336 p.

71. Fenton N.E. Software measurement: A necessary scientific basis // IEEE Trans, on Software Eng., 1994. Vol.20. No.3. P. 199-206.

72. Fenton N.E., Pfleeger S.L. Software metrics: A rigorous & practical approach. Second edition. International Thompson Computer Press, 1996. 638 p.

73. Ghani A.A., Hunter R. Standards for Sourse Code Metrics, Research Report

74. SQ-8-93., University of Strathclyde, Departnfent of Computer *1. Science,! 993. 14 p.

75. Gosling J., Joy В., Steele G. The Java language specification. Addison-Wesley Longman Inc. 1996. 825 p.

76. Harrison W. Using software metrics to allocate testing resources // J. Man.1.form. Syst., 1988. Vol.4. No.4. P.93-105.

77. Horgan J.R., London S, Lyu M.R Achieving software quality with testing coverage measures // IEEE Software, 1994. Vol.11. No.4. P.60-69.

78. EE standard glossary of software engineering terminology: ANSI/IEEE Std 610.12-1990. 83 p.

79. EE standard for a software quality metrics methodology: IEEE/ANSI Std 1061-1992. 88 p.

80. EE standard classification for software anomalies. IEEE/ANSI Std 10441993. 26 p.

81. O/IEC 9126, Software product evaluation Quality characteristics and guidelines for their use, 1991. 17p.

82. Kan S.H. Metrics and Models in Software Quality Engineering. Addison-Wesley, 1995.344 p.

83. Kaner Ci, Falk J., Nguyen H.Q. Testing Computer Software. 2nd ed., Van Nostrand-Reinhold, 1993.

84. Kaner C. Software negligence and testing coverage. Software QA Quarterly, 1996. Vol.2. P.2-18.

85. Manns Т., Coleman M. Software Quality Assurance. Second-'"edition. Macmillan press, 1996.235 p. ' ;

86. McCabe T. J. A complexity measure // IEEE Trans. Software Eng. 1976. Vol.2. No.4. P.308-320'.

87. Microman Examples and Download Links for Lex & Yacc. http://www.uman.com/lexyacc.stml

88. Pfleeger S.L. Software Engineering: the Production of Quality Software. Second edition. Macmillan Publishing Company, 1991. 517 p.

89. Prather R.E. An axiomatic theory of software complexity measure // Computer J., 1984. Vol 27. No.4. P. 340-347.

90. Prather R.E. On hierarchical software metrics // Sortware Eng. J., 1987. Vol.2. No.2. P.42-45.

91. Pressman R.S. Software Engineering: Practitioner's Approach. European Third edition (ed. D. Ince). McGraw-Hill Inc., 1994. 802 p.

92. Pressman R.S. Software Engineering: Practitioner's Approach. Fourth edition. McGraw-Hill Inc., 1997. 885 p.

93. Shepperd M. Foundation of software measurement. Prentice Hall International, 1995. 234p.

94. Software Quality Assurance and Measurement: A Worldwide Perspective (eds Fenton N., Whitty R., Iizuka Y.). International Thompson Computer Press, London, UK, 1995. 320 p.

95. Random House Webster's, Electronic Dictionary and Thesaurus, College Edition. Version 1.0. 1992.

96. Yourdon E., Constantine L.L. Structured design. Prentice Hall, Englewood Cliffs, NJ.1979.