Или так, разработчик (или тимлид) получает набор требований к ПО(scope), потом пишет ТЗ (не за бесплатно естественно) и утверждает/корректирует с заказчиком. Причем в процессе уточнения требований как правило и пишется ТЗ, итеративно.
Если без передачи, то вам поможет паттерн «Регистр». Как пример Zend_Registry. Но в последнее время намечается тенденция на отказ от синглтонов как раз таки в сторону Dependency Injection.