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

Project management 您将如何在这里使用敏捷?,project-management,agile,Project Management,Agile,我是敏捷的大力支持者,但我的一个朋友(他还不懂敏捷,他是一个管理型的人)问我如何规划和开发一个复杂的分布式项目,包括数据库层、通信层、接口和嵌入式设备的集成 敏捷方法强调早期发布和迭代的概念,但是在一个项目的场景中,有许多相互连接的组件,这些组件都需要功能性才能工作,如果不使用所有组件,那么很难发布早期版本。敏捷将如何帮助我的朋友?他将如何最好地利用它?让您的第一次迭代专注于架构设计,包括确定必要的组件以及定义它们之间的关系和通信 一旦您清楚地了解了组件的交互方式,请构建每个组件的框架。也就是说

我是敏捷的大力支持者,但我的一个朋友(他还不懂敏捷,他是一个管理型的人)问我如何规划和开发一个复杂的分布式项目,包括数据库层、通信层、接口和嵌入式设备的集成


敏捷方法强调早期发布和迭代的概念,但是在一个项目的场景中,有许多相互连接的组件,这些组件都需要功能性才能工作,如果不使用所有组件,那么很难发布早期版本。敏捷将如何帮助我的朋友?他将如何最好地利用它?

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

一旦您清楚地了解了组件的交互方式,请构建每个组件的框架。也就是说,实现“存根”组件,只需将通信部分放在适当的位置,其余的功能性不做任何事情或返回测试数据。也有一个专门用于此任务的交互(包括测试组件通信机制)


然后,您可以计划迭代,以适当的顺序完全开发每个组件,以便系统能够以有序的方式增长。

-p>-编写测试后,使用不完整的部分进行迭代。没有准备好的部分。听起来很激动人心。

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

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


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

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

尽可能垂直地构建

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

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

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

精彩的评论,感谢您的见解。