- •Разработка сложных программных изделий
- •Раздел 1.Структурные методологии разработки программного обеспечения Глава 1.Структурные методы в программотехнике
- •1.1.Эволюция структурных методов
- •1.2.Основные идеи и принципы структурной методологии
- •1.3.Принципы программотехники
- •1.4.Принципы информационной инженерии
- •1.5.Автоматизация проектирования
- •Глава 2.Структурные методы анализа и проектирования
- •2.1.Структурный системный анализ
- •2.2.Нисходящее проектирование
- •2.3.Структурное проектирование, управляемое потоками данных
- •2.4.Методы проектирования, управляемые структурами данных
- •Глава 3.Структурные методы программирования
- •3.1.Особенности структурных программ
- •3.2.Цели структурного программирования
- •3.3.Программирование с использованием пошаговой детализации
- •3.4.Нисходящее и восходящее программирование
- •Глава 4.Модульное программирование
- •4.1.Основные понятия и определения
- •4.2.Программные модули и схема модуляризации
- •4.3.Оценка качества модульной программы
- •Глава 5.Модели разработки программных изделий
- •5.1.Модель жизненного цикла программного изделия
- •5.2.Модель "возрастающей выдачи"
- •5.3.Модель с использованием прототипа
- •5.4.Спиральная модель
- •Раздел 2.Фазы жизненного цикла программного изделия Глава 6.Определение требований пользователя и требований к программному изделию
- •6.1.Требования пользователя
- •6.2. Требования к программному изделию
- •6.3. Разработка логической модели программного изделия
- •6.4. Классификация требований к программному изделию
- •6.5. Атрибуты требований к программному изделию
- •6.6. Документ Требования к программному изделию
- •6.7 Техническое задание на разработку программного изделия
- •Глава 7.Архитектурное проектирование программного изделия
- •7.1.Общее содержание работ фазы
- •7.2.Виды деятельности
- •7.3.Критерии качества архитектурного проекта
- •Глава 8.Детальное проектирование и изготовление программного изделия
- •8.1.Основные виды деятельности
- •8.2.Кодирование модулей
- •8.3.Тестирование программного изделия
- •8.4.Документирование работ по проектированию программного изделия
- •Глава 9.Отладка программ
- •9.1.Трудности отладки
- •9.2.Средства и методы отладки
- •9.3.Категории ошибок в программном обеспечении
- •9.4.Рекомендации по отладке
- •Глава 10.Эксплуатация и сопровождение программного изделия
- •10.1.Передача программного изделия в эксплуатацию
- •10.2.План испытаний
- •10.3.Работы по эксплуатации и сопровождению программного изделия
- •10.4.Задачи службы сопровождения программного изделия
- •Раздел 3.Управление разработкой программного изделия Глава 11.Управление жизненным циклом программного изделия
- •11.1.Виды деятельности, связанные с управлением жизненным циклом программного изделия
- •11.2.Измерения в программотехнике
- •11.3.Управление проектированием программного изделия
- •11.4.Методы получения оценок для проекта программного изделия
- •11.4.1. Методы функциональной декомпозиции
- •11.4.2. Эмпирические оценочные модели
- •11.5.Управление рисками
- •11.6.Планирование разработки программного изделия
- •Глава 12.Управление качеством программного изделия
- •12.1.Качество программного изделия
- •12.2.Обеспечение качества программного изделия
- •12.3.Измерение качества программного изделия
- •12.4.Управление конфигурацией программного изделия
- •Литература
9.4.Рекомендации по отладке
1. Используйте систематический, продуманный заранее подход к отладке. Планируйте процесс отладки и тщательно проектируйте тестовые наборы данных, начиная с наиболее простых вариантов, вначале исключая наименее вероятные источники ошибок.
Для упорядочения процесса тестирования собирайте и анализируйте информацию:
• об особенностях и статистике ошибок;
• о специфике исходных данных и последовательности изменения переменных в программе и их взаимном влиянии;
• о структуре алгоритма и особенностях его программной реализации.
2. В каждый момент времени определяйте местоположение одной ошибки.
3. Используйте средства регистрации и отображения информации об ошибках, включая в программу специальный отладочный код для распечатки выборочных значений переменных, сообщений об окончании отдельных участков программы, трассировки логических условий и т.п.
4. Тщательно изучайте полученные выходные данные и сравнивайте их с ожидаемыми, заранее просчитанными результатами.
5. Обращайте особое внимание на данные, обрабатываемые программой, поскольку функционирование программы — это обработка потока данных. Тщательно анализируйте работу программы для граничных значений проверяемых условий, а также при неправильных входных данных, когда необходимо контролировать ошибки, относящиеся к данным. Контролируйте типы данных, диапазоны их значений, размеры полей и конкретные значения переменных и их точность.
6. Используйте совместный анализ потоков данных и потоков управления для проверки корректности в установлении областей определения данных для разных маршрутов выполнения программы.
7. Используйте одновременно различные средства отладки, не останавливайтесь на одной возможности. Привлекайте наиболее мощные автоматизированные средства и одновремейно применяйте ручные методы отладки и тестирования за рабочим столом, проверяя текст программы (индивидуально или группой) с точки зрения ее функционирования и с учетом наиболее вероятных ошибок.
8. Документируйте все обнаруженные и исправленные ошибки, отмечая, где они были найдены, и указывая тип ошибки. Эта информация будет полезной для предсказания источников ошибок в будущем. (Каждый программист имеет свой профиль ошибок, т.е. склонность к ошибкам определенного типа.)
9. Измеряйте сложность программ. Программы (модули) с высоким цикломатическим числом имеют более высокую предрасположенность к ошибкам и будут, вероятно, требовать большего времени для их обнаружения и исправления. В программах с высокой сложностью более высока вероятность ошибок спецификаций и проектирования, а с низкой сложностью — кодирования и канцелярских огцибок.
10. Дл»1 повышения опыта и тренировки в отладке программ используйте программы с искусственно помещенными в них ошибками. После определенного периода отладки программисту следует указать на. оставшиеся необнаруженные ошибки.
Подобное "засеивание" программы дополнительными ошибками широко используется для оценки числа необнаруженных реальных ошибок. Действительно, если предположить, что во время тестирования и отладки с равной вероятностью обнаруживаются и искусственные, и реальные ошибки, то по проценту соотношения обнаруженных внесенных и реальных ошибок можно высказать предположение о числе оставшихся необнаруженных ошибок в программе.