Over the last 25 years, methods for supervisory control of discrete event systems and methods for submodule construction based on state machine specifications have been developed quite independently by different research communities. The purpose of this paper is to give a summary of the results in these two areas and to point out the many similarities and certain differences between the approaches taken by these two communities. The basic problem, in both cases, is to find the behavior of a single submodule X such that combined with a given submodule C, this composition exhibits a behavior that conforms to a given specification S. In the case of supervisory control, the submodule C is an existing system that is to be controlled by the controller X in such a manner that a behavior compatible with S is obtained. We discuss the main issues that must be addressed for solving this problem, review certain conditions for the existence of a solution, and present the major solution algorithms....