Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Ручной контроль программного обеспечения
Ручной контроль, как указано выше, обычно используют на ранних этапах разработки. Все проектные решения, принятые на том или ином этапе, должны анализироваться с точки зрения их правильности и целесообразности как можно раньше, пока их можно легко пересмотреть. Поскольку возможность практической проверки подобных решений на ранних этапах разработки отсутствует, большое значение имеет их обсуждение, которое проводят в разных формах.
Различают статический и динамический подходы к ручному контролю. При статическом подходе анализируют структуру, управляющие и информационные связи программы, ее входные и выходные данные. При динамическом - выполняют ручное тестирование., т. е. вручную моделируют процесс выполнения программы на заданных исходных данных. Исходными данными для таких проверок являются: техническое задание, спецификации, структурная и функциональная схемы программного продукта, схемы отдельных компонентов и т. д., а для более поздних этапов - алгоритмы и тексты программ, а также тестовые наборы. Доказано, что ручной контроль способствует существенному увеличению производительности и повышению надежности программ и с его помощью можно находить от 30 до 70 % ошибок логического проектирования и кодирования. Следовательно, один или несколько из методов ручного контроля обязательно должны использоваться в каждом программном проекте.
Основными методами ручного контроля являются: • инспекции исходного текста, • сквозные просмотры, • проверка за столом, • оценки программ. Инспекции исходного текста. Инспекции исходного текста представляют собой наборпроцедур и приемов обнаружения ошибок при изучении текста группой специалистов. В эту группу входят: автор программы, проектировщик, специалист по тестированию и координатор - компетентный программист, но не автор программы. Общая процедура инспекции предполагает следующие операции:
• участникам группы заранее выдается листинг программы и спецификация на нее; • программист рассказывает о логике работы программы и отвечает на вопросы инспекторов;
• программа анализируется по списку вопросов для выявления исторически сложившихся общих ошибок программирования. Список вопросов для инспекций исходного текста зависит, как от используемого языка программирования, так и от специфики разрабатываемого программного обеспечения. В качестве примера ниже приведен список вопросов, который можно использовать при анализе правильности программ, написанных на языке Pascal.
I. Контроль обращений к данным
• Все ли переменные инициализированы?
• Не превышены ли максимальные (или реальные) размеры массивов и строк? • Не перепутаны ли строки со столбцами при работе с матрицами? • Присутствуют ли переменные со сходными именами? • Используются ли файлы? Если да, то при вводе из файла проверяется ли завершение файла? • Соответствуют ли типы записываемых и читаемых значений? • Использованы ли нетипизированные переменные, открытые массивы, динамическая память? Если да, то соответствуют ли типы переменных при «наложении» формата? Не выходят ли индексы за границы массивов? 2. Контроль вычислений • Правильно ли записаны выражения (порядок следования операторов)?
• Корректно ли выполнены вычисления над неарифметическими переменными? • Корректно ли выполнены вычисления с переменными различных типов (в том числе с использованием целочисленной арифметики)? • Возможно ли переполнение разрядной сетки или ситуация машинного нуля? • Соответствуют ли вычисления заданным требованиям точности? • Присутствуют ли сравнения переменных различных типов?
3. Контроль передачи управления
• Будут ли корректно завершены циклы?
• Будет ли завершена программа? • Существуют ли циклы, которые не будут выполняться из-за нарушения условия входа? Корректно ли продолжатся вычисления? • Существуют ли поисковые циклы? Корректно ли отрабатываются ситуации «элемент найден»
и «элемент не найден»? 4. Контроль межмодульных интерфейсов
• Соответствуют ли списки параметров и аргументов по порядку, типу, единицам измерения?
• Не изменяет ли подпрограмма аргументов, которые не должны изменяться? • Не происходит ли нарушения области действия глобальных и локальных переменных с одинаковыми именами? Кроме непосредственного обнаружения ошибок, результаты инспекции позволяют программисту увидеть другие сделанные им ошибки, получить возможность оценить свой стиль программирования, выбор алгоритмов и методов тестирования. Инспекция является способом раннего выявления частей программы, с большей вероятностью содержащих ошибки, что позволяет при тестировании уделить внимание именно этим частям.
Сквозные просмотры. Сквозной просмотр, как и инспекция, представляет собой наборспособов обнаружения ошибок, осуществляемых группой лиц, просматривающих текст программы. Такой просмотр имеет много общего с процессом инспектирования, но отличается процедурой и методами обнаружения ошибок. Группа по выполнению сквозного контроля состоит из трех-пяти человек: председатель или координатор, секретарь, фиксирующий все ошибки, специалист по тестированию, программист и независимый эксперт. Сквозной просмотр предполагает выполнение следующих процедур: • участникам группы заранее выдают листинг программы и спецификацию на нее; • участникам заседания предлагают несколько тестов; • участники заседания мысленно выполняют каждый тест в соответствии с логикой программы, при этом состояние программы (значения переменных) отслеживается на бумаге или доске; • при необходимости программисту задают вопросы о логике проектирования и принятых допущениях. В большинстве сквозных просмотров при выполнении самих тестов находят меньше ошибок, чем при опросе программиста. Проверка за столом. Исторически данный метод ручного тестирования появился первым, так как он не требует наличия группы специалистов. Это - проверка исходного текста или сквозные просмотры, выполняемые одним человеком, который читает текст программы, проверяет его на наличие возможных ошибок по специальному списку часто встречающихся ошибок и «пропускает» через программу тестовые данные. Исходя из принципов тестирования, проверку за столом должен проводить человек, не являющийся автором программы. Метод наименее результативен, так как проверка представляет собой полностью неупорядоченный процесс, при ней отсутствует обмен мнениями и здоровая конкуренция. Оценка программ. Этот метод непосредственно не связан с тестированием, но егоиспользование также улучшает качество программирования. Его используют для анонимной оценки программы в терминах ее общего качества, простоты эксплуатации и ясности. Цель метода - обеспечить сравнительно объективную оценку и самооценку программистов.
Такая оценка выполняется следующим образом. Выбирается программист, который должен выполнять обязанности администратора процесса. Администратор набирает группу от шести до 20-ти участников, которые должны заниматься разработкой сходных программ. Каждому участнику предлагается представить для рассмотрения две программы, с его точки зрения - наилучшую и наихудшую. Отобранные программы случайным образом распределяются между участниками. Им дают по четыре программы - две наилучшие и две наихудшие, но не говорят, какие программы плохие, а какие - хорошие. Программист просматривает эти программы и заполняет анкету, в которой оценивает качество программ по семибалльной шкале. После этого результаты оценки сверяют, а проверяющий дает общий комментарий и рекомендации по улучшению программ.
|