Information on Model Driven Development of Data Acquisition and Control Systems.

----
'''Questions''':
* What is the state of the art for Model Driven Development of Data Acquisition and Control Systems? 
* Who are the leading experts? 
* Success stories?
* References?
* Leading tools?
* Has it been applied to designing scientific-instrument systems? -- KelleyHarris

----
'''Success Stories''':

----
'''Leading Experts''':

----
'''References''':

----
'''Tools''':

----
'''Other Related Resources''':
* I-Logix, http://www.ilogix.com/, "model-driven development (MDD) solutions for embedded systems design through software development focused on real-time UML 2.0 embedded applications."
* IMEC (Interuniversity MicroElectronics Center) "Europe's leading independent research center in the field of microelectronics, nanotechnology, enabling design methods and technologies for ICT systems."  http://www.imec.be/
* BEACON FOR Simulink, ADI (Applied Dyamics International), http://www.adi.com/products_be_bss.htm, "BEACON FOR Simulink,is a set of softwareengineering tools for generating complex software andunit test vectors for use in embedded control systems."
* NI MATRIXx Design and Development Tools, http://ni.com/matrixx/design_development, "For more than 20 years, engineers worldwide have relied on the MATRIXx product family for control design applications in automotive, aerospace and defense, process control, and academic environments. ... automatic embedded code generation for C and Ada"
* tinsilica

----
'''Uses in scientific instruments''':


----
Could it be applied to designing atomic-force microscope systems? -- KelleyHarris

Here is a generous offer by WardCunningham:

"Here is an idea ...

Take all your knowledge of afm control and separate from that knowledge 
the basic operations that are present in all afm applications. Make 
sure this includes every time critical algorithm that has to be written 
in careful c++. This is the start on your model.

Now fork your codebase so that you can refactor aggressively. Get a 
copy of python and lean how it likes to work. Write some unit tests in 
python that make calls on your model in a pythonish way. Refactor your 
forked c++ modules until the python tests pass. Repeat this testing and 
refactoring until writing typical afm applications is embarrassingly 
easy. Announce that this is model driven development.

Some tips....

Keep the ui for this stuff very simple. Make sure that you can use 
python's immediate mode to write non-trivial applications in a few 
lines. Let this drop results somewhere and use a few cgi scripts to 
browse current and past results. Call this a results database browser 
and feature its simplicity.

Write some demos of the afm's most valuable features. Ask the guys in 
marketing what people on an exhibit floor would understand and love in 
just a minute. Write demos that do this and let them use them. Show 
them how to hack python.

Figure out how to exploit python's keyword arguments to make little 
demo scripts look beautiful. Call this a domain specific language. 
Emphasize how python's abstraction capabilities are both more 
straightforward and more powerful than graphical input.

Just in case, write an alternate library that will run your demos but 
capture calls in a data structure instead of running them. Use some 
graph drawing software like Dot to draw pictures of these structures. 
Show these to the marketing guys and ask how they would use them to 
sell afms.

I'll leave you to post these ideas on wiki if you think there is any 
merit to them. Mostly I'm trying to suggest things that are both 
relatively easy (assuming one has real domain knowledge) and offer 
open-ended power. The marketing connection is just to give you practice 
wielding that power once you have it. Otherwise you might not 
appreciate what you've done. Send me some pictures that you make this 
way. If this saves the company and you end up rich and famous, send me 
an afm. Best regards." -- WardCunningham 9/19/04
----

----
Keywords: Model-driven architecture, closed-loop feedback control systems, scientific instrumentation, concurrent engineering, software reuse, domain engineering

----
See also ModelDrivenSoftwareDevelopment, ModelDrivenDevelopment, ModelDrivenArchitecture,