How do you approach software development when it must interface directly with manufacturing or processing hardware?