您将如何在这里使用敏捷?

发布于 2024-08-12 11:11:18 字数 1431 浏览 8 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

梦幻的味道 2024-08-19 11:11:18

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

尽可能垂直构建

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

将基础架构与产品分开

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

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

Teams in my company face the same types of problems. We are building projects with a large number of moving parts and architectural layers that make it difficult to create a working product early on. Additionally, there are often specialty resources that need to be scheduled or slightly out of synch with the team. Some approaches we've taken are below It has been challenging, but these approaches seem to be helping.

Build as vertically as possible

  • In other words, strive to have something working, end to end as quickly as possible. We typically get there a few sprints in on a 9-16 month project.
  • You'll often find a significant number of layers can be mocked or held back.
  • Often, the initial customer facing components are place holders. We create a limited bit of functionality that is something like what the customer wants, but is likely to be very different in the final project. This allows us to prove the rest of the product at a system level and provide visibility from a system perspective.

Separate base architecture from the product

Our early sprints are often centered around infrastructure/architecture. For example, threading subsystems, performance monitoring, communications and test frameworks.

  • Treat the subsystems as separate deliverables
  • Fully define each subsystem
  • Complete (truly complete, not just a partial implementation) each subsystem
  • Load test each subsystem within the context of how it will be used in the final product
南烟 2024-08-19 11:11:18

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

一旦您清楚地了解了组件如何交互,就可以构建每个组件的框架。也就是说,实现仅具有通信部分的“存根”组件,而其余功能则不执行任何操作或返回测试数据。也有专门用于此任务的交互(包括测试组件通信机制)。

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

Make your first iteration to be dedicated to architectural design, including the identification of the necessary components and the definition of the relationships and communications between them.

Once you have a clear picture of how the components interact, build the skeleton of each one. That is, implement "stub" components that just have the communication part on place, and the rest of the functionnality just do nothing or return test data. Have an interation dedicated to this task (including testing the component communication mechanisms) as well.

Then you can plan iterations to fully develop each component in the appropriate order, so that the system can grow in a ordered way.

吾性傲以野 2024-08-19 11:11:18

TDD - 编写测试后使用不完整的部分进行迭代。 模拟未准备好的部分。听起来很令人兴奋。

TDD - iterate with incomplete parts after writing tests. Mock the bits that aren't ready. Sounds exciting.

橘和柠 2024-08-19 11:11:18

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

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

It is unlikely that each layer needs to be complete for it to be usable by the other layers - for example the persistence layer could just serialize objects to a file initially, and converted to use a database when the need arises. I would look at implementing the minimum of each layer needed by the initial stories and fleshed out to add functionality as the the system grows.

Growing a system this way means you only implement the functionality you need, rather than all the functionality you think you may need at some indeterminate time in the future.

陌若浮生 2024-08-19 11:11:18

如果您无法将大型项目分解为单独有用的较小部分(即启用某些用例),那么敏捷可能不会在该项目中为您提供太大帮助。你可以选择一些技术,如结对编程、重构等,但总体规划必须以传统方式完成。

If you cannot break the large project into smaller parts that are useful (i.e. enable some use cases) on their own, agile probably won't help you that much in this project. You can pick some techniques like pair programming, refactoring etc. but the overall planning has do be done in a conventional way.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文