最近,我对软件开发中的敏捷实践产生了兴趣,从那以后,我已经看到很多文章指出,这些实践可以降低总体成本。
其背后的逻辑通常是这样的:如果您的需求发生变化,则可以在下一个sprint待办事项列表中反映此变化,这将导致成本降低,因为设计新功能并在时间上紧密地实现了新功能,因此根据著名的规则,成本降低了,您越晚需要对需求进行更改,满足该需求的成本就越高。
但是中大型软件项目很复杂。需求的突然变化并不意味着您不必接触系统的其他部分即可满足该需求。在很多情况下,将需要对架构进行非常大的修改,这也意味着您将需要重新实现依赖于较旧架构的所有功能。因此,降低成本的要点在这里已经消失了。当然,如果新的需求需要系统的新的独立部分,那不是问题,旧的体系结构只会不断增长,不需要重新考虑和重新实现。
相反。如果您使用的是瀑布,但突然意识到必须引入新的要求,则可以进行更改。如果需要更改现有体系结构,则可以重新设计它。如果它并没有真正引起混乱,而只是引入了系统的新部分,那么您就去做所有的工作,在这里没有问题。
话虽如此,在我看来,敏捷开发的唯一优势是可以在sprint之间完成功能的完整构建,对于很多人和项目来说,这并不关键。此外,敏捷似乎会导致整个软件体系结构不佳,因为某种功能会相互重叠,因此敏捷团队只关心功能的工作原理,而不是功能的工作原理。看起来,当系统随着时间的推移而变得越来越复杂时,敏捷开发实践实际上会增加整个产品架构的混乱度,从而最终导致更高的成本,因为引入变更的难度越来越大,而瀑布式设计则可以使您完善架构在释放任何东西之前。
有人可以指出我在哪里出问题了吗,因为显然很多人在生产环境中使用敏捷,所以我一定在某个地方错了。