【问题标题】:Deciding Development life cycle决定开发生命周期
【发布时间】:2010-03-12 22:16:18
【问题描述】:

如何决定开发软件的软件开发过程,在决定遵循哪个开发过程时要考虑的关键因素是什么(例如敏捷、瀑布、螺旋......)。

【问题讨论】:

    标签: design-patterns architecture


    【解决方案1】:

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

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

    和社交:

    • 愿意以敏捷方式与团队合作的用户
    • 什么是文化,组织内的“正常做事方式”
    • 管理层(和开发人员)对新想法的开放程度如何,他们能否相信新方法(有充分的论据和证据)
    • 团队是在同一地点还是物理上分开

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

    技术因素

    项目的性质和规模极大地限制了您发布新版本的频率,这反过来又会影响您的敏捷程度。例如。一些开源项目可以随心所欲地发布,而according to Joel,收缩包装软件的升级频率不应超过每 1.5 年。

    随着团队规模的扩大,沟通往往变得更加正式,团队变得不那么敏捷。此外,项目越关键,流程就会变得越严格和正式。

    社会因素

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


    底线是:您无需一劳永逸地选择流程。此外,名称和流行的首字母缩略词并不像您的团队每天真正在做什么那么重要。您可以以敏捷的方式执行 Waterfall 或 RUP,就像您可以有效地将 XP 或 SCRUM 转变为严格的正式流程一样。在一个好的项目中,过程会根据情况和团队的需要不断地审查、微调和改进。从看起来足够好(并且尽可能简单)的事情开始,然后定期召开回顾会议,收集有关进展顺利、出了什么问题以及可以改进的方面的反馈。

    【讨论】:

    • @Peter,非常感谢,这似乎很有意义:)
    • @vinay_rockin 欢迎 :-) 我现在也添加了早先被遗忘的链接,检查一下...
    【解决方案2】:

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

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

    我还建议您看看您所在行业的其他公司,看看他们是如何处理事情的。

    我要推荐的最重要的事情是,不要挂在流程上,只需构建一些很棒的东西,然后让流程从那里开始完善。虽然我们使用敏捷方法,但它是我们自己的一种混合方法,对我们有用。

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-10
        • 1970-01-01
        • 2016-05-12
        • 2020-11-12
        • 1970-01-01
        • 1970-01-01
        • 2011-11-28
        相关资源
        最近更新 更多