答复: 如何在敏捷开发中进行数据库设计
敏捷开发的确要求我们只针对眼前的功能进行设计和开发,但是这并不是不要我们统筹全局。只考虑眼前,而不关注未来,会造成设计不足,导致后期变化难以适应。太看重未来,看得太远,会产生设计过度,用现在的成本来换取未来未知的变化,也是得不偿失的。合理的设计就是要满足现在,并兼顾不久的将来。
如果说变化导致结构或者整个体系都要伤筋动骨,其实是我们设计不足造成的。设计的时候你的模块有没有划分清楚,有没有设计可重用的组件,模块之间如何交互,是不是进行进行低耦合的设计,模块和组件之间的接口设计是否通观全局,是否能满足相对的扩展,模块内部是一个有效的整体,变化会导致结构改变,但是这不会对整个系统造成太大影响。总之,模块之间,组件之间,层与层之间需要低耦合的设计,而内部有需要高内聚的设计,我们有没有做到。
而且,现在的开发模式,我认为应该从以数据库设计为核心的设计模式上升到领域驱动设计,专注于领域模型而不是数据模型,数据库只是数据存储的载体和查询的工具,更多的还是在业务层面的抽象,划分合适的领域,建立相对稳定同时又容易扩展的领域模型,这才能适应业务的变化。
敏捷开发的确是拥抱变化,有人说敏捷会牺牲掉架构设计,其实我感觉不是,敏捷其实对架构设计要求更高,需要对系统进行更高层次的抽象。架构设计是演变而成的,不是在开始就设计出来的,敏捷如果不支持这种演变,那就谈不上敏捷了。