Автор: Пользователь скрыл имя, 24 Января 2011 в 16:00, курс лекций
Основные темы.
Образцы проектирования – это сравнительно новая форма обмена программистским опытом и удачными проектными решениями, реализующая принципиальную идею повышения продуктивности – увеличение объема повторного использования кода.
Образец проектирования — это типичное решение типичной проблемы в данном контексте.
Элементы:
применять данный образец.
Один из приемов, связанных с идеей верификации, целесообразно использовать, даже если полная верификация программы и не проводится. А именно, при верификации в текст программы вставляются промежуточные утверждения (assert), которые должны удовлетворяться при выполнении правильной программы. Утверждения представляют собой эффективно вычислимые предикаты над значениями переменных (условия, ограничивающие область допустимых значений входных аргументов функции, инварианты цикла, ограничители числа итераций плохо сходящихся процедур). Если программист знает какое-либо (достаточно сильное) условие на значения переменных в данной точке программы, то настоятельно рекомендуется перенести это знание в код программы. Существуют три основных формы использования утверждений:
Код пишется
не по горизонтали (по слоям приложения),
а по вертикали (по функциям приложения),
т.е. путем последовательного
Преимущества:
Программирование
вширь оказывается особенно естественным,
если используется стандартная трехслойная
архитектура приложения и службы
реализуются в объектно-
В случае использования традиционной системы программирования с линейным языком, большое значение имеет оформление текста программы. Хорошо оформленный текст читать легко и приятно, и это существенно повышает продуктивность.
Для повышения
читабельности программы
Тестирование и отладка
Основная часть затраченного времени и ресурсов приходится на непроизводительные потери и на косвенные трудозатраты, связанные с выявлением и исправлением ошибок. Процесс, имеющий целью выявление ошибок в программе, называется тестирование, а процесс исправления ошибок называется отладка.
Направления программирования ориентированные на повышение продуктивности:
Наибольший
прогресс достигнут в развитии инструментальных
средств программирования: воплощение
программистской мысли в
Таким образом, следует исходить из того, что в рассматриваемом типичном случае разработки приложения типа информационной системы программа, полученная на фазах проектирования и реализации, неизбежно содержит ошибки. Вопрос заключается в количестве и качестве ошибок.
Целью тестирования и отладки, выполняемых на фазе стабилизации, является выполнение определенных мероприятий, направленных на снижение количества ошибок, имеющихся в программе, до уровня, приемлемого для заказчика.
Критерии приемлемости
Тестирование
может обнаружить ошибку в программе,
но не может достоверно установить
отсутствие ошибок. Не существует объективного
достоверного критерия (основанного
исключительно на результатах тестирования),
позволяющего сделать вывод о
достижении приемлемого для пользователя
уровня ошибочности программы. Выводы
о количестве ошибок, оставшихся не
выявленными в программе, являются
сугубо приближенными и делаются
на основании различных
Представительным называется набор тестов, при прогоне которых выполняется определенный объективный критерий, связанный с самой тестируемой программой (все исполнимые операторы кода прорабатывают хотя бы один раз). Если при прогоне представительного набора тестов ошибки не выявляются, то программа считается приемлемой.
Используются
различные статистические методы выходного
контроля (например, измеряется количество
известных ошибок как функция
продолжительности
Заранее известен набор тестов, прогон которых без выявления ошибок означает, что программа
приемлема для заказчика по соглашению. При этом вполне возможно, что в программе даже остались известные разработчику и не устраненные ошибки, но контрольные примеры, удовлетворяющие заказчика, выполняются успешно и этого достаточно. Конкретного заказчика интересует в первую очередь эффект, который вертикальное приложение оказывает на его (заказчика) бизнес, и только во вторую очередь "правильность" приложения
Виды комплексного тестирования:
Обязательным требованием дисциплины программирования является наличие плана тестирования, регламентирующего порядок проведения тестирования по видам тестов и критериям приемлемости.
Ход тестирования, выявленные ошибки и приятые меры по их исправлению фиксируются в базе данных тестирования.
Методы отладки
Отладка:
Тест обнаруживает внешнее проявление ошибки в форме несоответствия результата спецификациям, причем это несоответствие может быть очень отдаленным следствием истинной причины, которая и является ошибкой, подлежащей исправлению. Самым распространенным приемом локализации является просмотр программистом протокола выполнения программы с целью обнаружения того места, где поведение программы, демонстрируемое протоколом, расходится с ожидаемым поведением. Протокол может иметь различные формы: это может быть действительно файл или база данных, в которой фиксируются сведения о ходе выполнения программы, или это может быть динамически изменяемое состояние программы, ход выполнения которой воспроизводится в интерактивном отладчике. Отладчик удобен тем, что позволяет легко и просто проследить ход выполнения программы и изменение значений ее переменных. Прослеживание хода работы программы по шагам – это крайнее средство, которое стоит применять, только если более эффективные приемы не позволили локализовать ошибку достаточно точно.
Другим распространенным приемом получения протокола является трассировка, которая
также доступна в большинстве систем программирования. Трассировка – это автоматизированная генерация статического протокола. Как минимум, в трассу включается протокол потока управления с точностью до функций, иногда добавляется и дополнительная информация об изменении состояния. Трассировка имеет перед отладчиком то преимущество, что трассу можно просматривать в любом порядке, а не только от начала к концу. Иногда просмотр трассы с конца позволяет быстрее локализовать ошибку. Отладочный стенд - заводится специальная базу данных и в коде расставляются ловушки и "отладочные печати", которые протоколируют в этой базе семантически важную информацию о ходе выполнения программы. Эффективным методом отладки является "структурная экспертиза", когда автор программы публично читает код программы вслух перед аудиторией из коллег по разработке. Присутствующие могут задавать вопросы и делать замечания, автор должен их фиксировать, но не должен отвечать. При этом очень важно, чтобы чтение велось именно вслух (это задает правильный темп информационного обмена), чтобы это было именно чтение готового текста (это исключает добавление исправлений и фантазий по ходу чтения) и чтобы вопросы и замечания (в том числе и прежде всего самого автора) тщательно фиксировались.