Improving Software Organizations: From Principles to Practice