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

кандидата технических наук
Шереметьев, Константин Петрович
город
Москва
год
2002
специальность ВАК РФ
05.13.01
Диссертация по информатике, вычислительной технике и управлению на тему «Компилятор с инкрементным объектным кодом для управления разработкой программного обеспечения повышенной надежности»

Оглавление автор диссертации — кандидата технических наук Шереметьев, Константин Петрович

Введение.

Актуальность темы.

Цели предпринимаемого исследования.

Структура диссертационной работы.

1. Модель программной системы.

1.1, Сложность программного обеспечения.

1.1.1, Сложность предметной области.

1.1.2. Сложность модели предметной области.

1.1.3, Сложность внутренних связей программы.

1.1.4. Методы уменьшения сложности программного обеспечения.

1.2, Надежность программного обеспечения.

1.3, Обзор существующих компиляторов.

1.3.1, Компиляторы С++.

1.3.2, Компиляторы других языков программирования.

2. Методология программ 11ровання.

2.1, Общие принципы.

2.2, Обеспечение логики работы.

2.3, Обеспечение надежности программ.

2.4, Описание методологии разработки программ.

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

3.1, Выбор языка программирования.

3.2, Система программирования ПараФорт.

3.3, Структура ПараФорта.

3.4. Интегрированная среда ПараФорта.

3.4.1, Встроенный редактор.

3.4.2, Переход в интерпретатор (Esc, Tab ).

3.4.3, Вход в главное меню (F2).

3.4.4, Установка штампа (Рб).

3.4.5, Определение нового слова (AltP2).

3.4.6, Поиск (P7,AltP7,CtiiF7).

3.4.7, Переход к экрану (F8,CtriHome,CtrlEnd).

3.4.8, Встроенная помощь (F1).

3.4.9, Установка символа перехода на следующий экран (F9).

3.4.10, Отмена исправлений.

3.4.11, Смена экранного файла.

3.4.12, Дополнительные операции по редактированию строк.

3.4.13, Дополнительные операции по редактированию экранов.

3.4.14, Работа со строковым стеком.

3.4.15, Интерпретатор форт-слов.

3.5. Список слов.'.

3,5,1, Окно стека.

3.6. Реализация адресного интерпретатора.

3.6.1, Точка FIRST.

3.6.2, Точка NEXT.

3.6.3, Точка DEF.

3.6.4, Точка EXIT.

3.6.5, ТочкаОЕТРРА.

3.6.6, ToHKaDOES.

3.7. Свойства ПараФорта.

3.7.1. Поддержка международного стандарта ANS Forth-94.

3.7.2. Поддержка файловой системы MS-DOS.

3.7.3. Встроенный форт-ассемблер.

3.7.4. Поддержка вещественной арифметики.

3.7.5. Декомпиляция слов.

3.7.6. Трассировка слов.

3.7.7. Расширение парадигмы Форта.

3.7.8. Разработка приложений.

3.7.9. Компрессия словаря.

3.7.10. Псевдо 32-разрядность.

3.7.11. Быстрая компиляция.

3.7.12. Векторизация слов.

3.8. Библиотеки ПараФорта.

3.8.1. Поддержка объектно-ориентированного программирования.

3.8.2. Оконная библиотека.

3.8.3. Графическая библиотека.

3.8.4. Библиотека для работы с базами данных.

4. Применение системы ПараФорт и ее дальнейшее развитие.

4.1. Применение системы.

4.2. Использование ПараФорта в учебном процессе.

4.3. Система программирования Форт--Ягуар.

4.4. Сравнительное тестирование.

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

Аитуальность темы

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

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

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

С другой стороны все возрастающая сложность программного обеспечения выдвигает совершенно другие требования к программисту. Если для программирования строго формализованных математических задач требуется только аккуратность и внимательность, то неформальные задачи требуют от программиста способности выделять наиболее существенные, ключевые признаки объектов и работать с ними. Программист должен иметь способность «четко видеть действительные трудности, и отбрасывать все не относящееся к делу» [49]. Для облегчения'этой задачи сама методология программирования должна подталкивать к этому, должна предоставлять возможность скрьпия несущественных деталей в используемых программных конструкциях и тем самым предоставлять возможность программисту сконцентрироваться на наиболее важных свойствах задачи.

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

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

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

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

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

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

4. Входные данные для программы соответствуют тем ограничениям, которые указаны в техническом задании на программу.

5. Информационные ресурсы, которыми пользуется программа (память, дисковое пространство, прерывания и т.п.), не заняты другими программами. 9

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

Цели предпринимаемого исследования

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

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

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

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

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

• Определены требования к инструментальной среде, поддерживающей данные методы.

• Разработана инструментальная среда, соответствующая этим методам. и

Структура диссертационной работы

Диссертационная работа состоит из четырех глав.

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

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

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

В четвертой главе рассматриваются применения системы ПараФорт и дальнейшие направления ее развития.

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

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

1. Выделены ключевые факторы, определяющие эффективность работы программиста по критериям скорости разработки и надежности ПО.

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

3. Разработан метод поэлементной сборки программы из элементов с одновременным автоматическим локальным тестированием.

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

5. Заключение

Библиография Шереметьев, Константин Петрович, диссертация по теме Системный анализ, управление и обработка информации (по отраслям)

1. Апресян Ю. Лексическая семантика. - М.: Наука, 1975.

2. Баранов С.Н., Ноздрунов Н.Р. Язык Форт и его реализации. Л.: Машиностроение. 1988.

3. Бентли Д. Жемчужины творчества программистов. Пер. с англ. М.: Радио и связь, 1990.

4. Борзенко А. IBM PC: устройство, ремонт, модернизация. М.: ТОО фирма «КомпьютерПресс», 1996.

5. Бунин Э. Excel Visual Basic для приложений: Пер. с англ. М.: Восточная Книжная Компания, 1996.

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

7. Вилкас Э., Майлинас Е. Решения, информация, моделирование. М.: Радио и связь, 1981.

8. Вирт Н. Алгоритмы + структуры данных = программы: пер. в англ. М.: Мир, 1985

9. Витенко О., Яковлев В. Visual Basic 4.0 в бюро: К.: Издательская группа BHV, 1997.

10. Гладков С, Фролов Г. Программирование в Microsoft Windows. М.: ДИАЛОГ-МИФИ, 1993.

11. Гладун В. Планирование решений. Киев: Наукова думка, 1987.

12. Гончаров А. Access 7.0 в примерах. СПб: 1997.

13. Гринзоу Л. Философия программирования для Windows 95/NT. Пер. с англ. СПб., Символ-Плюс, 1997

14. Громов Г.Р. Очерки информационной технологии. М. : ИнфоАрт, 1992.

15. Дейт К. Введение в системы баз данных. Пер. с англ. М.: Наука, 1980.

16. Джехани Н. Программирование на языке Си. Пер. с англ. М.: Радио и связь, 1988.

17. Джехани Н. Язык Ада: пер. с англ. Москва.: Мир 1988

18. Диалоговые микропроцессорные системы/Под ред. Н. Брусенцова и А. Шаумана. М.: Издательство МГУ, 1986.

19. Доорс Д. Пролог язык программирования будущего. Пер. с англ. - М.: Финансы и статистика, 1990.

20. Дрибас В. Реляционные модели баз данных. Минск: БГУ, 1982.

21. Ершов А. Человек и машина. М.: Знание, 1985.

22. Ефимов Е. Решатели интеллектуальных задач. М.: Наука, 1982

23. Заключение экспертной комиссии АО «Кудиц», 1994.

24. Искусственный интеллект: В 3-х"кн. / Под ред. Э.В. Попова. М.: Радио и связь, 1990.

25. Калиниченко Л. Методы и средства интеграции неоднородных баз данных. -М.: Наука, 1983.

26. Карлберг К. Excel 5 для Windows в вопросах и ответах: Пер. с англ. СПб.: BHV, 1995.

27. Каррабис Д. Программирование в dBase III Plus. Пер. с англ. М.: Финансы и статистика, 1991.

28. Классификация и кластер. Пер. с англ. М.: Мир, 1980.

29. KooB М. Инструментальные средства для построения гибридных экспертных систем// Технология разработки экспертных систем. -Кишинев, 1987.

30. Линдсей П., Норман Д. Переработка информации у человека. М.: Мир, 1974.

31. Логика и компьютер. Моделирование рассуждений и проверка правильности программ. М.: Наука, 1990.

32. Ложе И. Информационные системы. Пер. с англ. М.: Мир, 1979.

33. Макаллистер Дж. Искусственный интеллект и Пролог на микроЭВМ / Пер. с англ. М. Машиностроение, 1990.

34. Макашарипов С. Программирование баз данных на Visual Basic 5 в примерах. СПб.: Питер, 1997.

35. МакКелви М., Мартинсон Р., Веб Дж., Ризельман Б. Visual Basic: Пер. с англ. СПб.: BHV, 1998.

36. Маклаков С. Инструментальные средства создания крупных информационньпс систем//КомпьютерПресс № 7 1998.

37. Мане В. Microsoft Access 2.0. Локализованная версия: Пер. с нем. М.: БИНОМ.- 1995.

38. Нортон П., Соухэ Д. Язык ассемблера для IBM PC: Пер. с англ. М.: Издательство «Компьютер»; Финансы и статистика, 1992.

39. Прайс Д. Программирование на языке Паскаль. Практическое руководство. Пер. с англ. М. Мир, 1987.

40. Реальность и прогнозы искусственного интеллекта: Сб. статей; Пер. с англ. -М.Мир, 1987.

41. Рейуорд Смит В. Теория формальных языков. Вводный курс. Пер. с англ. -М.: Радио и связь, 1988.

42. Семенов Ю. А. Многозадачная версия Форт. Препринт. - М., 1988.

43. Семенов Ю.А. Программирование на языке Форт. М., Радио и связь, 1991.

44. Скэнлон Л. Персональные ЭВМ IBM PC/XT. Программирование на языке ассемблера. Пер. с англ. М.: Радио и связь, 1991.

45. Солсо Р.Л. Когнитивная психология. Пер. с англ. - М.: Тривола, 1996.

46. Стефенс П. Windows 98. // Компьютер-Пресс №7 1998.

47. Ульман Д. Основы баз данных. М.: Мир, 1983.

48. Уотермен Д. Руководство по экспертньм системам: Пер. с англ. М.: Мир, 1989.

49. Уэзерелл Ч. Этюды для программистов: Пер. с англ. М.: Мир, 1982 г.

50. Уэллс Э., Хешбаргер С. Microsoft Excel 97: Разработка приложений: Пер. с англ. СПб.: BHV, 1998.

51. Форт:спецвыпуск. // Информатика N45 1995.

52. Форт-2:спецвыпуск. // Информатика N47 1995.

53. Хоггер К. Введение в логическое программирование. Пер. с англ. М. Мир, 1988.

54. Хоффбауер М., Шпильман К. ACCESS: сотни полезных рецептов: Пер. с нем.-К.:ВНУ, 1996.

55. Шалютин СМ. Искусственный интеллект: Гносеологический аспект. М. Мысль, 1985.

56. Шенк Р. Обработка концептуальной информации. Пер. с англ. М.: Энергия, 1980.

57. Шереметьев К.П. Введение в Турбо-Ассемблер. М. Либрис, 1993.

58. Шереметьев К.П. Ассемблер. Часть 1.// Информатика № 24 1995

59. Шереметьев К.П. Ассемблер. Часть 2.11 Информатика № 25 1995

60. Шереметьев К.П. Инструментальная среда для разработки интеллектуальных систем //Научи. тр./Моск. Гос. Ун-т леса Вып. 300 -1999

61. Шереметьев К.П. Кросстрансляция на Форте // Софт-Маркет -№11-1993.

62. Шереметьев К.П. Находка для специалистов Софт-Маркет №26-1994.

63. Шереметьев К.П. ПараФорт в вопросах и ответах // Софт-Маркет №21993.

64. Шереметьев К.П. ПараФорт: Первые шаги // Софт-Маркет №44-1992.

65. Шереметьев К.П. Форт. // Информатика N45 1995.

66. Шереметьев К.П. Форт-2. // Информатика N47 1995.

67. Шереметьев К.П. ФОРТиссимо // Софт-Маркет №38-1992.

68. Шереметьев К.П. Язык для суперпрофессионалов // Монитор №3 1992.

69. Шереметьев К.П. Язык программирования Форт // Информатика №13 -1995.

70. Шереметьев К.П.,Язык, приятный во всех отношениях // Софт-Маркет -№22-1994.

71. Шрейдер Ю. Логика знаковых систем. М.: Знание, 1974.

72. Шрейдер Ю., Шаров А. Системы и модели. М.: Радио и связь, 1982.

73. ЭВМ пятого поколения. Концепции, проблемы, перспективы/Под ред. Т. Мотоока. Пер. с англ. М.: Финансы и статистика, 1984.

74. ANS Forth 94. American National Standards Institute, Inc, 1994 r.

75. Brodie L. Staring FORTH. Prentice-Hall, 1981.

76. Brodie L. Starting FORTH, Prentice-Hall, 1981.

77. Forth in space: Interfacing SSBUV, a Scientific Instrument, to the Space Shuttle // Rochecter Forth Conference №6 1992 r.

78. FORTH Inc. Using FORTH. FORTH Inc., 1979.

79. FORTH inc. Using FORTH. Forth Inc., 1979.

80. Forth, Inc. Express Application Note. 1993 r.

81. Goddard Space Flight Centre. Forth in space. 1993 r.

82. Haydon All About FORTH. Mountain View Press, 1983.

83. Hicks S. M. FORTH: A Cost Saving Approach to Software Development. -Wescon. Los Angeles, 1978.

84. Hogan T. Discover FORTH: Learning and Programming tte FORTH. Osbom: McGraw-Hill, 1982.

85. Katzan H. Invitation to FORTH. Petrocelli Books, 1981.

86. Kelly Mahlon G., Spies N. FORTH. A text and reference. Prentice-Hall, 1986.

87. Knecht K.B. Introduction to FORTH. H.W. Sams, 1982.

88. LoeUger R.G. Threaded interpretive Languages. Byte Books, 1981.

89. Miller G. The magical number seven, plus or minus two: some Kmits on our capacity for processing information // The Psychological Reveiw vol. 63, 1956 r.

90. Mur C. History ofForth //"FORTH Dimensions", vol 1, issue 6.

91. MVP-FORTH Expert System. Mountain View Press Inc., 1984.

92. MVP-FORTH PADS. Mountain View Press Inc., 1983.

93. Fountain D. Object-Oriented Forth: Implementation of Data Structures. Academic Press, 1988.

94. Ragsdale W.F. FIG-FORTH Installation Manual. San Carios: FORTH Interest Group, 1980.

95. Rather E., Brodie L. Using FORTH. Forth Inc. 1980.109

96. Reynolds A. J. Advanced FORTH. Wilmslow: Sigma Press Publishers. - 1986.

97. Salman W. P. FORTH. Macmillan Publisher, Computer Science Series, 1984.

98. Scanlon L. FORTH Programming. IndianapoHs, 1983.

99. Tello E. PolyFORTH aad PC/Forth // Byte. 1984. - Vol. 9, N 12.

100. Ting C. H. System guide to Forth. Offete Enterprise Inc., 1983.

101. Vickers S. FORTH Pocket Guide. Pitman Press, 1984.

102. Walker R.V., Rather E.D. PolyFORTH II: Reference Manual. S.L. FORTH Inc., 1984.

103. Winfield A. Complete Forth. Sigma Technical Press, 1983.110