Distributed Software Development involves a number of different business models. Most of the companies, when searching for external solutions in other countries (offshoring), usually have two main options: offshore outsourcing (contracting services with an external organization) and internal offshoring (contracting with a wholly owned subsidiary). Both models have been studied for a long time, and indicate the need for a great collaboration among the stakeholders to succeed in distributed development. For this reason, in this paper we compare offshore outsourcing and internal offshoring from the viewpoint of three management levels: strategic, tactical and operational. We present findings from a case study conducted in five multinational companies. The findings are presented in terms of aspects identified to improve the performance in offshore software development, and were analyzed based on two dimensions – challenges and patterns of evolution.