【发布时间】:2010-03-12 22:16:18
【问题描述】:
如何决定开发软件的软件开发过程,在决定遵循哪个开发过程时要考虑的关键因素是什么(例如敏捷、瀑布、螺旋......)。
【问题讨论】:
标签: design-patterns architecture
如何决定开发软件的软件开发过程,在决定遵循哪个开发过程时要考虑的关键因素是什么(例如敏捷、瀑布、螺旋......)。
【问题讨论】:
标签: design-patterns architecture
影响这一决定的因素很多,包括“技术”因素:
和社交:
请注意,后者至少与前者一样重要,甚至更多!
项目的性质和规模极大地限制了您发布新版本的频率,这反过来又会影响您的敏捷程度。例如。一些开源项目可以随心所欲地发布,而according to Joel,收缩包装软件的升级频率不应超过每 1.5 年。
随着团队规模的扩大,沟通往往变得更加正式,团队变得不那么敏捷。此外,项目越关键,流程就会变得越严格和正式。
如果您的用户不愿意,或者不能直接与您的团队合作,那么敏捷性就会受到限制。如果管理层坚持传统的思维和方法,那么敏捷性就会受到限制。对于物理上分开的团队也是如此。
底线是:您无需一劳永逸地选择流程。此外,名称和流行的首字母缩略词并不像您的团队每天真正在做什么那么重要。您可以以敏捷的方式执行 Waterfall 或 RUP,就像您可以有效地将 XP 或 SCRUM 转变为严格的正式流程一样。在一个好的项目中,过程会根据情况和团队的需要不断地审查、微调和改进。从看起来足够好(并且尽可能简单)的事情开始,然后定期召开回顾会议,收集有关进展顺利、出了什么问题以及可以改进的方面的反馈。
【讨论】:
有多种方法可供选择,但没有一种确定的方法(尽管它会很好)。在我们的环境中,我们使用敏捷。由于多种因素,这对我们来说是有意义的:
我还建议您看看您所在行业的其他公司,看看他们是如何处理事情的。
我要推荐的最重要的事情是,不要挂在流程上,只需构建一些很棒的东西,然后让流程从那里开始完善。虽然我们使用敏捷方法,但它是我们自己的一种混合方法,对我们有用。
希望有帮助,我相信会有比我更好的答案:-)
【讨论】:
就我个人而言,我会查看项目的整体规模(预计几天/几周与几年的开发)、复杂性、开发团队规模(以及跨多个地点的同地或分布)... ..但最重要的是,看看利益相关者,并考虑他们对项目的期望程度。
所有这些因素都倾向于在粗略的相反两极中聚集在一起。
小型、快速的项目往往具有较小的开发团队、较低的仪式要求,并且可能适合更“敏捷”的方法。 更大、多年的项目往往有庞大的团队、高仪式,并且可能更适合“瀑布式”的方法。请记住,没有迭代的瀑布几乎不会成功 - 但这超出了您的问题范围。
【讨论】: