A class of software that provides a controlled development environment for computer programming teams. CASE systems offer tools to automate, manage, and simplify the program development process. These tools can include software for summarizing initial requirements, developing data flow diagrams, scheduling development tasks, preparing documentation, controlling software versions, and developing program code. While many CASE systems provide special support for object-oriented programming (see object-oriented programming), the term CASE can apply to any type of software development environment.