1. A method to detect an error in software with a computer readable code, comprising: applying a modular analysis based on a structural abstraction and refinement of a program structure; and detecting an assertion violation indicative of a software bug.