- •1. Кризис программирования
- •2. Понятие жизненного цикла по
- •3. Требования к технологии проектирования
- •4. Понятия профессионального программирования
- •5. Проект и команда
- •6. Задача профессионального программирования
- •7. Алгоритмы
- •8. Модели и моделирование
- •9. Структурный подход
- •9.1. Проблема сложности
- •9.2. Сущность структурного подхода
- •9.3. Метод функционального моделирования (sadt)
- •9.3.1. Состав функциональных моделей
- •9.3.2. Методика построения модели
- •9.4. Метод моделирования процессов - потоков данных (dfd)
- •9.4.1. Общая концепция
- •9.4.2. Состав диаграмм потоков данных
- •13. Венгерская нотация
- •14. Методология и парадигма программирования
- •15. Современные методологии программирования
- •16. Методология императивного программирования
- •17. Методология объектно-ориентированного программирования
- •18. Методология функционального программирования
- •19. Методология логического программирования
- •20. Методология программирования в ограничениях
- •21. Методология структурного императивного программирования
- •22. Методология параллельного императивного программирования
- •23. Методология нейросетевого программирования
- •23.1. Модель нейрона с линейной функцией активации
- •23.2. Модель нейрона с радиальной функцией активации
- •23.3. Разработка нейросетевой модели
- •24. Основные типы ошибок в программах
- •25. Отладка и тестирование
- •26. Режимы работы компилятора Delphi для поиска ошибок
- •27. Задание режимов работы отладчика с помощью переключающих директив
- •28. Пользователи и их поддержка
- •29. Поддержка программиста: общие требования
- •29.1. Пролог модуля
- •29.2. Проектная документация
- •29.3. Оформление текста программы
- •30. Поддержка конечного пользователя
- •31. Технология программирования графики
- •31.1. Графическая подсистема оболочек Win32/64
- •31.2. Графические средства Delphi
- •31.3. Проектирование интерфейса с пользователем: компоненты стандартных диалогов
- •32.Технология компонентного программирования
- •32.1. Технология com
- •32.1.1. Общая концепция
- •32.1.2. Интерфейс com
- •32.1.3. Сервер com
- •32.2. Технология ole
- •32.2.1 Суть и содержание ole
- •32.2.2.Терминология ole
- •32.2.3. Автоматизация ole
- •32.2.4. Структурированная память
- •32.3. Технология corba
- •32.4. Технология Java
- •32.5.Технология .Net
- •33. Технология описания аппаратуры
- •Input clock, reset, en;
- •If(!reset)
- •34. Технология коллективной разработки
- •34.1. Авторская разработка
- •34.2. Коллективная разработка
- •34.2.1. Технические командные роли
- •34.2.2. Психологические командные роли
- •34.2.3. Типы совместной деятельности
- •34.3. Общинная модель разработки
- •35. Технология оценки качества по
- •35.1. Подходы к оценке качества по
- •35.2. Характеристики качества по
- •35.3. Оценка качества процесса разработки
- •35.3.1. Модель зрелости процесса разработки по
- •35.3.2. Определение возможностей и улучшение процесса создания по
- •35.4. «Достаточно хорошее» по
- •33.5. Стандартизация информационных технологий
- •Международные организации, входящие в структуру оон.
- •Промышленные профессиональные или административные организации.
- •Промышленные консорциумы.
- •36. Инструментальные средства поддержки некоторых технологических подходов
- •36.1. Инструментальные системы
- •36.1.1. Инструментальные среды программирования
- •36.1.2. Средства автоматизации разработки программ (case-средства)
- •36.1.3. Интегрированные среды
- •36.1.4. Репозитории проекта
- •36.2. Поддержка коллективной разработки: системы управления версиями
- •37. Организация диалогов
- •38. Защита программного кода
24. Основные типы ошибок в программах
В программах обычно различают три типа ошибок:
Синтаксические ошибки. Представляют собой нарушения правил языка, т.е. правил реализации конструкций языка, их последовательности, вложенности, и т.д.
Пример. В языке Pascal каждое служебное слово BEGIN должно заканчиваться словом END, оба этих слова должны иметь фиксированное (например, без сокращений) написание, целая часть числа должна отделяться от дробной с помощью точки и т.д.
Синтаксические ошибки обычно возникают из-за описок (ошибок ввода текстов программ), незнания синтаксиса используемого языка программирования, нечеткого представления о структуре программы (например, забывание конечных END при многочисленных вложениях составных операторов).
Большинство синтаксических ошибок фиксируется компиляторами и поэтому достаточно легко устраняется.
Семантические ошибки – это нарушение логики, структуры программы, неправильное использование структур данных.
Пример. Деление на нуль, использование несуществующих номеров элементов массива, исчерпание оперативной памяти, использование одной переменной вместо другой и др.
Семантические ошибки выявляются труднее синтаксических. Для их обнаружения обычно применяются возможности интегрированного отладчика. Значительная часть семантических ошибок может быть обнаружена при выполнении программы, особенно в режиме тестирования и при включенных режимах контроля логики программы.
Прагматические ошибки – это нарушение требований к структуре и назначению программы и ее функций.
Пример. Непригодный дизайн интерфейса: позабыта предусмотренная функция прикладной программы типа предоставления предварительного просмотра отчета о структуре выдаваемого на печать документа.
Прагматические ошибки могут быть выявлены и устранены только в режимах тестирования программ и ее испытаний при тщательной сверке с техническим заданием.
При поиске ошибок можно руководствоваться следующими «законами программиста»:
В любой программе всегда имеется хотя бы одна ошибка.
Последняя из найденных ошибок никогда не является последней.
Основная трудность при этом – установление экономического оптимума: когда дальнейшее тестирование программы станет невыгодным.
Можно с большим трудом установить и устранить еще несколько ошибок, но за такое большое время, что или отпадет необходимость в прикладной программе (ПП), или будут так нарушены сроки разработки продукта, что заказчик будет вынужден от нее отказаться, или стоимость программы возрастёт столь фантастически, что не окупится доходами от ее продажи.
25. Отладка и тестирование
Отладка – это процесс доводки программы до состояния, в котором она до конца транслируется и затем выполняется.
Основная масса ошибок в программах выявляется с помощью трансляторов. Некоторая часть из них фиксируется при сбоях программы. Таким образом, задача отладки – устранить ошибки в программе, замечаемые транслятором или ОС.
Тестирование – это процесс нахождения ошибок в ПП путем выполнения системы тестов.
Задача тестирования - довести программу до состояния, в котором она:
Работает без остановов
Выдает похожие на правду результаты
Правдоподобно реагирует на заданные ситуации.
Тесты составляются для такого множества исходных данных, которое по возможности обеспечивает:
Апробацию каждой ветви (модуля), оператора программы и каждого из возможных вариантов условий.
Апробацию всех типов и комбинаций исходных данных, особенно их предельных значений.
Все стратегии тестирования нацелены на формирование оптимального с экономической точки зрения набора тестов. При этом основное требование к тестированию – подготовка его плана до начала программирования. Соблюдение этого требования позволяет:
Устранить опасность подгонки тестов к программе.
Уяснить ограничения на входные данные и сформировать правильное представление о завершенной программе.
Обеспечить непрерывность этапов создания программы: сначала определяются входные данные, затем они используются при разработке, а потом при тестировании.
За подготовку тестов должны отвечать опытные и компетентные лица, знакомые с областью применения программы:
пользователи;
системные аналитики;
руководители проекта.
Сами тесты необходимо планировать параллельно с планированием разработки модулей. При этом, прежде всего, определяется типовой набор тестов, в состав которого обычно входят:
тест проверки работы без учета ошибочных ситуаций;
тест, содержащий нетипичные для программы данные;
тест, содержащий неверные данные и т.д.
Для и устранения ошибок применяются отладчики – программы предназначены для поиска, обнаружения и исправления ошибок в других программах. Принято различать автономные и интегрированные отладчики.
Интегрированные отладчики обладают простотою доступа и единством идеологии работы с компонентами языковой среды разработки.
Автономные отладчики порой могут предоставлять дополнительные, порой весьма специфические возможности.
Пример. Интегрирований отладчик среды Delphi позволяет выполнять следующие отладочные операции:
запускать программы на выполнение;
контролировать значения её параметров и переменных;
модифицировать их значения в ходе выполнения;
приостанавливать выполнение программы;
выполнять программу по шагам.