“君君臣臣父父子子”与从职责的角度来分析软件

“君君臣臣父父子子”与从职责的角度来分析软件
黄国强 2008-11-28

    君君,臣臣,父父,子子。 (论语-颜渊)
    意思是君要象君,臣要象臣,父要象父,子要象子,君守君道,臣守臣道,父守父道,子守子道,各守各的本份。在孔子看来,处理好这几对关系,天下就井然有序,处理不好这几对关系,天下就会大乱,
    “信如君不君,臣不臣,父不父,子不子,虽有粟,吾得而食诸?” (论语-颜渊)
    如果君不象君,臣不象臣,父不象父,子不象子,大家还会有饭吃吗。[1]

    孔子是我比较推崇的一位思想家。过去批判的比较厉害,现在骂他的人也不少。这里不作深入。
    依然回到软件话题。面向对象开发的难点,就在于初学时难以找到一个正确的角度。写C程序比较多的人往往习惯从功能的角度来分解软件,这样即使用了C++的工具,依然没有体现出面向对象的特点,从而无法发挥C++的巨大威力。
    那么什么是正确的角度了,我认为,关键点是要从职责的角度来分析所开发的软件系统。首先介绍一下我做软件设计的一般步骤:
1 软件模块的划分;
2 分析模块之间的关系,这时候会调整划分不合理的模块;
3 从模块之间的关系来确定模块的职责;
4 形成一组模块的接口;
    这样,软件架构初步建立,后续改动一般不会太大。
    上面的步骤的第一步一般设计者都能想到,而且大都这样做。第二步往往会被很多人忽略。现代系统论的观点认为一个系统是由子系统以及它们之间的关系组成。任 何子系统脱离了系统,就不再具有它在系统中所能发挥的功能。很多人忽略的就是子系统的关系。相对于历史上的机械论,现代的系统论一般认为系统是有机体,不 能机械的割裂。
    孔子所讲的君臣就是一个非常好的例子,脱离君谈臣或者脱离臣谈君完全不可能。臣从臣的角度来向君提出要求,同样君从君的角度向臣提出要求。每个人都非常好 的履行自己职责,那么天下必然大治。放在软件上也是这样,如果每个模块的职责划分是正确的,而且,每个模块的实现者也正确的完成了该模块的职责。我们也相 信整个软件系统一定会成功的。

参考网页:
[1] http://www.tianya.cn/publicforum/Content/culture/1/196372.shtml
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

acloud_csu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值