Для внешней структуры - файловой организации - в Unix\Linux есть свои установки, которые можно где-то почитать.
Для винды внешняя организация по моему опыту сложнее и менее "стандартная", особенно с приходом .NET :) Но можно ориентироваться на юниксы.
Если вы имеете в виду внутреннюю организацию, то бишь организацию классов, структур, идеологии, то тут имхо есть много разного рода советов, которые имеются в приведённых мною книжках. Это нужно лишь для тех, кто пишет совместно "промышленный" код.
И вообще это зависит от характера ПО и опыта программеров, кто как себя дисциплинировал за долгие годы нажимания клавиш, то бишь нет каких-то определённых правил, лишь рекомендации.
Сложная это штука, особенно, когда почитаешь:
Серия Эффективная разработка программ под ред Скотта Мейерса, Анализ программного кода на примере проектов Open Source, 2004