A new software engineering methodology called program control structuring is proposed. Its development is justified by the need to offer the designer the capability to improve the productivity and quality of software development in the conditions of a "highly imperfect" environment. Such an environment is shown to involve the use of transient and inexperienced programmers, frequent alterations to the design specifications, and continuous development. The philosophy behind program control structuring is that of minimizing the probability of error in the design and implementation of large programs by means of language-and problem-dependent standardization. The particular standardization approach used by program control structuring is shown to provide 1) a program structure that is simple and flexible, readily understood, easily developed, and inexpensively maintained, and 2) a high-quality and partially mechanizable structure-oriented documentation scheme. Subsequently, it is suggested that many of the standards are mechanizable in the immediate future as a necessary condition for achieving higher productivity and improved program quality. Finally, the mechanization of software production is proposed as a step needed to precede the development of automatic program generation systems.