Monday, May 12, 2008

Evolution of software-development tools




Ben Dawson

BEN DAWSON is director of strategic development at DALSA IPD, Billerica, MA, USA; www.dalsa.com




In the beginning there was the library, and there was a multitude of them. The user interface was the library documentation or a text-based interpreter. Libraries and interpreters impose a large memory load--the amount of information a developer has to remember to use the software. The introduction of graphical user interfaces (GUIs) greatly reduced memory load by presenting image-processing functions and program flow as graphical elements that you can pick without remembering their details.

GUIs present functions and program flow control elements as icons or in option lists. They represent functions as icons and program flow control as lines connecting the icons. More recent GUI paradigms include automatic generation of blocks of C or Visual Basic code, spreadsheets, and imaging processing “building blocks” that can be graphically combined.

Most of these paradigms require a developer who is familiar with image processing, for example, knowing about “edge detectors.” To further reduce memory load, newer development tools build image-processing knowledge into domain-specific tools. For example, the DALSA IPD iNspect package provides a “caliper” tool that is familiar to developers doing metrology and that intelligently encapsulates knowledge of “edge detectors.” I think these kinds of development tools are the near-term trend, as they allow more developers to quickly solve most common vision tasks.

Longer term, I see three trends. First, the underlying algorithms will become smarter and more like human vision, so that the imaging setup doesn’t have to be as constrained. For example, image-processing algorithms should be better at ignoring lighting changes, so we can be less concerned with lighting.

Second, there will be more “machine learning,” so a developer can “show” the system defects and let it learn what these defects are and the best ways to find them. Third, the user interface will continue to evolve to reduce memory load. The vision-system designer of 2037 might develop applications by having a dialog with his or her vision system, the way we now instruct a human inspector.