Основное внимание в этом вопросе: Некоторые программы выполняют «дополнительную работу», чтобы увеличить вероятность «в конечном итоге успешного / удовлетворительного» результата, несмотря на одну или несколько внутренних ошибок в программном обеспечении, что требует более длительного времени выполнения при возникновении этих ошибок. Все это происходит без ведома пользователя, если результат был успешным.
Определение сложного программного обеспечения:
- Содержит код, написанный (предоставленный) более чем 10 разработчиками в течение срока его службы и не написанный в тот же период времени
- Зависит от более чем 10 внешних библиотек, каждая с оговорками
- Типичная программная задача (для получения результата, требуемого пользователем) требует 10 или более входных параметров, где большинство из них имеют значения по умолчанию, но их можно настроить, если пользователю требуется контроль.
- Самое главное, программное обеспечение, которое имеет соответствующую сложность относительно выполняемой задачи, то есть не является чрезмерно сложным .
Отредактировано: что сложного? Пожалуйста, см. Есть большая разница между сложным и сложным . (Прямая ссылка)
Определение избыточности / робастности в этом вопросе :
(добавлена робастность на основе комментариев)
- Если программная задача не удалась при использовании текущего набора параметров, попробуйте другие параметры.
- Очевидно, что внутри должно быть знание, что эти «разные» параметры используют другой путь кода, что может привести к другому (возможно, лучшему) результату.
- Иногда эти разные пути кода выбираются на основе наблюдений внешних библиотек.
- В конце концов, если фактическая задача немного отличается от спецификации пользователя, пользователь получит отчет с подробным описанием несоответствия.
- Наконец, как и более 10 настраиваемых параметров, избыточность и отчетность также настраиваются.
Пример такого программного обеспечения:
- Миграция базы данных
- Бизнес база данных
- База данных контроля источника и т. Д.
- Пакетное преобразование между документом Word и документом OpenOffice, PowerPoint и OpenOffice Draw и т. Д.
- Автоматический перевод всего сайта
- Автоматический анализ программного пакета, такого как Doxygen, но там, где анализ должен быть более надежным (т.е. не просто инструмент документирования)
- Сетевая связь, где пакеты могут быть потеряны и ожидается несколько попыток
Этот вопрос изначально был вдохновлен тем, как вы справляетесь с намеренно плохим кодом?
но в настоящее время сосредоточено только на одной из причин раздувания программного обеспечения. Этот вопрос не касается каких-либо других причин взлома программного обеспечения, таких как добавление новых функций.
Возможно связано: