软件是现实世界的抽象,关键是怎么抽?
软件是对现实世界的抽象,越是自然简单生命力就会越长,抽象的过程越符合人类思想结果越能明确。
现实世界是一个人与自然、人与人的世界。在这个世界中人与自然(物)是一次交互,因为自然(物)没有
思想,没办法给与回馈,每一次的交互都是从人发起,到人结束。而人与人之间的交互则是一个非常复杂的过程,
当一个人发出一次交互申请后,其他人是否能够回馈,如何回馈等将是一个未知因素,由此产生了流程和制度,
流程是保证人的交互顺序,而制度则保证人交互的规则。
上面的简单描述是我对这个世界的一些简单理解,是对我对世界进行了一次抽象的结果。基于上述的,我想说一下
软件的抽象。
我认为无论是面向过程也好,面向对象也好,最难处理的部分就是如何抽象现实世界中的流程。
面向过程是从一种自然的状态下描述流程,第一步做什么,第二步做什么。而对面向对象而言,流程该如何处理呢?
顺序图描述的内容依然是面向过程的,第一步对象A发出申请,第二步对象B响应。
这样和我们实际的世界是不相一致的,在实际中,首先要有一个特定的场景,在场景下,参与者均知道要做什么事情,
在这样的场景下,对象A发出一条消息,当B得到消息后根据自己的理解(规则)后同样发出消息,依次传递下去。
对象是有思想的,会根据自己的规则进行判断,而不是流程化的。最近了解了一写规则引擎方面的内容,觉得很有意思,
同上述的内容由一些类似。在一个特定的场景下,为每一个对象设定自己的规则,然后通过触发消息来引导事情的发展。
真正从思想上来说,只有面向过程和面向对象,而领域模型则更像是一个成品,无论是基于过程还是对象,思考后
得到一个符合某个领域的模型。而框架更是一个成品,框架是对特定软件开发领域的抽象后的产品,抽象的思想依然可以
是面向过程也可以是面向对象。
思想上面向过程、面向对象。
思想指导行动,行动可以是建立领域模型、建立开发框架。
行动的结果是形成了特定的领域模型、开发框架。
上面的描述自己都感觉有些乱,还请各位指教。