An investigation of optimal project scheduling and team staffing in software development using particle swarm optimization