Планирование эксперимента
Включение в данный раздел этого вопроса продиктовано не только желанием авторов. Интересующийся читатель может обратиться к одному из многих хороших руководств по этому вопросу [38, 60]. Однако некоторые аспекты проблемы планирования эксперимента имеют свою специфику в программировании. Таковым, в частности, является выбор независимых и зависимых переменных. Выбор независимых переменных в большой степени определяется тем, что именно подлежит исследованию. В действительности весь материал настоящей главы может рассматриваться как расширенное обсуждение проблемы выбора независимых переменных при изучении процесса программирования.
Тип измерения1) |
Таблица Некоторые зависимые переменные, используемые в экспериментах с языками программирования
Конкретный показатель или способ
Подсчет числа ошибок
Практическая проверка Теоретический анализ
Определение временных характеристик
Программная метрика
Количество ошибок на этапе компиляции Количество ошибок на этапе исполнения Количество ошибок проектирования Число прогонов программы Многоцелевые тесты Модификация программы Моделирование «вручную» Объем запоминаемой информации Замкнутость программы Качественные суждения Оценки по результатам анализа Затраты времени на отладку Затраты времени на программирование Затраты времени на компиляцию Объем исходного текста Объем объектного кода Совокупность показателей (мер)2'
') См. текст. 2) См. разд. 1.5.
Выбор зависимых переменных в меньшей степени опредеЛяется предметом исследования, а в большей — целесообразностью и уместностью. В табл. 1.2 приведены основные типы зависимых переменных, использованных в экспериментах с языками программирования. Среди них подсчет количества ошибок наиболее реалистичен, но и наиболее трудно выполним. Оценки временных затрат сделать значительно легче, но они менее достоверны, поскольку получаются в результате измерений при решении разных задач. Как уровень ошибок, так И оценки временных затрат могут быть немедленно использованы для управления разработкой.
Реально выполняемые задачи, такие, как модификация или моделирование программ, пригодны для проведения управляемого эксперимента. Кроме того, они достаточно близки к задачам, которые профессиональный программист решает в рабочей обстановке. Именно эти задачи определяют наиболее широко применяемую группу оценочных критериев.
В меньшей степени подходят для реального использования «придумываемые» задачи. Хотя процессом их решения легко Управлять и нетрудно проводить требуемые измерения, этот Процесс не имеет очевидной связи ни с какой практической деятельностью программиста. Запоминаемость при этом являЕтся, вероятно, наилучшей мерой качества обучения, посколь
Ку было показано, что она соотносится с процессом программирования так же, как само программирование с другими видами деятельности, требующими достаточного опыта, — игрой в шахматы или занятиями физикой.
Основанные на измерениях характеристик программ оценки деятельности субъекта в наибольшей степени представляются независимыми, поскольку, в частности, не ясно, как эти оценки могут на что-либо влиять. Малый объем объектного кода программы важен для программ, которые должны выполняться на ЭВМ с ограниченным объемом памяти, но этот показатель ничего не говорит о качестве программы. Характеристики самой программы еще менее пригодны для суждения о ее авторе, поскольку являются в первую очередь зависимыми переменными для ряда экспериментов (см. разд. 1.5). Автоматические измерения характеристик программ потенциально имеют большое будущее, но в настоящее время на них полагаться еще нельзя.