Most stored program controlled telephone switching systems are designed with centralized control architectures. Evolving processor technology and requirements of smooth growth over a wide size range have led system designers to take advantage of distributed processing architectures. This paper provides a conceptual framework for software partitioning on a distributed stored-program controlled switching system and discusses the resulting software structure as present in No. 5 ESS. To facilitate the software development process, a methodology based on current software engineering principles is employed. Sufficiently decoupled software components have expedited parallel development of software and provided reliability by reducing interaction and limiting propagation of errors among software components. The structuring strategy described for telephone switching is equally applicable to other distributed real-time control systems.