Data Flow Analysis: Theory and Practice