||Both IDE and analysis tools work on top of source code. Both work with a model of source code, but these models differ as IDE and analysis tool have different requierments and needs. Also, a main challenge is synchronization between IDE and analysis tools. Hence, analysis tools are often implemented as separate applications, or, when integrated into the IDE, do not share their model with the IDE.
Other than an IDE, that usually works locally on a limited part of the source code, analysis tools often take the entire system (or at least on property of the entire system) into account. For example a text based tool might want to access the comment of all elements in the system. Or a clustering algorithm must take all associations between all classes into account.
- How to integrate analysis tools into an IDE?
- How to share the code model of IDE and analysis tools?
- How to optimize the shared model for both, local and global, access?
Todays analysis tools assume that the underlying source code never changes, however in the context of in IDE this is not given. Analysis tools often work with intermediate data, for example tools based on FCA or LSI have to maintain a global index, which need a mathematically challenging update on each small code change.
- How to synchronize IDE and analysis tools?
- How to update the model of analysis tools after a code change?
Analysis tools often introduce new properties, new associations and even new first-class entities to the code model. For example a tool that computes cyclomatic complexity for all methods, or a tool that computes dependencies between packages, or a tool that detects duplications and models them as first-class entity. First, these results must be stored in the model, and second, they have to comunicated to other tools, for example to a generic visualization tool.
- How to synchronize between analysis tools?
- How to extend the model and store extensions?
- How to publish extensions, ie how to update the model's metamodel after a model change?
The last two challenges are addressed partly in Moose, using a model-driven approach with a meta-described code model. However, most of them are still open, in particular the synchronization between code changes in the IDE the model of analysis tools. Also, when integrating analysis tools into an IDE, why shouldn't these tools not themselves be allowed to change the underlying code?
||Last edited May 14, 2007
Return to WelcomeVisitors