我们公司的团队面临着相同类型的问题。我们正在构建具有大量移动部件和架构层的项目,这使得很难在早期创建一个可工作的产品。此外,通常需要安排一些特殊资源,这些资源可能与团队略有不同步。以下是我们采取的一些方法。虽然具有挑战性,但这些方法似乎有所帮助。
尽可能垂直地构建
将基础架构与产品分离
我们早期的迭代通常围绕基础架构/架构展开。例如,线程子系统、性能监控、通信和测试框架。
首先,将第一次迭代专注于架构设计,包括识别必要组件和定义它们之间的关系和通信。
一旦您清楚地了解到组件如何交互,可以构建每个组件的框架。也就是说,实现“存根”组件,只有通信部分已经就位,其余功能什么都不做或返回测试数据。还需要一次迭代来完成此任务(包括测试组件通信机制)。
然后,您可以计划迭代以适当的顺序完全开发每个组件,以便系统可以按有序方式增长。
每个层级都需要完整才能被其他层级使用的可能性不大 - 例如,持久层最初只需将对象序列化到文件中,需要时再转换为使用数据库。我会考虑实现初始故事所需的每个层级的最小功能,并在系统增长时添加功能。
以这种方式增加系统意味着您只实现所需的功能,而不是您认为未来某个不确定时间可能需要的所有功能。
如果您无法将大型项目分解为有用的较小部分(即可以单独实现某些用例),那么敏捷方法可能对该项目帮助不大。您可以选择一些技术,如配对编程、重构等,但整体规划必须以传统方式完成。