Running IDE Projects

I have always been less than enthusiastic about using integrated development environments (IDEs). I saw them as very specific applications that:
  1. Hide too much necessary detail from the developer and deny the level of control and understanding often required in anything other than toy systems development
  2. Encouraging sloppy programming practice because too much just happened under the hood
Recently however I have started using Eclipse for occasional work (I can use it for Java, C++ and Perl) and I have been working with a customer who uses Borland JBuilder. I can see some virtue in such tools, indeed for todays complex environments (i.e. .NET and J2EE) they would appaer to be essential. However pitfalls still lurk to trap the unwary. Here are my some observations:
  1. Development teams that use IDE's need a common
    1. IDE standard operating environment (SOE) that documents:
      1. Which IDE's will be supported
      2. How such tools will be set up in a consistent fashion. This affects such things as
        1. Names and locations
        2. Hierarchy of settings (projects vs. user vs. installation)
    2. Project library management standards e.g.
      1. A consistent CLASSPATH in Java that is used by all developers
      2. Link edit options in other languages
  2. Software Configuration Management (SCM) approach
    1. Needs a common directory set and file naming
    2. Re-factoring needs to be addressed (how does one manage re-factoring in an environment with enforced changed control?)
    3. Should IDE specific files (e.g. project files) be placed under SCM control?
    4. Specific for Serena Dimensions configuration management tool
      1. One workset per IDE project
      2. IDE Project directory to included in workset directory structure
    5. A documented approach for the management of shared code and libraries across multiple projects. Who is responsible for
      1. Identifying change
      2. Implementing changes
      3. Accepting and migrating changes into projects
  3. Building software for test and release environments
    1. Software build must be done via a scripting process.
      1. Some IDE's support this (e.g. JBuilder uses the -build switch).
      2. Others will required the creation of Ant, make scripts or the use of similar tools.
      3. Some IDE's will assist the in the generation of the make or Ant script
    2. Builds must be done on configuration managed environment, not on developers PCs.
    Updated 4/Feb/07
Of course some of these issues need to be addressed even wothout and IDE. However in my experience and IDE makes a lot of assumptions and without making some explicit descisions it is easy to get caught.