I work in the prodution area at my works and I design and create the software to run our automated test equipment for testing our products. Everytime I get involved with a new machine I end up with a different and (hopefully) better design. Anyway I have come to the point where I feel I need to start standardizing all the machines with the same program. I see a problem when it comes to applying updates as at the moment the test procedures are hard coded into the program at each station. I neeed to be able to update the core program without affecting the testing section.
The way I see it is that this will mean splitting the program into 2 sections.
- Main UI - This is the core that talks to everything on the machine such as cameras, sensors, printer etc and is a standalone application.
- Test Procedure - This is the steps that is executeted everytime the machine runs through a test.
The main UI will load the test procedure and execute when ever a test is required.
My question is what is the best approach to this in terms of having an application load a file and execute the code with in? Take into account that the code in the test procedure will need access to public methods on the UI/core system to communicate to sensors etc. I have heard about MS Roslyn and had a quick look, would this solve my issue?
dependency injection
and spring.net in particular -- it allow you to define parts of your app and dependencies between them in xml and thus don't require to recompile your code.