“在敏捷开发下,如何能经由敏捷团队,高效的完成软件架构设计?”
核心的思维是: 以 “团队” 为纬度,而不再以 “产品” 为纬度进行软件架构设计。唯有如此,团队才能有效的控制、处理产品上的复杂度。
也就是说,传统上, 产品团队都仅有一个、单一的产品软件架构的塑模。这种以 “产品” 为纬度的软件架构方式, 将会使所设计的软件架构, 因过于复杂与庞大;超过团队所能理解、控制、处理的范围。而使软件架构无法建立起一致性、统一性; 某些类(Class)或数据表结构的定义是互相矛盾或相关的规则是互相冲突的。
而过去团队往往得花上大量的人力与时间成本,才能解决上述由软件架构设计所引入的不一致性、不统一的问题。
在敏捷开发中, 为有效的提升产品开发的效率与质量,则可借镜 Domain-Driven Design 的思维;以 “团队” 的纬度,而非以 “产品” 为纬度进行软件架构设计。
每个团队,在 Product Owner 的带领下,只专注在自身团队的 “Bounded Context”;确保自身团队的 Bounded Context 内的类与数据表结构的一致性、统一性。至于,其他团队的 Bounded Context 内是如何设计的,则不关注。
而整个产品,则在 Super Product Owner 的带领下,建立起各个团队 Bounded Context 间的关系、关系类型、接口(协议)的定义。
最后,整个产品团队,将实际上经由持续集成,使由 “团队” 为纬度的软件架构,集成为 “产品” 级软件架构。并得以确保 “产品” 的软件架构,在持续集成后是拥有一致性与统一性的。
“要高效的完成某件事,需先充分理解人类能处理 “复杂度” 的极限为何?”
原文地址:http://blog.csdn.net/featuresoft/article/details/45459913