领域驱动设计这个概念提出已经超过10年。
近些年来,国内已经有一些互联网公司开始试水领域驱动设计。作为军用软件开发来说,领域驱动设计适合吗?
领域驱动设计自其诞生之日起就是为了解决软件的复杂性的。领域驱动设计方面的经典之作《领域驱动设计:软件核心复杂性应对之道》,书名就已经旗帜鲜明地告诉我们了。
所以,那么简单的系统并不需要使用领域驱动设计。
另一方面,既然是领域驱动(这里的领域是指软件要解决用户的问题域,它和业务息息相关),那么一些与业务关联并不怎么紧密的软件系统,比如演示系统或教学系统也不需要使用领域驱动设计。
所以,领域驱动设计是否适合军用软件开发,我们更多地会去考虑软件的复杂性。
毕竟,领域驱动设计要建立领域模型,使用统一语言,进行战略设计和战术设计,增加了设计的复杂性,这样一来,对于简单的软件系统来说,成本收益比是不值得的;只有那些复杂的软件,使用领域驱动设计才会带来高收益。
那么,如何衡量复杂性呢?
简单地说,一个软件不仅要考虑其功能性,还要考虑安全性、可靠性、健壮性等多种因素,软件可能就会变得复杂。
但是,如果要把软件的复杂性量化,却是很困难的。虽然已经有了一些软件复杂度的评估方法,比如圈复杂度的计算方法,但是这也只是程序的复杂度,是技术复杂度的一部分,而除了这个,软件的复杂度还包含着业务的复杂度。退一步来说,即便你有一套成熟的、可用的复杂性计算方法,那么软件复杂性大于多少才适合使用领域驱动设计,还是不好确定。
这就是缺乏应用实践带来的问题。
这些问题的解答也只能通过实践来解答。
总之,对于那些功能简单的军用软件是没有必要使用领域驱动设计的,对于那些用来竞标的软件,由于开发周期短,对软件的质量要求相对没有那么高的软件也不需要使用领域驱动设计,只有那些规模巨大、功能点众多、开发周期长、质量要求高的复杂的软件,才有使用领域驱动设计的必要。
这正是:
领域驱动设计好,所需成本同样高
简单软件不考虑,复杂软件用其道
参考书目:复杂软件设计之道:领域驱动设计全面解析与实战,作者:彭晨阳,出版社:机械工业出版社
联系客服