Изучение практических ситуаций и учет областей применения
Этот метод предполагает тщательное исследование практики программирования или использования ЭВМ в той или иной области. Такой подход применяют для сравнения методов управления, используемых языков программирования и выявления типичных ошибок. Указанный подход эффективен при изучении практического опыта использования вычислительных систем. Многие авторы подобных исследований накопили огромное количество данных в надежде найти в них «что-нибудь интересное». Таким способом могут быть получены какие-то полезные сведения, но отсутствие средств управления экспериментом приводит к отсутствию гарантии воспроизводимости результатов или общности выводов. Аналогичные исследования, проводимые в разное время или в разных местах различными исследователями, могут не дать совпадающих результатов. Несмотря на указанные сложности, такие исследования достаточно широко распространены, поскольку позволяют получить полезные данные для сравнения используемых методов работы и выявить неожиданные приемы.
В известной книге Кнута, посвященной экспериментальному исследованию программ на Фортране [39], показано, что в подавляющем большинстве программ используются простейшие формы операторов языка: арифметические операторы присваивания в 86% случаев содержат не более одного арифметического действия, оператор цикла DO в 95% случаев используется со значением приращения счетчика цикла по умолчанию, равным 1, а использование 87% переменных сопровождается не более чем одним комментарием. Аналогичные исследования были выполнены для программ на языках PL/1 ,[24] и APL. Эти исследования проводились путем извлечения исходных текстов из соответствующих библиотек программ. Ряд подобных исследований, выполнявшихся для нормального режима работы программ, позволил выявить типичные ошибки, допускаемые программистами в процессе разработки программного обеспечения [9, 30, 33, 91]. Исследования механизмов использования терминалов позволили получить данные о работе с интерактивными системами [8] и производительности труда при программировании [84].
Одним из наиболее известных объектов исследований был проект фирмы IBM — разработка программного обеспечения банка информации для редакции газеты «Нью-Йорк тайме». Проверялась эффективность таких новых методов, как использование бригады главного программиста и структурное программирование [4]. Исследования показали существенный рост производительности труда и уменьшение уровня ошибок при использовании новых методов, но полученные результаты были подвергнуты критике за неудовлетворительную организацию управления экспериментом и сильно ограниченную отчетность. Видимость реальных результатов поведенческого труда и гласность в работе программистов-экспертов могут оказаться настолько же важными для достижения успеха, как и использование упомянутых выше формализованных методов. Изучение областей применения, проведенное фирмой IBM в Англии [40], выявило рост производительности труда группы программистов при сокращении времени реакции используемой ими системы проектирования; при этом использовались персональные терминалы. Недавние исследования в Университете шт. Мэриленд показали, что программисты работают достаточно качественно и в том случае, когда их программы не запускаются на выполнение с целью тестирования в процессе разработки [63].
Даже при отсутствии каких-либо исходных гипотез и подлежащих проверке новых технологических приемов сбор информации о практическом опыте и областях применения полезен для получения общих оценок фактического использования ЭВМ и работы программиста. Часто результаты статистического анализа совместно с результатами неформальных опросов экспериментаторов и участников эксперимента позволяют получить данные, которые можно немедленно использовать в разработке или которые. могут послужить основой управляемого эксперимента.