软件开发模型,项目需求,时间和成本,团队经验,风险管理,可扩展性