И. Соммервилл - Инженерия программного обеспечения (1133538), страница 99
Текст из файла (страница 99)
Всрификация и аттестация не одно и то же, хотя их легко перепугать. Кратко различие между ними можно определить следующим образом 1451: ° верификация отвечает на вопрос. правильно ли создана система; ° кггсстация отвечает па вопрос, правильно ли работает система. Согласно этим определениям, верификация проверяет соответствие ПО системной спсцификации, в частности функциональным и нефункциональным требованиям. Аттестация — более общий процесс. Во время аттестации необходимо убедиться, что программный продукт соответствует ожиданиям заказчика.
Аттестация проводится после вс. рификации, для того чтобы определить, насколько система соответствует не только спецификации, но и ожиданиям заказчика. Как уже отмечалось в главе 6, на раш<их этапах разработки ПО очень важна аттестация системных требований. В требованиях часто встрсчаются ошибки и упущения; в таких случаях конечный продукт, вероятно, нс будет соответствовать ожиданиям заказчика. Но, конечно, аттестация требований нс может выявить все проблемы в спецификации гребо. ваний. Иногда недоработки и ошибки в требованиях обнаруживаются только после завершения реализации систсмы. В процессах верификации и аттестации используются две основные методики провер.
ки и анализа систем. 1. Иксп<ктироээяие ПО. Анализ и проверка различных представлений системы, например документации спецификации требований, архитектурных схем или исходного кода программ. И<юпсктнроэанис выполняется на всех этапах процесса разработки программной системы. Параллельно с инспектированием может выполняться автоматический анализ исходного кода программ и соответствующих документов. Инспектирование и автоматический анализ — это статические методы верификации и аттестации, поскольку им потребуется исполняемал система. 2. Тепикровяние ПО. Запуск исполняемого кода с тестовыми данными и исследование выходных данных и рабочих характеристик программною продукта для проверки правильности работы системы.
Тестирование — зто динамический метод всрифи. кации и аттестации, так как применяется к исполняемой системе. На рис. 19.1 показано место инспектирования и тестирования в процессе разработки ПО. Стрелки указывают на тс этапы процесса разработки, на которых можно применять данные методы. Согласно этой схеме, инспектирование можно выполнять на всех этапах процесса разработки системы, а тестирование — в тех случаях, когда создан прототип или исполняемая программа. К методам инспектирования относятся: инспектирование программ, автоматический анализ исходного кода и формальная верификация. Но статические методы мо<ут проверить только соответствие программ спецификации, с их помощью невозможно проверить правильность функционирования системы. Кроме того, статическими методами нельзя проверить такие нсфункционэльныс характеристики, как производительность и надежность. Поэтому для оцснивания нефункциональных характеристик проводится тестированне системы.
19. Верификация и аттестация ПО 387 Ркс.! 9.!. Сэигакче<юш и динамическая вгу<кфакацкя к аэ<амсэю<!ил В настоящее время, несмотря на широкое применение инспектирования ПО, преобла. дающим методом верификации и аттестации все еще остается тестирование. Тестирование — зто проверка работы программ с данными, подобными реальным, которые будут обрабатываться в процессе эксплуатации системы.
Наличие в программе дефектов и не. соответствий требованиям обнаруживается путем исследования выходных данных и вы. явления среди них аномальных. Тестирование выполняется на этапе реализации системы (для проверки соответствия системы ожиданиям разработчиков) и после завершения ее реализации.
На разных этапах процесса разработки ПО применяют различные виды тестирования. 1. Тесикраааниг дефектов проводится для обнаружения несоответствий между про. граммой и ее спецификацией, которые обусловлены ошибками или дефсктамн в программах. Такие тесты разрабатываются для выявле<шя ошибок в системс, а пе для имитации ее работы. Данный внд тестирования рассматривается в главе 20. 2. Сэ<атистиче<хое яме<ли!<оваяие оцениваег производительность и надежность программ, а также работу системы в различных режимах эксплуатации. Тесты разрабатываются так, чтобы имитировать реальную работу системы с реальными входны.
ми дан«в<ми. Надежность функционирования системы оценивается по количеству сбоев, отмеченных в работе программ. Производительность оценивается по результатам измерения полного времени выполненил операций и времени отклика системы при обработке тестовых данных. Статистическое тестирование и оцснивание надежности рассматриваются в главе 21. Конечно, между этими методами не существует жестких, четко установленных границ. Во время тестирования дефектов испытатель может получить интуитивное представление о надежности ПО, а во время статистического тестирования есть возможность выявления программных дефектов. Главная цель верификации и аттестации — удостовериться в том, что система "соответствует своему назначению". Соответствие программной системы своему назначе.
нию отнюдь не предполагает, что в ией совершенно не должно быть ошибок. Скорее, система должна достаточно хорошо соответствовать тем целям, для которых планировалась. Уровень необкоднмой д<кэюагуа<ос<як сооэ<веимэмия зависит от назначения системы, ожиданий пользователей и условий на рынке программных продуктов. 388 х1асть У. Верификация и аттестация 1. Илзнпчвнис ПО. Уровень достоверности соответствия зависит от того, насколько критическим является разрабатываемое программное обеспечение по тем или иным критериям.
Например, уровень достоверности для систем, критическим по обеспечению безопасности, должен быть значительно выше аналогичного уровня достоверности для,ппыхгг(вх образцов программных систем, разрабатываемых для демонстрации некатррык новых идей. 2. Ожидлния плвыавлтэппс Следует с грустью отметить, что в настоящее время у боль; шинства пользователей невысокие требования к программному обеспечению. Пользователи настолько привыкли к отказам, происходящим во время работы про. грамм, что не удивляются этому. Опи согласны терпеть сбои в работе системы, если преимущества се использования компенсируют недостатки.
Вместе с тем с начала 1990-х годов терпимость пользователей к отказам в работе программных систем постепенно снижается. В последнее время создание ненадежных систем стало практически неприемлемым, поэтому компаниям, занимающимся разработкой про. граммных продуктов, необходимо все больше внимания уделять верификации и ат.
тестации программного обеспечения. 3. Усвовпл рмпкл программпнк продуктов. При оценке программной системы продавец должен знать конкурирующие системы, цену, которую покупатель согласен заплатить за систему, и назначенный срок выхода этой системы на рынок. Если у компании-разработчика несколько конкурентов, необкодимо определить дату выхода системы на рынок до окончания полного тестирования и отладки, иначе первыми на рынке ьго~уг оказаться конкуренты. Если покупатели не желают приобретать ПО по высокой цене, возможно, они согласны терпеть болычев количество отказов в работе системы. При определении расходов на процесс верификации и азтестацин необходима учитывать все эти факторы. Кзк правило, в ходе верификации и аттестации в системе обнаруживаются ошибки.
Для исправления оюибок в систему вносятся изменения. Этот пролнсс отводки обычно интегрирован с другими процессами верификации и аттестации. Вместе с тем тестирование (или более обобщенно — верификация и аттестация) и отладка являются разными процес. сами, которые имеют различные цели. 1. Верификация и аттестация — процесс обнаружения дефектов в программной системе. 2. Отладка — процесс локализации дефектов (ошибок) и их исправления (рис. 19.2).
Рис, 19.2. Процесс оэылднк Простых методов отладки программ не существует. Опытные отладчики обнаруживают ошибки путем сравнения шаблонов тестовых выходных данных с выходными данными тес. тируемых систем. Чтобы определить местоположение ошибки, необходимы знания о типах ошибок, шаблонах выходных данных, языке программирования и процессе программирова- 19. Верификации и аттестации ПО 389 ния. Очень важны знания о процессе разработке ПО. Отладчикам известны наиболее распространенные ошибки программистов (например, связанные с пошаговым увеличением значения счетчика).
Также учитываются ошибки, типичные для определенных языков про. грамм ироазния, например связанные с использованием указателей в языке С. Определение местонахождения ошибок в программнб)я кийде не всегда простой процесс, поскольку ошибка необязательно находится возле того Места в коде программы, где произошел сбой. Чтобы локализовать ошибки, программист-отладчик разрабатывает до. полнительные программные тесты, которые помогают выявить источник ошибки в про. грамме. Может возникнуть необходимость в ручной трассировке выполнения программы. Интерактивные средства отладки являются частью набора средств поддержки языка, интегрированных с системой компиляции программного кода. Они обеспечивают специальную среду выполнения программ, посредством которой можно получить доступ к таб.