There are three main types of software development outsourcing: Hiring a dedicated team, Staff augmentation, and Project-based model.