Programmers are often faced with the task of partitioning programs into smaller units during program development and maintenance. In this paper, a method for partitioning programs into segments performing single specific functions is presented. The method utilizes information on data and control dependence, and is based on the concept of program slicing in order to carry out the task of partitioning programs. The notion of tightly-coupled program is formalized, and it is shown that the tightly-coupled statements performing a single specific function can be extracted from a given program. The proposed method can be readily automated and incorporated in a tool used in software developement environments. Examples to illustrate our ideas are included and we also show the applicability of the proposed partitioning method to reducing complexity of programs, proving program correctness, and program restructuring for parallel execution.