您的位置: 首页 >> 新闻中心 >> 计算机 >> 软件开发
软件最大的追求是什么
■ 最新课程推荐更多课程>>
学校培训课程开课时间上课地点精英价报名
正辰培训 微软软件测试工程师电话预约西直门教学区¥4704
新 科 海 软件测试工程师就业班电话预约海淀长远天地¥6280
北师大IT 软件工程与测试实战班电话预约北京师范大学¥1800
北师大IT 高级网络工程师就业班电话预约北京师范大学¥13000
金 同 方 网络工程师就业周末班电话预约人大总部¥7000
这段时间在开源领域,即将推出的Spring 2.0将支持非贫血模型,也就是说,Domain model的持久化可以干净地全部在Domain model自身之中实现了,这是面向对象技术一种探索。有关域模型建模困惑可见这里。   

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

  当我们在Java波涛汹涌的潮流中奋击时,我们常常会思考?我为什么要这样做?甚至,我们会想松耦合真的那么酷?可维护性真的是软件唯一?也许我们迷失了方向。

  我们要好好探究一下,软件的最大追求是什么?

  我们的大学计算机教育只是教会我们如何编程?这如同技工学校中教会学员如何使用车床一样,当我们学会了编程,接下来是什么呢?是不是就没有了呢?是不是就是如同车工那样只需日复一日的反复编程呢?

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

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

  下面我们以具体代码来说明“增加新的东西”和“整理这些东西”完全属于不同层次的学问,有些人谈到软件只会想到算法和数据结构,认为这些才是科学,其实这是将软件数学化,软件不只是科学计算的工具,它自身也是一门科学,更象管理学/经济学一样,是科学和艺术的结合。

  在最近Java(TM) Boutique网站上刊登出一篇文章Measuring the Complexity of OO Systems,衡量OO系统的复杂性,该文对软件复杂性几个著名公理进行了详细阐述,这些公理如果你不进行学习和培训,即使你使用OO语言Java等这样工具,还是显示你是“业余”的。

  软件复杂性包括以下部分(引自Measuring the Complexity of OO Systems):

Cyclomatic Complexity (圈复杂性) 
Response for Class (类的响应) 
Weighted methods per class (每个类重量方法) 
Cyclomatic Complexity

  Cyclomatic Complexity可以用下面代码来说明:

Cyclomatic Complexity (CC) = number of decision points +1 
 

  其中number of decision points是指一个if else之类的条件判断语句,比如,是下面这个条语句:

public void isValidSearchCriteria(SearchCriteria s){

  if(s!=null) {
    return true;
  }else{
    return false;
  }
}
 

  Cyclomatic complexity 对代码的可测试性和可维护性上有很大影响,正如上例指出,当你要测试isValidSearchCriteria()方法 ,你必须写三个测试用例来验证它。

  如果这个CC值增加,将有更多的判断点(decision points)数量,也就意味着需要花费更多的力量来测试这些方法。详细更多说明可参考Measuring the Complexity of OO Systems一文。

  所以,if else 或while 等条件语句是对真正OO的一种伤害(这是非OO公理见Thomas McCabe),可以极端地说:一个好的OO系统几乎在业务逻辑层看不到超出两个以上条件的if else等判断语句,这些条件语句都是可以被GoF设计模式的状态模式/策略模式等替代(你还在用if else吗)。

本新闻共2页,当前在第1页  1  2

  影视动画培训   北大BEC培训官方报名网站   2008美国夏令营启航官方指定报名网站   2008留学第一站!  
  北师大 火星时代
共举影视动画培训之鼎
  北大BEC培训官方报名网站
现在报名独享95折!
  2008年国家职业资格考试
一次过关完全备考手册
  2008留学第一站
留学资讯尽在精英留学站!
 
上一篇:基于JSP技术的网络教学平台设计
下一篇:软件“够用”就行了吗?
 相关新闻
·使用J2ME程序测试MIDlet的生命周期·在J2ME手机程序开发中使用颜色
·Windows CE下驱动程序开发基础·Skype网络电话同时在线人数超越一千万人
·傲游Maxthon财富版发布 专为网络商人打造·Microsoft Office 2008 Mac Beta靓图抢鲜
·Gmail邮箱手机版悄然升级 增离线草稿等功能·移动版火狐浏览器将在手机操作系统运行
·KOffice 2.0明年加入办公软件市场争夺·Windows CE跨进程内存注入之原理
·J2ME网络编程以及网络游戏的实现·JSP中表单数据存储的一种通用方法
·利用JSP 2.0开发Web应用程序·Servlet/JSP配置详解
·产品设计可能需要考虑的16条原则·软件“够用”就行了吗?
 
◇ 重点栏目导航
◇ 精英服务承诺
教育顾问:010-51660910
QQ交流:138660910
相关资料
·软件测试新手的修炼之路
·Smarty简体中文参考手册
·Struts中文手册
·Struts快速学习指南
·ultradev动态网页制作教程
·UML工具箱
·《设计模式》中文版
·学友Flash伴侣 1.11
·阿须图像水印(AssureMark)V2.0
·超级语霸
相关试题
·2007年全国CPA考试试卷及答案解析之《会
·2007年CPA试卷及答案解析之《财务成本管
·2008年注会考前模拟试题之《财务成本管理
·2007年全国CPA《税法》考试试卷及答案解
·2008年中级会计职称《经济法》试题及答案
·2008年注册会计师考前模拟试题参考答案之
·2008年注册会计师考前模拟试题之《会计》
·2008年注册会计师考前模拟试题之《税法》
·2008年高校招生全国统考理数试题(四川延
·2008年全国高考物理科试题参考答案(上海
相关热贴
·如何改QQ IP地址!
·恰当选择软件测试自动化方案
·ADO.NET学习总结
·.net操纵xml文件类(c#)
·Log4net教程
·VPN技术详解
·高手必读 网络端口安全防护技巧放送
·访问XP共享出现的问题解决办法
·Web2.0时代,RSS你会用了吗?(技术实现总
·.NET下正则表达式应用的四个示例