Я знаю, що це давнє запитання, і мені пощастить, якщо цю людину прочитають цю відповідь 3, але розповісти цікаву історію, і що, до біса.
Я взяв участь у проекті (вбудовані системи, критична безпека мікропрограмного забезпечення, дуже високі ставки) і мене вразило те, що я знайшов. Люди, які використовують C (особливо покажчики) неправильно, немає статичного аналізу, не перевіряється код, немає тестування, окрім як "інтегрувати його разом, запускати його, бити по ньому, дивитись, що ламається".
Я написав дуже довгий електронний лист свого першого тижня там (як консультант). Це було скупо, тому що я в основному говорив, що це було керовано керованим, розробники були над головою, жоден процес не слідкував і т. Д. Він повинен був перейти до корпоративного ВП, але натомість я надіслав його менеджеру з розробки, який найняв я. Він не зовсім захищав це, адже він визнав багато недоліків і сказав мені, що я не першим, хто їх зазначив (не жартую, правда?)
Щоб відповісти на суть первинного питання: я запропонував провести НАЙБІЛЬШЕ 1 людино-тиждень, отримуючи інструмент статичного аналізу Gimpel's Lint (PC-Lint / Flexelint), налаштований та працює на своїй платформі, та скласти повний звіт про все, що було знайдено . Я сказав їм, що я абсолютно впевнений, що в результаті ми знайдемо кілька ховаючих «таймбомів».
Вони обчислили мою погодинну ставку, помножили її на 40 і визначили, що "це занадто дорого для цього". Коротка історія, я залишив там протягом 60 днів. Приблизно через 3 роки, коли я дізнався про відкликання товару, вартість наблизилася до 9 цифр ($ 100 млн), не кажучи вже про шкоду для репутації компанії.
Я не згадую про компанію, товар чи галузь, але я все ще підтримую зв’язок з одним із інженерів там, і коли він пояснив мені, що викликало відкликання, у мене котилися очі - це була проблема, яка мала б потрапив навіть основний інструмент статичного аналізу (доступ до масиву поза межами). Чесно кажучи, я не можу з впевненістю сказати, що проблема була в коді, коли я там був, але я впевнений, якби вони витратили гроші на якийсь інструмент статичного аналізу, ця помилка не втекла б.
Тож вони заощадили 295 доларів, не купуючи PC-Lint (нормально, вони також заощадили тиждень оплати мені, максимум) - але я ніде не маю достатнього рахунку, щоб стягувати 100 млн доларів за тиждень.
Ось що я називаю досить проклятою великою марною тратою грошей.
Нагадує жарт, який багато хто з вас, можливо, вже чув:
Чи чули колись історію про гігантський корабельний двигун, який вийшов з ладу? Власники судів намагалися один за іншим експертом, але ніхто з них не міг зрозуміти, як виправити двигун. Тоді вони привезли старого, який ще з юнаків фіксував кораблі. Він носив із собою великий мішок з інструментом, а коли приїхав, одразу пішов на роботу. Він дуже уважно оглядав двигун, зверху вниз.
Двоє власників корабля були там і спостерігали за цією людиною, сподіваючись, що він буде знати, що робити. Оглянувши речі, старий дістався до своєї сумки і витягнув невеликий молоток. Він обережно щось постукав. Вмить двигун заскочив у життя. Він обережно відклав молоток. Двигун був виправлений! Через тиждень власники отримали від старого купюру на 10 000 доларів.
"Що?!" - вигукнули господарі. "Він навряд чи нічого зробив!"
Тож вони написали старості записку, в якій говорилося: "Будь ласка, надішліть нам деталізовану купюру".
Чоловік надіслав законопроект, який гласив:
Tapping with a hammer ........ $ 2.00
Knowing where to tap ......... $ 9998.00
Зусилля важливі, але все, що знаєш, що ти робиш, має значення.