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

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

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

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

参考网页:
[1] http://www.tianya.cn/publicforum/Content/culture/1/196372.shtml 文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览113427 人正在系统学习中

来源:acloud_csu

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2008年10月23日
下一篇 2008年10月24日

相关推荐