What is CASE tool?
CASE (Computer Aided Software Engineering) tools are used to automate some activity associated with software development in different tasks such as specification, structured analysis, design, coding and testing. CASE tools increase productivity and help producing better quality software at lower costs. This is mainly due to the facts that it significantly reduces human errors in different phases of the development, because it replaces human tasks in a software lifecycle with automated processes.
There are different CASE tools including: configuration management tools, data modeling tools, model transformation tools, program transformation tools, refactoring tools, source code generation tools and unified modeling language. These tools provide different system analysis and design techniques such as: data flow diagram, entity relationship diagram, logical schema, Program specification, SSADM and User documentation. 
CASE tools Environments can be divided into different dimensions including: Life-Cycle Support, Integration Dimension, Construction Dimension and Knowledge Based CASE dimension. 
The current research examines the impact of both back-end and integrated CASE tools on the quality of the resultant application using the ISO/IEC 9126 quality definition. The results suggest that the quality of software developed using CASE tools is better than conventionally developed systems with respect to reliability, maintainability and portability. 
UML and CASE tools
The Unified Modeling Language (UML) is a general modeling language, which provides best techniques including: data modeling, business modeling, object modeling, and component modeling. UML provides various graphical notation techniques to create visual models for different software systems.
UML provides various elements to visualize a system’s architecture including: actors, business processes, (logical) components, activities, programming language statements, database schemas and reusable software components.
There are various UML tools including: Rational Rose, StarUML, Acceleo, Jink UML… 
Advantages of using CASE tools
Increase the speed during system development
CASE tools increase productivity and speed up development process by generating codes, creating records, structures and class definitions in the different programming language. Also CASE tools generate database tables for relational database management systems as well. CASE tools provide code generation for user interfaces and reduce coding in development phase. So these tools are useful for all steps in a software development and speed up whole progress. Also as the codes are being generated by the tools, it reduces bugs in the basic levels such as class ADTs and database structure. It is easier to find problems in the clear diagrams rather than the codes, so software engineers can work on the diagrams to design the software and then create classes using CASE tools. Some case tools will modify the effect the design model when class codes are modified as well.
Reduced coding and testing time
When it become to testing phase, CASE tools provide features for testing both design and debug tools. Different testing process includes checking connection between classes, finding broken links, data type conflicts… It generates test reports which then imported into the test plan documents. 
Creating abstract classes is time consuming and it is necessary that it should be well structured and all of the properties and events declared correctly as well. Using CASE tools, developers do not need to manually write these codes anymore. After designing the system and defining the properties and methods in the class diagrams, CASE tool can easily generate well structured codes for developers and save a lot of time.
Efficient transfer of information between tools
CASE tools provide standard diagrams which is possible to access objects between these diagrams. By changing one object, it reflects all of its instances in different diagrams in the project. Also CASE tools provide options to export generate codes for various programming languages and / or different CASE tools.
Enrich graphical techniques and data flow
It is very easy to design a software using a graphical interface rather than by coding the software. CASE tools offer graphical interface for various diagrams which makes it easier for designers to create data flows and structure classes using this tools. Using CASE tools we can have an overall look to the structure of the software, so it is easier to find bugs, structure problems at this step which is useful and saves time as well.
Create and manipulate documentation
Using CASE tools we can easily produce system documentation in PDF, HTML and MS Word format. Developer can easily design system documentation with template designer tools provided by CASE tools. System analyst can estimate the consequence of change with impact analysis diagrams, matrix and analysis diagram. CASE tools can analyze the system and generate documentation about that system. Some CASE tools can generate a variety of flow diagrams, comment headers, cross references, code surveys and other useful reports from the source code as input. 
CASE tools provide different features to help development process of a system. These features can increase development speed by generating class codes for developers and generate database structure according to the designed diagrams. CASE tools provide features to test the design and code to make it easier for the developers to debug the system.
System designers can simply view the system in a graphical format, so it is easy to find structure problem and data flow issues without needing to look at the codes.
Most of the CASE tools have ability to generate system documentation in different formats which helps to reduce development time of the project.
1. Mall R. (2004) Fundamentals of software engineering second edition Prentice-Hall of India Publication, New Delhi pp. 322-328
2. Wikipedia (2010) Computer-aided software engineering Available at: http://en.wikipedia.org/wiki/Computer-aided_software_engineering [Accessed 2 Jan 2010].
3. Software Engineering: Tools, Principles and Techniques by Sangeeta Sabharwal, Umesh Publications
4. G Low, V Leenanuraksa – Software Software Technology and Engineering Practice, 1999 – ieeexplore.ieee.org
5. Wikipedia (2010) Unified modeling language, Available at: http://en.wikipedia.org/wiki/Unified_Modeling_Language [Accessed 6 Jan 2010]
6. Buzzle.com Importance of CASE Tools, Available at: http://www.buzzle.com/articles/importance-of-case-tools.html [Accessed 6 Jan 2010]