【问题标题】:How would you use AGILE here? [closed]您将如何在这里使用 AGILE? [关闭]
【发布时间】:2010-12-19 09:39:53
【问题描述】:

我是敏捷的坚定支持者,但我的一个朋友(他还不了解敏捷——他是管理型 ^^)问我如何规划和开发一个复杂的分布式项目,其中包含一个数据库层、通信层、接口,并集成到嵌入式设备中。

敏捷方法强调早期发布和迭代的概念,但是在一个项目的场景中,有许多相互连接的组件都需要功能才能使整个事情正常工作,因此很难发布早期版本无需处理所有组件。敏捷将如何帮助我的朋友?他将如何最好地利用它?

【问题讨论】:

    标签: project-management agile


    【解决方案1】:

    将您的第一次迭代专门用于架构设计,包括识别必要的组件以及定义它们之间的关系和通信。

    一旦您清楚地了解了组件的交互方式,就可以构建每个组件的骨架。也就是说,实现只有通信部分的“存根”组件,其余的功能什么都不做或返回测试数据。也有专门用于此任务的交互(包括测试组件通信机制)。

    然后您可以计划迭代,以适当的顺序充分开发每个组件,从而使系统能够以有序的方式增长。

    【讨论】:

      【解决方案2】:

      TDD - 在编写测试之后迭代不完整的部分。 Mock 未准备好的位。听起来令人兴奋。

      【讨论】:

        【解决方案3】:

        如果您不能将大型项目分解成有用的较小部分(即启用某些用例),那么敏捷在这个项目中可能不会对您有太大帮助。您可以选择结对编程、重构等技术,但总体规划确实以传统方式完成。

        【讨论】:

          【解决方案4】:

          不太可能每一层都需要完整才能被其他层使用 - 例如,持久层最初可以将对象序列化为文件,并在需要时转换为使用数据库。我会考虑实现初始故事所需的每一层的最小值,并随着系统的增长而充实以添加功能。

          以这种方式扩展系统意味着您只实现您需要的功能,而不是您认为在未来某个不确定时间可能需要的所有功能。

          【讨论】:

            【解决方案5】:

            我公司的团队面临同样类型的问题。我们正在构建具有大量移动部件和架构层的项目,这使得早期创建工作产品变得困难。此外,通常有一些专业资源需要安排或与团队稍微不同步。我们采取的一些方法如下。这一直很有挑战性,但这些方法似乎有所帮助。

            尽可能垂直构建

            • 换句话说,努力让某些东西尽快发挥作用,端到端。我们通常会在 9-16 个月的项目中进行几次冲刺。
            • 您经常会发现可以模拟或阻止大量层。
            • 通常,最初面向客户的组件是占位符。我们创建了一些有限的功能,就像客户想要的一样,但在最终项目中可能会有很大的不同。这使我们能够在系统级别证明产品的其余部分,并从系统角度提供可见性。

            将基础架构与产品分开

            我们的早期冲刺通常以基础架构/架构为中心。例如,线程子系统、性能监控、通信和测试框架。

            • 将子系统视为单独的可交付成果
            • 完全定义每个子系统
            • 完整(真正完整,而不仅仅是部分实现)每个子系统
            • 在每个子系统将如何在最终产品中使用的上下文中对其进行负载测试

            【讨论】:

            • 优秀的评论,感谢您的洞察力。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-18
            • 2018-12-23
            • 2014-11-17
            • 1970-01-01
            • 2013-02-25
            • 1970-01-01
            相关资源
            最近更新 更多