Identifying key roles and structure for software development teams