hide all comments

DSM

IDE integration considered harmful?

February 23, 2007 16:25:32 +0200 (EET)

Ok, I admit that the title is provocative, but in the past 20 years there have been several attempts in adding modeling functionality to existing IDEs. None of them seem to have worked particularly well -- at least when thinking about the past Rose integration to IDEs or the use of Visio. As far as I can see, one main reason is the difficulty to raise the level of abstraction and hide the unnecessary detail with models while still looking to have everything editable for programmers.

Ironically, a close integration with traditional IDE functionality is effectively killing the possibilities for having more automation via models: a close integration makes the mapping between models and code one-to-one and the less we can then raise the level of abstraction, read: The less work we automate. Think about how the abstraction raised when we moved from assembler. We did not seek to integrate 3GL into assembler did we? I’m sure any current attempt to do so would be regarded as comical by most. Similarly I see that we should not follow the idea of having domain concepts used with the IDE functionality available today. Instead if we investigate cases where the level of abstraction has been fundamentally raised and we have used automation to produce the code from higher-level models it has happened without any tight IDE integration. If we stay on public cases for example, Labview for control systems or Matlab/Simulink for measurement-intensive systems are not integrated tightly with existing IDE’s, my guess: For a reason. Nor do the cases at DSMForum seem to do so.

The title of this blog entry is wrong in that sense that some integration is naturally needed. Knowing best the cases with MetaEdit+ most typical is having an autobuild generator which, after producing the code calls the compiler to create the binary. In this process also the build scripts, integration to components and other project files are generated but they don’t need to be made visible. These files can naturally be edited but if we know what kinds of changes are needed why not modify the generator (and modeling language) to automate those parts too? Integration with IDE (or simulator, HW emulator) can be also done by animating the models while running the code in IDE, or in some cases even in the target. This kind of integration is fine and seen in daily use. If you have further preferences for IDE integration let me know.

Integration with models is naturally a wider topic since we can also go beyond IDE and target testing tools, configuration and deployment tools, metric packages, version control, simulators, text processing for documentation etc.

Comments

Nice post

[seb] May 16, 2007 11:27:48 +0300 (EEST)

Nice post,

I totally agree with what is said here.

Sebastien.