领域驱动设计适用于军用软件开发吗?

领域驱动设计这个概念提出已经超过10年。

近些年来,国内已经有一些互联网公司开始试水领域驱动设计。作为军用软件开发来说,领域驱动设计适合吗?

领域驱动设计自其诞生之日起就是为了解决软件的复杂性的。领域驱动设计方面的经典之作《领域驱动设计:软件核心复杂性应对之道》,书名就已经旗帜鲜明地告诉我们了。

所以,那么简单的系统并不需要使用领域驱动设计。

另一方面,既然是领域驱动(这里的领域是指软件要解决用户的问题域,它和业务息息相关),那么一些与业务关联并不怎么紧密的软件系统,比如演示系统或教学系统也不需要使用领域驱动设计。

所以,领域驱动设计是否适合军用软件开发,我们更多地会去考虑软件的复杂性。

毕竟,领域驱动设计要建立领域模型,使用统一语言,进行战略设计和战术设计,增加了设计的复杂性,这样一来,对于简单的软件系统来说,成本收益比是不值得的;只有那些复杂的软件,使用领域驱动设计才会带来高收益。

那么,如何衡量复杂性呢?

简单地说,一个软件不仅要考虑其功能性,还要考虑安全性、可靠性、健壮性等多种因素,软件可能就会变得复杂。

但是,如果要把软件的复杂性量化,却是很困难的。虽然已经有了一些软件复杂度的评估方法,比如圈复杂度的计算方法,但是这也只是程序的复杂度,是技术复杂度的一部分,而除了这个,软件的复杂度还包含着业务的复杂度。退一步来说,即便你有一套成熟的、可用的复杂性计算方法,那么软件复杂性大于多少才适合使用领域驱动设计,还是不好确定。

这就是缺乏应用实践带来的问题。

这些问题的解答也只能通过实践来解答。

总之,对于那些功能简单的军用软件是没有必要使用领域驱动设计的,对于那些用来竞标的软件,由于开发周期短,对软件的质量要求相对没有那么高的软件也不需要使用领域驱动设计,只有那些规模巨大、功能点众多、开发周期长、质量要求高的复杂的软件,才有使用领域驱动设计的必要。

这正是:

领域驱动设计好,所需成本同样高

简单软件不考虑,复杂软件用其道

参考书目:复杂软件设计之道:领域驱动设计全面解析与实战,作者:彭晨阳,出版社:机械工业出版社

(0)

相关推荐

  • DDD 领域驱动设计简单介绍

    不同于其它的架构方法,领域驱动设计DDD(Domain Driven Design)提出了从业务设计到代码实现一致性的要求,不再对分析模型和实现模型进行区分.也就是说从代码的结构中我们可以直接理解业务 ...

  • 一文看懂领域驱动设计!

    本文作者为长沙.NET社区开发者微笑刺客,转载已获得作者授权. 前言 什么是领域,我习惯描述的是制药领域.环境领域.建筑领域.金融领域等,而在领域内,各种业务规则.业务知识盛行,如何有效的把控规则的变 ...

  • 为什么说领域驱动设计可以提升软件的质量水平?

    领域驱动设计是一套方法论,指导我们将复杂问题进行拆分.拆分出各个子系统间的关联以及是如何运转的,帮助我们解决大型的复杂系统在落地中遇到的问题. 在学习领域驱动设计的过程中我越来越感觉到领域驱动设计可以 ...

  • 基于领域驱动设计(DDD)超轻量级快速开发架构

    smartadmin.core.urf 这个项目是基于asp.net core 3.1(最新)基础上参照领域驱动设计(DDD)的理念,并参考目前最为了流行的abp架构开发的一套轻量级的快速开发web ...

  • 如何运用领域驱动设计 - 聚合

    目录 概述 何为聚合 演化案例 发现实体关系 开始划分边界吧 选取一个聚合根 通过聚合根保护你的内部对象 聚合的一些特性 通过ID引用 聚合真的是不变的吗 小的聚合 一致性 总结 概述 在前几篇的博文 ...

  • 如何运用领域驱动设计 - 工作单元

    新年伊始,祝大家喜乐如意,爱和幸福"鼠"不尽!♫. ♪♬.♩♫ 概述 在上一篇 <如何运用领域驱动设计 - 存储库> 的文章中,我们讲述了有关仓储的概念和使用规范.仓储 ...

  • DDD领域驱动设计真就一文不值?

    在互联网快速发展的这几年来,微服务.领域驱动设计等已经非常流行,并成为目前软件开发行业的主流趋势. 大家都知道,微服务划分的一个重要理论基础就是领域驱动设计.但由于 DDD 门槛高.概念多,体系庞大又 ...

  • 深入理解领域驱动设计中的聚合

    聚合模式是 DDD 的模式结构中较为难于理解的一个,也是 DDD 学习曲线中的一个关键障碍.合理地设计聚合,能清晰地表述业务一致性,也更容易带来清晰的实现,设计不合理的聚合,甚至在设计中没有聚合的概念 ...

  • 领域驱动设计(DDD)理论与方法

    DDD由来与优势 软件架构设计的真正目的是解决软件复杂度带来的问题,软件复杂度由来主要由三方面:高并发场景下的对软件高性能要求.业务场景对软件高可用要求.持续变化的业务以及业务扩张和增加需求对软件扩展 ...

  • 领域驱动设计(DDD)在爱奇艺打赏业务的实践

    领域驱动设计(Domain-Driven Design,以下简称DDD)思潮的形成要追述到30几年前,17年前,Eirc Evans定义了领域驱动设计的概念.DDD一直为传统行业的软件工程师提供软件设 ...

  • 领域驱动设计-从贫血模型到充血模型

    背景 领域模型对象只是用来存储应用的数据.业务逻辑位于服务层中,管理域对象的数据.在服务层中,应用的每个实体对应一个服务类.这种模式大家是不是很熟悉,尤其是在中小项目或者项目刚启动的时候,都是怎么方便 ...