决定开发生命周期

时间:2010-03-12 13:09:24

标签: design-patterns architecture

如何确定开发软件的软件开发过程,在决定遵循哪个开发过程时需要考虑的关键因素(例如Agile,WaterFall,Spiral ......)。

3 个答案:

答案 0 :(得分:2)

影响这一决定的因素很多,包括“技术”决定:

  • what kind of project是它(例如内部,开源,收缩包装,企业,设备驱动程序......)
  • 预测项目规模(例如人年)和团队
  • 预测项目的生命周期(从一次性原型到预计将在未来100年内运行的关键任务企业应用程序)
  • 您可以/预期提供新版本的频率

和社交的:

  • 是愿意以敏捷方式与团队合作的用户
  • 什么是文化,组织内“正常的做事方式”
  • 管理层(和开发人员)对新想法有多开放,他们能否相信新方法(有充分的论据和证据)
  • 是团队合作或分居

请注意,后者至少与前者一样多,甚至更重要!

技术因素

项目的性质和规模严重限制了发布新版本的频率,这反过来又影响了您的敏捷程度。例如。一些开源项目可以根据需要随时发布,而according to Joel,收缩包装软件的升级频率不应超过每1。5年。

随着团队规模的扩大,沟通趋于变得更加正式,团队变得更加敏捷。此外,项目越重要,流程就越严格和正式。

社会因素

如果您的用户不愿意,或者无法直接与您的团队合作,那么敏捷性就会受到限制。如果管理层坚持传统的思维方法,那么敏捷性就会受到限制。对于身体分离的团队也是如此。


底线是:您无需一劳永逸地选择流程。此外,名称和时尚缩略词并不像你的团队日常所做的那样重要。你可以用敏捷的方式做瀑布或RUP,就像你可以有效地将XP或SCRUM变成一个严格的正式过程。在一个好的项目中,随着情况和团队需求的不断,这个过程会不断进行审查,微调和改进。从一些看起来足够好的东西开始(尽可能简单),然后定期回顾会议,收集有关哪些进展顺利,出现什么问题以及哪些措施可以改进的反馈。

答案 1 :(得分:1)

有许多方法可供选择,但没有一种明确的方法(虽然它会很好)。在我们的环境中,我们使用敏捷。由于许多因素,这对我们来说很有意义:

  • 典型的时间限制(虽然每个项目都不一样,时间限制的确定方式非常一致)
  • 开发资源
  • 您可以拥有哪种类型的客户互动(他们是响应式还是无响应式)
  • 组织指南(例如,在项目开始之前他们是否期望某个文档工件,并且他们对该工件中的内容有要求)
  • 预算(再次并非总是相同,但确定预算的方法一致)

我还建议您查看行业中的其他公司,了解他们如何处理事情。

我建议的最重要的事情就是不要挂在这个过程上,只需构建一些很棒的东西,然后让流程开始改进。虽然我们使用敏捷方法,但它是我们自己的混合物,对我们有用。

希望有所帮助,我相信会有比我更好的答案: - )

答案 2 :(得分:0)

就个人而言,我会考虑项目的整体规模(预计开发时间/天数与年份相比),复杂性,开发团队规模(以及跨多个地点的共址或分布)...... 但最重要的是,看看利益相关者,并考虑他们对项目的期望程度。

所有这些因素都倾向于在相反的两极中聚集在一起。

小型,快速的项目倾向于拥有较小的开发团队,较低的仪式要求,并且可能适合更“敏捷”的方法。 更大,更多年的项目往往拥有庞大的团队,高仪式,并可能适合更“瀑布式”的方法。请记住,没有迭代的瀑布无论如何都不会成功 - 但这超出了你的问题的范围。