Design bugs are often subtle and occur by evolution with early assumptions being forgotten as new features or uses are added to systems.