Reuse or rewrite: Combining textual, static, and dynamic analyses to assess the cost of keeping a system up-to-date