Global Software Engineering: Challenges and solutions