这跟软件类型、需求定义、人员资金配置、时间期限等等因素有关,不是几句话就能说清楚的,很多人为此写了专门的著作。
大概来说的话,可以按如下几点来选择:
如果需求定义明确、同类型软件开发经验充足,可以选择瀑布模型。
如果需求定义明确、软件功能配合度要求非常高、软件运行质量要求非常高,可以选择V模型。
如果需求定义不明确、软件项目规模为中小型,可以选择迭代式或螺旋模型。
如果开发时间紧迫、具有同类型软件开发经验,可以选择快速原型模型。
等等等等
如果单纯从技术上来说,一般推荐迭代模型。
但软件并不是因为技术而产生的,是因为业务性目的而产生的。这个业务性目的可能是商业的,也可能是非商业的。不同的软件建造目的和效果预期决定了选择怎样的模型。
如果是一锤子买卖的软件,也未必就用迭代模型。这个看你怎么定义一个软件的全生命周期。不同的出发点,定义的结果也不同。