Let us consider three layers to a modeling tool: application, semantic and technology.
Starting at the bottom, we have the technology layer. This is the computer science underpinning for the tool. As engineers and programmers, we often think about this layer first. In BridgePoint and other UML tools, the underlying technology includes Java, Eclipse, antlr, EMF, GMF, GEF and the list goes on. In recent years, the choice of these architectural technologies is influenced by widely adopted standards of Open Source Software.
In the middle we have what I am calling a semantic layer. In Model Driven Architecture, the semantics of the modeling language are captured in a metamodel. At its (creamy smooth?) center, a metamodel is a class diagram declaring the information that can be represented by the modeling tool. The types, shapes, sizes and inter-relationships of bits of information are formalized in the metamodel. Examples are state machine, attribute, event, string and of course, class itself. Concepts found in the metamodel can be captured, communicated, represented and manipulated by the tool at its application layer.
A UML tool does something; it performs a function. This functionality of the tool (diagramming, organizing models, interfacing with configuration management, etc.) is the tool application. The tool itself is a computer program with a purpose. Even though it rides atop a semantic metamodel which is embodied in a pool of technology, the application is the personality of the tool. Good choices at the semantic and technology layers can help but not guarantee that the application will behave and do its job well.
Layers above depend upon layers below, however, there is significant independence layer to layer. This independence allows changes to be made in one layer without affecting other layers. This deserves further exploration and discussion in future posts.
There is recursion and self-reference here. Do not confuse the tool application with the application the tool is used to craft. Enjoy the idea of modeling a modeling language with models. And consider modeling your modeling tool with a modeling tool.