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

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

Оглавление автор диссертации — кандидата физико-математических наук Черноножкин, Сергей Константинович

Введение

1 Меры сложности программ

1.1 Введение

1.2 Объемные метрики.

1.3 Топологические меры сложности программ.

1.3.1 Цикломатическая мера сложности Мак-Кейба.

1.3.2 Мера сложности Хансена.

1.3.3 Интервальная мера сложности.

1.3.4 Топологическая мера.

1.3.5 Функциональная мера сложности Харрисона—Мейджела

1.3.6 Характеристический полином PCN и его варианты

1.3.7 Узловая мера (KNOTS).

1.4 Меры, основанные на учете потока данных.

1.4.1 Меры Хенри и Кафуры.

1.4.2 Мера Овиедо.

1.4.3 Мера Тая.

1.5 Комплексные, или гибридные, меры.

1.5.1 Комплексная мера Кокола.

1.6 Метрики, направленные на измерение плана (дизайна) системы

1.6.1 Мера Мак-Клура.

1.6.2 Мера стабильности плана модуля.

1.6.3 Расширение цикломатической меры для вычисления сложности архитектурного плана модуля.

1.7 Метрики для объектно-ориентированных языков.

1.8 Меры сложности для распределенных программ.

1.8.1 Метрики оценки графа параллельности

1.8.2 Метрики недетерминизма

1.8.3 Метрика цикломатической сложности.

1.8.4 Метрика потока данных.

1.9 Набор мер для языка Модула

1.10 Метрические компиляторы и возможные подходы применения получаемых результатов

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

2.2 Обзор применения профилей и методов их построения.44

2.3 Постановка задачи и основные определения.46

2.4 Входные и выходные данные профилировщика.47

2.5 Средства для построения профиля .49

2.6 Основные функции и их реализация.50

2.7 Заключение.52

3 Критерии тестирования, системы построения тестов и оценки полноты набора тестов 54

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

3.1.1 Критерии функционального тестирования.62

3.1.2 Критерии структурного тестирования.63

3.2 Система TGS проекта СОКРАТ.77

3.2.1 Определения.79

3.2.2 Критерии структурного тестирования в системе СОКРАТ 80

3.2.3 Функционирование системы и ее компоненты.83

3.2.4 Реализация системы.85

3.2.5 Компонент построения условий реализуемости (символическое исполнение программы).90

3.2.6 Компонент оценки набора тестов на полноту в проекте СОКРАТ .93

3.2.7 Заключение .95

3.3 Система ОСТ .96

3.3.1 Механизм работы системы.96

3.3.2 Инструментация исходной программы.98

3.3.3 Язык описания тестовых условий.101

3.3.4 Заключение.108

Заключение 109

Литература 110

Приложение А. Методика использования средств измерения I

Приложение Б. Примеры работы профилировщика VI

Приложение В. Основные алгоритмы построения минимального дугового покрытия XIII

Приложение Г. Пример работы системы OCT XVII

Введение

Данная работа посвящена методам и инструментам контроля качества при создании программного продукта, причем рассматриваются не все показатели качества (см. [49]), а только два из них: надежность и эффективность. Г. Майерс [66] разбивает все принципы и методы обеспечения надежности, в соответствии с их целью, на четыре группы: предупреждение ошибок, обнаружение ошибок, исправление ошибок и обеспечение устойчивости к ошибкам. К первой группе относятся принципы и методы, позволяющие минимизировать или вообще исключить ошибки. Методы второй группы сосредоточивают внимание на функциях самого программного обеспечения, помогающих выявлять ошибки. К третьей группе относятся функции программного обеспечения, предназначенные для исправления ошибок или их последствий. Устойчивость к ошибкам — это мера способности системы программного обеспечения продолжать функционирование при наличии ошибок.

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

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

2. Методы достижения большей точности при переводе.

3. Методы улучшения обмена информацией.

4. Методы немедленного обнаружения и исправления ошибок — направлены на обнаружение ошибок на каждом шаге, не откладывая до тестирования после написания программы.

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

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

Обнаруживать ошибки в программах можно различными методами и системами их поддерживающими. Простейшие ошибки, связанные с незнанием языка программирования или с опечатками при наборе программы, выявляются компиляторами. Часть более сложных ошибок может быть обнаружена с помощью статических анализаторов программ[50, 51]. Однако с поиском и выявлением большинства ошибок периода исполнения связан один из наиболее трудоемких этапов разработки программного обеспечения — тестирование.

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

Для контроля за эффективностью программного продукта предлагаются методы и инструменты профилирования программ; их описание дано во второй главе.

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

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

Основные результаты:

1. На основе изучения и анализа имеющихся мер сложности программ разработана модель мер сложности для Модула-2-программ. Данная модель включает меры для процедуры, модуля определений и модуля реализаций. Она в совокупности позволяет оценить сложность данного модуля и принять необходимые решения по дальнейшему его использованию. Реализован набор инструментов, вычисляющий набор мер данной модели, и компонент, вычисляющий набор мер сложности для программ, написаннь^с на ассемблере ЕС ЭВМ. Разработана методика применения получаемых результатов.

2. Разработана концепция средств профилирования (средств сбора динамических характеристик программ) для ассемблерных и Модула-2-программ. Основным ее отличием от существующих является понятие частичного профиля программы (см. стр. 48). Проведена реализация данной концепции — созданы профилировщики ассемблерных и Модула-2-программ.

3. Предложен способ формального описания критериев тестирования с помощью понятий: "множество требуемых элементов" и покрытия данного множества. Разработан комплексный критерий тестирования для Модула-2/Оберон-2-программ, включающий семь критериев структурного тестирования (см. стр.

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

4. Исследована проблема построения минимального дугового покрытия для ассемблерных и Модула-2-программ. Предложен алгоритм построения минимального дугового покрытия с учетом тех замечаний и неточностей, которые присутствовали в алгоритме, предложенным К.А. Иыуду и М.М. Ариповым с уточнениями В.А. Шимарова.

В рамках проекта СОКРАТ реализована система TGS — строящая множество путей, покрывающих тестовые условия, задаваемые комплексным критерием, который состоит из следующих трех критериев структурного тестирования: С1, покрытия всех существенных определений переменных (all-defs) и покрытия циклов (all-cycles). Для критерия С1 строится минимальное дуговое покрытие, которое пополняется необходимым набором путей для выполнения двух оставшихся критериев. Для всех построенных путей создается формула их реализуемости (формула ограничений на входные данные, при выполнении которых программа будет исполняться по данному пути). Для ассемблерных программ строится формула времени исполнения по данному пути.

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

5. Реализована система ОСТ — система контроля тестированности Модула-2/Оберон-2-программ (система оценки полноты набора тестов), которая обеспечивает показ как степени тестированности программ по комплексному критерию, так и непокрытых, на текущий момент, тестовых элементов, что, в свою очередь, или помогает построить новые тесты для их покрытия, или простой анализ полученных результатов, связанных с непокрытостью определенных тестовых условий, приводит к выявлению ошибок в программе.

Заключение

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

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

1. Хайтун С.Д. Наукометрия. Состояние и перспективы. — М.: Наука, 1983.

2. Евстигнеев В.А., Кожевникова Г.П. Топологические меры сложности программ. — М., 1989. — 30 с. — (Препр. / АН СССР. Ин-т точной механики и вычисл. техники. Новосиб. фил.; №23).

3. Поттосин И.В. Система СОКРАТ: окружение программирования для встроенных систем. — Новосибирск, 1992. — 20 с. — (Препр. / РАН. Сиб. отд-ние. ИСИ; №11).

4. Холстед М.Х. Начало науки о программах Пер. с англ. В.М. Юфы. — М.: Финансы и статистика, 1981.

5. Евстигнеев В.А., Кожевникова Г.П. Топологические меры сложности программ. — М., 1985. — 18 с. — (Препр. / АН СССР. Ин-т точной механики и вычисл. техники. Новосиб. фил.; №9).

6. Евстигнеев В.А., Кожевникова Г.П. Топологические меры сложности программ: узловые, комплексные и прочие меры. — М., 1985.— 18 с. — (Препр. / АН СССР. Ин-т точной механики и вычисл. техники. Новосиб. фил.; №10).

7. Conte S.D., Dunsmore Н.Е., Shen V.Y. Software Engineering, Metrics and Models. — Menlo Park, CA: Benjamin/Cummings Inc., 1986.

8. DeMarco T. Controling software projects — managements &, estimation. — N. Y.: Yourdon Inc./Prentice-Hall Inc., 1982.

9. Card D. N., Glass R.L. Measuring software design quality. — New Jersey: Prentice Hall Inc., 1990.

10. Fenton N.E. Software metrics — arigorous approach. — London: Chapman & Hall, 1991.

11. Zuse H. Software complexity — measures and methods. — Berlin; N. Y.: De Gruyter Publisher, 1991.

12. Li H.F, Cheung W.K. An empirical study of software metrics // IEEE Trans. Software Eng. — 1987. — Vol. SE-13, №6. — P. 697—708.

13. Апостолова H. А., Гольдштейн Б. С., Зайдман Р. А. О программо-метрическом подходе к оценкам программного обеспечения // Программирование. — 1995. — №4 — С. 38—44.

14. Curtis В., Sheppard S. е. a. Measuring the psychological complexity of software maintenance tasks with the Halstead and McCabe metrics // IEEE Trans. Software Eng. — 1979. — Vol. SE-5, №2. — P. 79—90.

15. McCabe T.J. A complexity measure // IEEE Trans. Software Eng. — 1976. — Vol. SE-2, №4. — P. 308—320.

16. Hansen W.J. Measurement of program complexity by the pair (cyclomatic number, operator count) // SIGPLAN Not. — 1978. — Vol. 13, №3. — P. 61—64.

17. Myers G. An extension to the cyclomatic measure of program complexity // SIGPLAN Not. — 1977. — Vol. 12, №10. — P. 61—64.

18. Ousman G. Cyclomatic number do not measure complexity of unstructured programs//Inform. Processing Letters — 1979. — №12. — P. 207—211.

19. Harrison W., Magel K. A complexity measure based on nesting level // SIGPLAN Not. — 1981. — Vol. 16, №3. — P. 63—74.

20. Cantone G., Cimitile A., Sansone L. Complexity in program schemes: the characteristic polynomial // SIGPLAN Not. — 1983. — Vol. 18, №3. — P. 22—31.

21. Tamine J.J. On the use tree-like structures to symplify measures of complexity // SIGPLAN Not. — 1983. — Vol. 18, №9. — P. 62—69.

22. Wingerter R. A note on determining the complexity of algorithms // SIGPLAN Not. — 1984. — Vol. 19, №3. — P. 73—78.

23. Woodward M.R., Hennel M.A., Hedley D. A measure of control flow complexity in program text // IEEE Trans. Software Eng. — 1979. — Vol. SE-5, №1. — P. 45—50.

24. Harrison W. Software complexity metrics: a bibliography and category index //SIGPLAN Not. — 1884. — Vol. 19, №2. — P. 17—27.

25. Software Metrics. A subdivided bibliography. Research report IRB—007/92.— 34 p.

26. IEEE Std 1061-1992. IEEE Standart for a Software Quality Metrics Methodology. — N. Y.: Institute of Electronics and Engineers Inc., 1993.

27. Henry S., Kafura D. Software structure metrics based on information flow // IEEE Trans. Software Eng. — 1981. — Vol. SE-7, №5. — P. 510—518.

28. Weyuker E.J. Evaluating software complexity measures // IEEE Trans. Software Eng. — 1988. — Vol. 14, №9. — P. 1357—1365.

29. Tai K. A program complexity metric based on data flow information control graphs. // Proc. of the 7th Intern. Conf. on Software Eng., Okt., 1984. — P. 239—248.

30. Stoeffler K. Untersuchungen zu software-metriken fur nichtprozedurale pro-grammiersprachen // Diplomarbeit ander techichen universitat "Otto von Gueriche".— Magdeburg, 1991/92.

31. Kokol P. Using spreadsheet software to support metrics life cycle activities // SIGPLAN Not. — 1989. — Vol. 24, №5. — P. 27—32.

32. Harrison W., Cook C. A micro/macro measure of software complexity // J. Systems and Software.— 1987. — Vol.7. — P. 213—219.

33. Basili V.R., Hutches D.H. An empirical study of syntactic complexity family // IEEE Trans. Software Eng. — 1983. — Vol. SE-9, №6. — P. 664—672.

34. McClure C. A model for program complexity analysis. // Proc. Intern. 3rd Conf. on Software Eng., 1978. — P. 149—157.

35. Yau S.S., Collofello J.S. Desing stability measures for software maintenance // IEEE Trans. Software Eng. — 1985. — Vol. SE-11, №9. — P. 849—856.

36. Yau S.S., Collofello J.S. Some stability measures for software maintenance // IEEE Trans. Software Eng. — 1980. — Vol. SE-6, №6. — P. 545—552.

37. McCabe T.J., Butler C.W. Desing complexity measurement and testing // Communs. ACM. — 1989. — Vol. 32, №12. — P. 1415—1425.

38. Dumke R., Neumann K., Stoeffler K. The metrics based compiler — a current requirement // SIGPLAN Not. — 1992. — Vol. 27, №12. — P. 29—38.

39. Chidamber S.R., Kemerer C.F. Towards a metrics suite for object oriented design // SIGPLAN Not. — 1991. — Vol. 26, №11. — P. 197—211.

40. Sharble R.C., Cohen S.S. The object-oriented brewery: a comparison of two object-oriented development methods // ACM SIGSOFT Software Eng. Not. — 1993. — Vol. 18, №2. — P. 60—73.

41. Lieberherr K., Holland I., Riel A. Object-oriented programming: an objective sence of style // SIGPLAN Not. — 1988. — Vol. 23, №11. — P. 323—334.

42. Levin D. L., Taylor R. N. Metric-driven reengineering for static concurency analysis // Software Engineering Notes. — 1993. — Vol. 18, №3. — P. 40—50.

43. Shats S.M. Towards complexity metrics for Ada tasking // IEEE Trans. Software Eng. — 1988. — Vol. 14, №8. — P. 1122—1127.

44. Damerla S., Shatz S.M. Software complexity and Ada rendezvous: metrics based on nondeterminism // J. of System and Software. — 1992. — Vol. 17, №2. — P. 119—127.

45. Sellers В. H. Modularization and McCabe's cyclomatic complexity // Comm. ACM. — 1989. — Vol. 32, №3. — P. 344—354.

46. Кожевникова Г. П., Стогний А. А. Фасетная классификация мер качества программ // Кибернетика. — 1989. — №4. — С. 102—117.

47. Davis J.S., LeBlanc R.J. A study of the applicability of complexity measures // IEEE Trans. Software Eng. — 1988. — Vol. 14, №9. — P. 1366—1372.

48. Jensen H.A., Vairavan K. An experemental study of software metrics for real-time software // IEEE Trans. Software Eng. — 1985. — Vol. SE-11, №2.1. P. 231—234.

49. Липаев B.B. Качество программного обеспечения. — M.: Финансы и статистика, 1983.

50. Шелехов В.И. Структура программы в языково-ориентированном потоковом анализе// Программирование. — 1996. — №3. — С. 47—59.

51. Куксенко С.В., Шелехов В.И. Статический анализатор семантических ошибок периода исполнения// Программирование. — 1998. — №6. — в печати.

52. Черноножкин С.К. Меры сложности программ (Обзор) //Системная информатика. Вып. 5: Архитектурные, формальные и программные модели.

53. Новосибирск: Наука, 1997. — С. 188—227.

54. Черноножкин С.К. Меры сложности программ (Обзор). — Новосибирск, 1994. — 36с. — (Препр. /СО РАН. ИСИ; № 21).

55. Hudepohl J.P., Aud S.J., Khoshgoftaar T.M., Allen E.B., Mayrand

56. J. Emerald: software metrics and models on the desktop //IEEE Software. — September 1996. — P. 56—60.

57. Knuth D. E. An empirical study of FORTRAN programs // Stanford artifical intelligence project MEMO AIM-137. — 1971. — P. 42. — (Rep./ Computer science department; NSC-186).

58. Черноножкин С.К. Средства профилирования программ в системе СОКРАТ. — Новосибирск, 1998. — 20с. — (Препр. /СО РАН. ИСИ; № 48).

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

60. Lurie D. , Vandoni С. Statistics for FORTRAN identifiers and scatter storage techniques // Software Practice and Experience. — 1973. — Vol.3, №2. — P. 171—177.

61. Alexander W. G., Wortman D. B. Statistic and dynamic characteristics of XPL programs // Computer. — 1975. — Vol.8, №11. — P. 41—45.

62. Grune D. Some statistics on ALGOL 68 programs // SIGPLAN Notices. — 1975. — Vol.14, №7. — P. 38—46.

63. Феррари Д. Оценка производительности вычислительных систем. — М.: Мир, 1981.

64. Липаев В. В. Тестирование программ. — М.: Радио и Связь, 1986.

65. Fitch J. Profiling a large programm // Software Practice and Experience. — 1977. — Vol. 7, № 3, — P. 511—518.

66. Майерс Г. Надежность программного обеспечения / Пер. с англ. — М.: Мир, 1980. — 360 с.

67. Тейер Т., Липов М., Нельсон Э. Надежность программного обеспечения / Пер. с англ. — М.: Мир, 1981. — 323 с.

68. Поттосин И. В. Система СОКРАТ: Окружение программирования для встроенных систем. — Новосибирск, 1992. — 20 с. — (Препр. / РАН. Сиб. отд-ние. ИСИ; №11).

69. Захаров Л. А. Организация средств тестирования и отладки в кросс-системе программирования // Среда программированния: методы и инструменты. — Новосибирск, 1992. — С. 68—79.

70. Иыуду К. А., Арипов М. М. Автоматизация генерации путей для тестирования программ, написанных на Фортране // Программирование. — 1986. — №7. — С.24—31.

71. Weyuker Е. J. The cost of data flow testing: an empirical study // IEEE Trans, on Soft. Eng. — 1990. — Vol. 16, №2. — P. 121—128.

72. Борзов Ю. В. Тестирование программ с использованием символического выполнения // Программирование. — 1980. — №1. — С. 51—60.

73. Архангельский Б. В., Абдуллаев X. X. ТЕСТОР-ФОРТРАН — система тестирования заранее заданных путей управляющего графа программы // Управляющие системы и машины. — 1990. — №5. — С. 62—72.

74. Korel В. Automated software test data generation // IEEE Trans. Software Eng. — 1990. — Vol. SE-16, №8. — P. 870—879.

75. Евстигнеев В. А. Применение теории графов в программировании. — М: Наука, 1985.

76. Шимаров В. А. Средства поддержки структурного тестирования программ // Управляющие системы и машины. — 1988. — №2. — С. 54—59.

77. Кузьминов Т. В. Программные интерфейсы в трансляторе Модула-Y // Среда программирования: методы и инструменты. — Новосибирск, 1992. — С. 61—67.

78. Грис Д. Наука программирования: Пер. с англ. — М: Мир, 1984.

79. Шимаров В. А. Об одном методе тестирования программы на основе минимального покрытия ее графа // Управляющие системы и машины. — 1988. — №5. — С. 51—52.

80. Касьянов В. Н. Оптимизирующие преобразования программ. — М.: Наука, 1988.

81. Morell L. A theory of fault-based testing// IEEE Trans, on Software Eng. — 1990. — Vol.16, Ш. — P. 844—857.

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

83. Marick В. The craft of software testing. — London Englewood Cliffs: Prentice Hall, 1995.

84. Marick B. FAQ: testing tool suppliers. — Публикуется ежемесячно в телеконференции comp.software.testing.

85. Marre M., Bertolino A. Reducing and Estimating the Cost of Test Coverage Criteria // Proc. ICSE-18. — Los Alamitos, California: IEEE Computer Press, 1996. — P. 486—494.

86. Кауфман A.B., Черноножкин С.К. Инструменты поддержки структурного тестирования в системе СОКРАТ // Средства и инструменты окружений программирования. — Новосибирск, 1995. — С. 30—45.

87. Кауфман А.В., Черноножкин С.К. Структурное тестирование в системе СОКРАТ // Программные системы. — Новосибирск, 1996. — С. 135—148.

88. Harrold М., Gupta R., Soffa М. A methodology for controlling the size of a test suite//ACM Trans, on Software Eng. and Meth. — 1993. — Vol.2, №3. — P. 270—285.

89. Шимаров В.А. Иерархический подход к оценке сложности тестирования программ. — Минск, 1989. — 46 с. — (Препр. /АН БССР. Ин-т математики; №46(396)).

90. Budd Т. Mutation analysis: ideas, examples, problems and prospects // Computer Program Testing /Ed. by B. Chandrasekaran and S. Radicchi. — Amsterdam: North-Holland Publ., SOGESTA, 1981. — P.129—148.

91. Untch R., Offut A., Harrold M. Mutation analysis using mutant schemata // Software Eng. Notes. — 1993. — Vol.18, №4. — P. 139—148.

92. Laski J., Szermer W., Luczycki P. Dynamic mutation testing in integrated regression analysis // Proc. 15th Intern. Conf. on Software Eng. — Los Alami-tos, California: IEEE Computer Press, 1993. — P. 108—117.

93. Weyuker E. More experience with data flow testing // IEEE Trans, on Software Eng. — 1993. — Vol.19, №9. — P. 912—919.

94. Frankl P., Weyuker E. An applicable family of data flow testing criteria // IEEE Trans, on Software Eng. — 1988. — Vol.SE-14, №10. — P. 1483—1498.

95. Laski J., Luczycki P. System for testing and debugging, STAD 1.0. User Perspective. — Oakland Univ.: Technical Report TR-CSE-92-05-JWL-1, May 1992.

96. Laski J., Korel B. A data flow oriented program testing strategy // IEEE Trans, on Software Eng. — 1983. — Vol.9, №3. — P. 347—354.

97. Катков В.П. РИТМ-технология автоматизации программирования. — Минск, 1993.

98. Marick В. The generic coverage tool (GCT). — 28 Jan 1993. Доступно no ftp://cs.uiuc.edu/pub/testing.

99. Howden W. Weak mutation testing and completness of test sets // IEEE Trans, on Software Eng. — 1982. — Vol.SE-8, №4. — P. 371—379.

100. Marick B. Experience with the cost of different coverage goals for testing. — Motorola, 1990.101. xTech Development System. Native XDS v 2.12 for IBM Operating System/2. User's Guide. — xTech Ltd., 1995.

101. Ostrand Т., Balcer M. The category-partition method for specifying and generating functional tests // Communs. ACM. — 1988. — Vol.31, №6. — P.676—686.

102. Rapps S., Weyuker E. Selecting software test data using data flow information // IEEE Trans, on Software Eng. — 1985. — Vol.SE-14, №4. — P. 367—375.

103. Clarke L., a.o. A formal evaluation of data flow path selection criteria // IEEE Trans, on Software Eng. — 1989. — Vol.15, №11. — P. 244—251.

104. Frankl P., Weyuker E. Provable improvements on branch testing // IEEE Trans, on Software Eng. — 1993. — Vol.19, №10. — P. 962—975.

105. Tai K., a.o. Evaluation of a predicate-based software testing strategy // IBM Systems J. — 1994. — Vol.33, №3. — P. 445—457.

106. Tai K. Theory of fault-based predicate testing for computer programs // IEEE Trans, on Software Eng. — 1996. — Vol.22, №8. — P. 552—562.

107. Korel В., Al-Yami A. Assertion-oriented automated test data generation // Proc. of the ICSE-18. — Los Alamitos, California: IEEE Computer Press, 1996.1. P. 71—80.

108. Кауфман A.B., Черноножкин C.K. OCT: система контроля те-стированности Модула-2-программ. — Новосибирск, 1997. — 46 с. — (Препр./СО РАН. ИСИ; №38).

109. Кауфман А.В., Черноножкин С.К. Критерии тестирования и система оценки полноты набора тестов // Программирование — 1998. — №6.

110. Черноножкин С.К. Методы оценки тестированности программ // Третий Сибирский конгресс по прикладной и индустриальной математике (ИНПРИМ-98): Тез. докл. 4.5 — Новосибирск: Изд. ИМ СО РАН, 1998.1. С.52.