Data flow analysis and its application to software maintenance