Основная причина ошибок, допускаемых даже опытными программистами, состоит в невозможности предсказать поведение сложной разветвленной программы во всех мыслимых ситуациях и при любых наборах исходных данных. Такие ошибки — настоящий бич программирования, а цена их может быть очень велика. Известны случаи, когда в результате единственного неверного оператора срывались запуски космических кораблей, происходили серьезные аварии на производстве и транспорте. Поэтому разработка методов, облегчающих процесс обнаружения ошибок и позволяющих проверять правильность программ,— это одна из центральных проблем информатики.
Производители делают мобильные устройства все более сложными, чтобы потребителю было проще жить. В качестве сравнительного примера — характеристики популярного iPhone 3G и его конкурента T-Mobile G1.