CASE tools have evolved from supporting only analysis and design (upper CASE tools) to also supporting construction and maintenance (lower CASE tools). Modern integrated CASE tools offer full life cycle coverage and automated diagram support including checks for correctness, consistency, and completeness. They can generate code and database schemas from designs as well as support reverse engineering and maintenance through analysis of existing code.