Исчерпывающее тестирование и стоимость "Bug Free" - PullRequest
4 голосов
/ 11 марта 2010

Когда я изучал разработку программного обеспечения, нас учили, что настоящее «программное обеспечение без ошибок» математически невозможно ни для чего, кроме самых тривиальных программ. С точки зрения математики, очень просто увидеть, как базовые вещи, такие как количество возможных входных данных и изменчивость платформ, делают отсутствие ошибок не только невозможным (в реальном времени), но и экономически глупым для всего, кроме ядерной энергетики.

Однако я постоянно слышу, как деловые люди говорят: «Понятно, что в программном обеспечении не будет ошибок, и если не все, то ошибки будут исправлены бесплатно». Обычно я отвечаю: «Нет, мы исправим все ошибки, обнаруженные в период UAT (x) недель», где x определяется договором. Это приводит к множеству споров и потере работы для людей, которые совершенно готовы пообещать невозможное.

Кто-нибудь знает (или может выразить это) хорошее объяснение того, почему «отсутствие ошибок» НЕ реалистично ИЛИ стандартно - что может понять ваш средний менеджер среднего звена?

Ответы [ 3 ]

1 голос
/ 11 марта 2010

Пожалуй, лучший способ объяснить это - прочитать немного о местах, которые действительно, действительно, действительно не хотят ошибок в программном обеспечении и что они с этим делают. (Вы можете использовать NASA в качестве примера и первый запуск Ariane 5 в качестве примера того, что происходит с такими программными ошибками.) Менеджеры среднего звена имеют тенденцию относиться к историям и параллельным примерам.

Кроме того, выясните, что происходит с сделками, в которых одна сторона обещает невозможное (и это происходит гораздо чаще, чем нравится разработчикам). Если вы можете доказать, что для обетованного это плохо кончается, это может помочь.

Кроме того, вы, возможно, захотите пойти на то, что вам нужно, как минимум, чтобы пообещать безошибочное программное обеспечение, которое было бы по-настоящему всеобъемлющей спецификацией.

1 голос
/ 11 марта 2010

Я обычно провожу менеджеров с простым объяснением того, как большинство программ на самом деле являются механизмами состояний, и что, как только вы начинаете взаимодействовать с реальным миром, число возможных состояний ввода быстро достигает бесконечности: потому что пользователь здесь вводит X в то время как Y происходит здесь в пределах 50 мс от Z, происходящего там ... и т. д., и т. д.

Конечно, примерно через пять минут их глаза, как правило, закрываются. Но, по крайней мере, я пытался.

1 голос
/ 11 марта 2010

См. Теоремы Гёделя о неполноте

См. Также Вторая проблема Гильберта

См. Также Тьюринг: проблема остановки

См. Также финансовые отчеты MSFT для численности персонала и Microsoft Connect для отчетов об ошибках в продуктах Microsoft для менее интеллектуального объяснения.

...