Е.А. Жоголев - Лекции по технологии программирования
Описание файла
Документ из архива "Е.А. Жоголев - Лекции по технологии программирования", который расположен в категории "". Всё это находится в предмете "технологии программирования" из 6 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "Е.А. Жоголев - Лекции по технологии программирования"
Текст из документа "Е.А. Жоголев - Лекции по технологии программирования"
146
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
им. М.В.ЛОМОНОСОВА
Факультет вычислительной математики и кибернетики
Е.А.Жоголев
ЛЕКЦИИ
ПО ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ
1 9 9 7
Е.А.Жоголев. Лекции по технологии программирования. - М.: Московский государственный университет им. М.В.Ломоносова, факультет ВМиК, рукопись, 1997.
Copyright ã Е.А. Жоголев, 1994-1997.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Лекция 1. НАДЕЖНОЕ ПРОГРАММНОЕ СРЕДСТВО КАК ПРОДУКТ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ. ИСТОРИЧЕСКИЙ И СОЦИАЛЬНЫЙ КОНТЕКСТ ПРОГРАММИРОВАНИЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
-
Программа как формализованное описание процесса обработки данных. Программное средство . . . . . . . . . . . . . . . . . . 9
-
Неконструктивность понятия правильной программы . . . .10
1.3. Надежность программного средства . . . . . . . . . . . . . . . . . 11
-
Технология программирования как технология разработки надежных программных средств . . . . . . . . . . . . . . . . . . . . . . 12
1.5. Технология программирования и информатизация общества . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Упражнения к лекции 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Литература к лекции 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Лекция 2. ИСТОЧНИКИ ОШИБОК В ПРОГРАММНОМ СРЕДСТВЕ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
-
Интеллектуальные возможности человека. . . . . . . . . . . . . 18
-
Неправильный перевод как причина ошибок в программном средстве. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
-
Модель перевода. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4. Основные пути борьбы с ошибками . . . . . . . . . . . . . . . . . . 22
Литература к лекции 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Лекция 3. ОБЩИЕ ПРИНЦИПЫ РАЗРАБОТКИ ПРОГРАММНЫХ СРЕДСТВ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
-
Специфика разработки программных средств . . . . . . . . . . 23
-
Жизненный цикл программного средства . . . . . . . . . . . . . 24
-
Понятие качества программного средства . . . . . . . . . . . . . 25
-
Обеспечение надежности - основной мотив разработки программных средств . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
-
Методы борьбы со сложностью . . . . . . . . . . . . . . . . . . . . 28
-
Обеспечение точности перевода . . . . . . . . . . . . . . . . . . . . 29
-
Преодоление барьера между пользователем и разработчиком . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
-
Контроль принимаемых решений . . . . . . . . . . . . . . . . . . . 29
-
Литература к лекции 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Лекция 4. ВНЕШНЕЕ ОПИСАНИЕ ПРОГРАММНОГО СРЕДСТВА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
-
Назначение внешнего описания программного средства и его роль в обеспечении качества программного средства. 31
-
Определение требований к программному средству . . . 33
-
Спецификация качества программного средства . . . . . . . 35
4.4. Функциональная спецификация программного средства . 37
4.5. Методы контроля внешнего описания программного средства. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Литература к лекции 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Лекция 5. МЕТОДЫ СПЕЦИФИКАЦИИ СЕМАНТИКИ ФУНКЦИЙ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
-
Основные подходы к спецификации семантики функций. 41
-
Метод таблиц решений . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
-
Операционная семантика . . . . . . . . . . . . . . . . . . . . . . . . . . 45
-
Денотационная семантика . . . . . . . . . . . . . . . . . . . . . . . . . 47
-
Аксиоматическая семантика . . . . . . . . . . . . . . . . . . . . . . . 50
-
Языки спецификаций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Упражнения к лекции 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Литература к лекции 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Лекция 6. АРХИТЕКТУРА ПРОГРАММНОГО СРЕДСТВА . . . . . 54
-
Понятие архитектуры программного средства . . . . . . . . . 54
-
Основные классы архитектур программных средств . . . . 54
-
Архитектурные функции . . . . . . . . . . . . . . . . . . . . . . . . . . 59
-
Контроль архитектуры программного средства . . . . . . . . 59
Литература к лекции 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Лекция 7. РАЗРАБОТКА СТРУКТУРЫ ПРОГРАММЫ И МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ . . . . . . . . . . . . . . . . . . . . 61
-
Цель модульного программирования . . . . . . . . . . . . . . . . 61
-
Основные характеристики программного модуля . . . . . . . 62
-
Методы разработки структуры программы . . . . . . . . . . . . 64
-
Контроль структуры программы . . . . . . . . . . . . . . . . . . . . . 72
Литература к лекции 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Лекция 8. РАЗРАБОТКА ПРОГРАММНОГО МОДУЛЯ. . . . . . . . . 74
-
Порядок разработки программного модуля . . . . . . . . . . . . 74
-
Структурное программирование . . . . . . . . . . . . . . . . . . . . 75
-
Пошаговая детализация и понятие о псевдокоде. . . . . . . . 78
-
Контроль программного модуля . . . . . . . . . . . . . . . . . . . . . 83
Литература к лекции 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Лекция 9. ДОКАЗАТЕЛЬСТВО СВОЙСТВ ПРОГРАММ . . . . . . . . 84
-
Обоснования программ. Формализация свойств программ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
9.2. Свойства простых операторов . . . . . . . . . . . . . . . . . . . . . . 85
-
Свойства основных конструкций структурного программирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-
Завершимость выполнения программы. . . . . . . . . . . . . . . . 88
-
Пример доказательства свойства программы . . . . . . . . . . 89
Упражнения к лекции 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Литература к лекции 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Лекция 10. ТЕСТИРОВАНИЕ И ОТЛАДКА ПРОГРАММНОГО СРЕДСТВА. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
-
Основные понятия. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
-
Принципы и виды отладки . . . . . . . . . . . . . . . . . . . . . . . . 92
-
Заповеди отладки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
-
Автономная отладка модуля . . . . . . . . . . . . . . . . . . . . . . . 96
-
Комплексная отладка программного средства . . . . . . . 100
Литература к лекции 10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Лекция 11. ОБЕСПЕЧЕНИЕ ФУНКЦИОНАЛЬНОСТИ И НАДЕЖНОСТИ ПРОГРАММНОГО СРЕДСТВА . . . . . . . . . . . . . . . . 104
-
Функциональность и надежность как обязательные критерии качества программного средства . . . . . . . . . . . . . . . . . 104
11.2. Обеспечение завершенности программного средства. . 104
11.3. Обеспечение точности программного средства . . . . . . . 106
11.4. Обеспечение автономности программного средства. . . 106
11.5. Обеспечение устойчивости программного средства . . . 107
11.6. Обеспечение защищенности программных средств . . . 108
Литература к лекции 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Лекция 12. ОБЕСПЕЧЕНИЕ КАЧЕСТВА ПРОГРАММНОГО СРЕДСТВА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
-
Общая характеристика процесса обеспечения качества программного средства. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
-
Обеспечение легкости применения программного средства. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
-
Обеспечение эффективности программного средства. . 117
-
Обеспечение сопровождаемости программного средства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
-
Обеспечение мобильности программного средства . . . 119
-
Литература к лекции 12. . . . . . . . . . . . . . . . . . . . . . . . . . 120
Лекция 13.
Лекция 14. АТТЕСТАЦИЯ ПРОГРАММНОГО СРЕДСТВА . . . . 118
-
Назначение аттестации программного средства . . . . . . 118
-
Виды испытаний программного средства . . . . . . . . . . . 118
-
Методы оценки качества программного средства . . . . 120
Литература к лекции 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Лекция 15. ОЪЕКТНЫЙ ПОДХОД К РАЗРАБОТКЕ ПРОГРАММНЫХ СРЕДСТВ
Лекция 16. КОМПЬЮТЕРНАЯ ПОДДЕРЖКА РАЗРАБОТКИ И СОПРОВОЖДЕНИЯ ПРОГРАММНЫХ СРЕДСТВ
Лекция 17. ОБЯЗАННОСТИ И ОТВЕТСТВЕННОСТЬ ПРОГРАММИСТОВ. ИНТЕЛЛЕКТУАЛЬНАЯ СОБСТВЕННОСТЬ.
Технология - совокупность производственных процессов в определенной отрасли производства, а также научное описание способов производства.
С.И. Ожегов. Словарь русского языка. - М.: Советская энциклопедия, 1975
ВВЕДЕНИЕ
Настоящее учебное пособие представляет собой расширение и новую редакцию конспекта лекций , читавшихся в течении ряда лет на факультете Вычислительной математики и кибернетики МГУ:
Е.А. Жоголев. Введение в технологию программирования (конспект лекций). - М.: "ДИАЛОГ-МГУ", 1994.
По содержанию оно полностью соответствует обновленной программе курса "Технология программирования", утвержденного для студентов программистских кафедр.
Хотя понятие технологии в русском языке имеет ясное определение, понятие технологии программирования требует некоторого уточнения прежде всего из-за необходимости определения, что следует считать продуктом этой технологии. Кроме того появление этого термина в русскоязычной научной литературе вызвано в значительной степени не всегда адекватным переводом иноязычной литературы по программированию, что привело к различным определениям (толкованиям) этого понятия. Это уточнение делается в первой лекции настоящего курса.
Тем не менее уже сейчас можно сказать (в соответствии с общепринятым в русском языке пониманием термина "технология"), что предметом настоящего курса лекций является изучение процессов, приводящих к созданию требуемого программного "продукта". В курсе обсуждаются вопросы, из каких процессов (которые можно назвать технологическими) состоит эта технология, на каких принципах они строятся, какие методы и инструментальные средства в них используются.
Содержание курса сложилось в результате критического анализа многих научных источников, часто противоречивших друг другу, с учетом опыта программирования автора настоящего курса, а также
результатов исследований, проведенных на кафедре системного программирования факультета ВМиК МГУ (в частности, по проблеме качества программного обеспечения). Расширение пособия по сравнению с ранее изданным было связано с включением в обновленную программу курса вопросов обеспечения качества программных продуктов и их документирования, объектного подхода к их разработке, компьютерной технологии и компьютерной поддержки разработки программных продуктов, а также социально-этических вопросов программирования.
Курс рассчитан на студентов, уже прослушавших общий курс по программированию и умеющих работать на компьютере. Его целью является помочь лицам, приступающим к разработке больших программных "продуктов", рационально организовать свой программистский труд.
Математика делает то, что можно, так, как нужно, тогда как информатика делает то, что нужно, так, как можно.
Программистский фольклор
Лекция 1.
НАДЕЖНОЕ ПРОГРАММНОЕ СРЕДСТВО КАК ПРОДУКТ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ. ИСТОРИЧЕСКИЙ И СОЦИАЛЬНЫЙ КОНТЕКСТ ПРОГРАММИРОВАНИЯ