A Theory of Shared Understanding for Software Organizations