1. A computer-implemented method for controlling an apparatus including one or more hardware units each for performing one or more corresponding functions, comprising: establishing a software architecture for controlling the apparatus; generating a device group data structure in the software architecture for each hardware unit; generating a device data structure in the software architecture associated with each instance of hardware unit function; and using the data structures in the software architecture to control functionality for the apparatus performed by the one or more hardware units.