How would you explain how software interfaces with physical hardware in an automated testing environment at NGC?