Вы задаёте массу таких вопросов, на которые в двух словах просто не ответить

Давайте постепенно.
Начнём хотя бы с "надёжности". Термин несколько расплывчатый, поэтому скажу только про свои конкретные представления.
Во-первых, за счёт простоты языка количество идиотских ошибок сведено к минимуму. Это действительно так, допустить глупость по недосмотру или от усталости, или от неопытности стало фактически невозможно. Кроме этого, простота языка и среды позволяет эффективно решать другой вопрос - кадровый. Подготовить специалиста в КП\ББ становится куда проще, чем, скажем, в Clarion.
Во-вторых, модульность даёт ясное и прозрачное представление о структуре будущей системы уже при кодировании. То есть, я делаю модуль - и я чётко понимаю, что именно этот модуль будет использоваться как рабочая единица. Нет разрыва между тем, что я пишу и тем, что будет работать. Система как на ладони. Поэтому ясность и прозрачность архитектуры я отношу к фактору, повышающему надёжность.
В-третьих, если при работе какого-то модуля случился таки "трап", то система не падает - сбой хорошо изолируется от остальных частей системы. Ничего перезапускать не надо, можно работать дальше, обходя сбойную область.
В-четвёртых, сама среда BlackBox крайне стабильна и надёжна в работе. После перехода на BB, я уже давно позабыл времена, когда приходилось искать способы обхода подводных камней. Если возникает ошибка, то это из-за моих недоработок, а не глюки BlackBox'а. Это чисто психологически легче воспринимается, так как своё легче локализовать и исправить.
После всего вышесказанного, остаётся расставить ASSERT'ы на острых местах, продраться через компилятор и выпадающие трапы (по принципу - чем больше трапов выпадет у тебя, тем меньше их выпадет у клиента) и в результате у вас получится продукт, который работает и за который душа будет спокойна.