「漫谈」软件设计的目标和途径是什么?(2)

2023-05-03 来源:飞速影视
《领域驱动设计:软件核心复杂性应对之道》一书的副标题也是这个含义。它的侧重点在于如何利用面向对象的方式应对软件本身的复杂性,从而避免其失控。
那么笔者对软件设计的目标的认知就是:避免软件的失控。为什么是目标而不是目的呢?是因为软件设计在软件的整个生命周期中都是存在着的,这是一个持续的过程,直到软件不再被使用的那一天;而非只在刚开始设计一下,后续就一成不变了。
4 失控的根本原因
上面推导出软件设计的目标是避免软件的失控。那么是什么东西导致的失控? 你面临的业务太复杂?项目遗留的代码太烂?团队成员水平参差不齐?工期太紧张导致你无暇做设计规划?也许吧,这些或多或少都确实是已经存在的事实。
1.业务太复杂难道是失控的原因吗?回想一下软件的目的是什么?解决一些领域的相关问题,那么我们可以让业务的复杂性会消失或者降低吗?答案是肯定的,不会!这里就有人要说你放屁。。。你敢说我们无法降低业务复杂性,打你噢。你就是打死我复杂性也不会降低的,,,复杂性是业务本身存在的客观属性,是不会以人的意志来改变的,除非你不做它了。就像你现在要在淘宝买一个手机,你人在北京,卖方在广州,无论你用什么快递方式,从广州到北京这段物理距离上的时间消耗是无法消除的。
你说你比较着急,那好,卖方给你选择空运,很快你就收到货了。你说空运这不是降低了快递时间,和降低复杂性不是一样的吗? 其实并不是,因为复杂性指的是无论你用什么快递方式,从广州到北京这段物理距离上的时间消耗是无法消除的,指的是这个过程你无法消除。但是总觉得怪怪的对吗?是的,看起来是怪怪的,明明我收到货的时间缩短了,怎么复杂性没有改变呢?所以这里就引申出另外一个概念:业务交互方式所带来的影响。
这个影响非常之大,但是往往被我们所忽略,比如你选择购买发货地是北京的卖方了,是不是时间又进一步大大缩短了?实际业务上也是这样的,业务本身具备的复杂性,以及我们在把业务转化为软件后的交互方式所带来的影响,业务本身的复杂性我们无法降低和消除,但是后者交互方式则是可以控制的,这也是软件设计的一部分,所以其实上面我们选择空运是改变了这部分。就好比你是一个B/S的应用软件,你的用户在浏览器中看到了Web页面。这背后你的Web页面从服务器到用户浏览器的过程和浏览器渲染页面的过程是无论如何也无法消除的,但是浏览器可以缓存它,当你下次再打开这个页面时,它就可以省掉上述的交互过程。
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号