Любая программная система с развитой функциональностью способна вывернуть мозг даже самому гениальному программисту. И в случае сложной системы говорить о функциональности нельзя (это манагерское определение и очень куцое). Тут скорее надо говорить о глубине ООП или функций, количестве подсистем и связей, даже можно привлечь такой избитый показатель, как LOC. Вот это для меня будет и оценка сложности, и оценка надёжности, и оценка сопровождаемости)