首页 | 旧版 |中国计算机报 |中国电子报 |通信产业报 |计算机用户 |电脑教育报 |软件世界 |数字时代
高级检索
特别报道 | 评析 | 封面故事 | 企    业 | 系统平台 | 专家 | 行  业
CIO 之声 | 管理 | 应    用 | 产品主题 | 专    栏 | 报告 | 新安全
第4期 总第237期
浏览往期
当前位置:首页>>赛迪媒体>软件世界>系统平台
松耦合—软件的终极目标
作者:上海解道计算机技术有限公司首席架构师、高级咨询顾问 

当面向对象技术正在将建模对象持久化行为绑定到Model数据自身时,业界力推的SOA则倡导将数据从行为中解耦出来。看似矛盾,实际它们有一个共同点,即追求同一个终极目标:松耦合(loose coupling)。

当我们在Java波涛汹涌的潮流中奋击时,我们常常会思考:我为什么要这样做?甚至,我们会想:“松耦合”真的那么酷?“可维护性”真的是软件惟一?

也许我们迷失了方向;也许,我们应该好好探究一下,软件的最大追求是什么?

不仅是编程

难道,我们的大学计算机教育只是教会我们如何编程?这如同技工学校中只教会学员如何使用车床一样。

当我们学会了编程,接下来该做什么呢?是不是就什么都不做了呢?是不是就如同车工使用车床那样,只需日复一日地编程呢?

其实,当程序员在一个系统中持续编程(增加新的东西),这个系统就变得复杂了,他所面临的最大挑战是如何整理自己的产物。

也就是说,大学教育只教会我们如何“增加新的东西”,但是没有教育我们如何“整理这些东西”,而后者是目前软件领域日新月异、不断发生着的革命的新动力。而“增加新的东西”和“整理这些东西”完全属于不同层次的学问。

有些人谈到软件只会想到算法和数据结构,认为这些才是科学。其实这是将软件数学化了。软件不只是科学计算的工具,它自身也是一门科学,就象管理学/经济学一样,是科学和艺术的结合。

最近Java Boutique网站上刊登过一篇题为“Measuring the Complexity of OO Systems”的文章。该文衡量了OO系统的复杂性,并对软件复杂性的几个著名公理进行了详细阐述。

根据该文的观点,软件复杂性包括如下部分: Cyclomatic Complexity(圈复杂性)、 Response for Class(类的响应)、Weighted methods per class(每个类重量方法)。对于这些公理,如果不进行学习和培训,即使使用了OO语言Java等工具,还是会显示你是“业余”的。

松耦合设计

在软件开发的概念中,我们曾提到过“重整(refactoring)”这个概念,它的意思是:我们不但会“增加新的东西”,而且还要学会“整理这些东西”。

正如儿童拿到一个新玩具,他可以无师自通地很快学会玩它。但是,当玩过很多新玩具以后,他很难学会整理到处乱丢的玩具。由此可见:会编程不值得骄傲(可能源自天生),懂得如何整理才是真正的专业程序员。

现在,让我们回到问题的本质。我们已列举了软件的复杂性,复杂会导致难于维护和难于测试,所以我们需要整理。那么整理是否可以量化为一种程度呢?

我们使用“松耦合”这个概念来表示易于维护、易于测试、易于扩展的程度。松耦合值越高,我们的系统就更易于维护。当前,随着软件世界的发展,SOA、Ioc/AOP不都是在追求松耦合的最大化吗?

松耦合的一个反义词是“紧耦合”。从我们学会玩编程这个玩具开始,我们就面临着两种选择:一种是朴素的、无需训练的、近似自然的“紧耦合”路线;一种是经过科学培训的“松耦合”道路。选择哪一条道路,取决于是否受过专业培训,比如程序开发、软件工程、自动测试等。

所以,对于编程这个玩具,不在于是否会玩,而在于怎样玩和玩的水平。。

(作者笔名:板桥里人 www.jdon.com负责人)

相关文章
· 竞争力—软件并购启示录(2006.03.02)
· IT监理如何腾飞?(2006.03.02)
· 软件外包的模式不是国产软件的主要出路(2006.02.23)
· 呼唤简单(2006.02.23)
· 无线网络安全不容忽视(2006.02.23)
·特别专辑

专题:IBM中国公布2006战略布局及远景规划全文
专题:让VC怦然心动的20个秘笈全文


· 专题:孙振耀诠释惠普企业客户市场价值主张
· 专题:朗科专利案打到海外 索赔数亿美元
· 专题:两部委叫停违规WCDMA试验网
· 专题:数字电视运营对民营资本说“不”
· 全程报道:3GSM 2006大会(2月13日-16日)
· 专题:CNNIC发布第17次互联网统计报告
· 专题:英特尔欢跃与新一代迅驰平台隆重发布
· 专题:分众传媒3.25亿美元合并聚众传媒
· 专题:直击2006年国际电子消费产品展
· 专题:联想亚信Q4收入巨降 高层走马换帅

·赛迪社区