Мера сложности
Программа может быть сложной логически, структурно или психологически. Логическая сложность подразумевает такие особенности программ, которые делают доказательство ее корректности трудным, долгим или вообще невозможным. Например, (усложнение реализации функций (программы средствами логики предикатов первого порядка приводит к увеличению ее логической сложности. Структурная сложность определяется организацией программы, например числом различных путей в алгоритме. Психологическая сложность (определяемая как «понятность») относится к таким характеристикам, которые делают программу трудной для восприятия человеком. Психологическая сложность может являться следствием как логической, так и структурной сложности, а также может быть обусловлена действием других причин, например качеством комментариев или внешней документацией.
Структурную сложность проще всего оценить, но она наименее интересна сама по себе. Поэтому наибольшее число исследований посвящено соотнесению оценок структурной сложности (которые часто называют просто программной метрикой) с такими оценками психологической сложности, как время отладки или время, необходимое для понимания программы.
Наиболее широкие экспериментальные исследования программной метрики были выполнены Бэзили и Рейтером [5], сравнившими более 100 характеристик различных методов программирования. Было показано [66J, что время изучения программы коррелирует с ее длиной, значением меры Маккей - ба [48] и структурированностью программы, но не с мерой затрат, предложенной Е. Холстедом. Дансмор и Гэннон [22] показали, что мера, основанная на подсчете числа обращений к данным и числа активных переменных, может быть использована для предсказания затрат на программирование и сопровождение.