软件开发技术名词的解密篇(8)-CMM,Callback Funcation,XML

来源:互联网 发布:淘宝客服售前售后面试 编辑:程序博客网 时间:2024/05/17 01:55
CMM:Capability Maturity Model 软件成熟度模型
  这是卡内基*梅隆大学软件工程研究所(我的专业正是软件工程,所以这也成为我心目中的圣地)的一大力作,一度曾形成了席卷全球软件开发的CMM浪潮。CMM分为五级,大多数软件企业都处于第一级,而得到第五级认证的全球也没有多少,国内去除掉挂羊头卖狗肉的,也是寥若星辰(嗯,比星辰是寥多了)。所以CMM实施一般是从第二级开始,能做到第三级的都是颇有实力的软件公司了。CMM是以Process(过程)为中心的模型,从二级始每一级都有几个Key Process(关键过程),每一个KP又分为若干Key Active(关键活动)。CMM的实施一般不能越级实施,并且每一级的实施通常都要一年以上,所以要达到较高等级是一级很困难的事。另,CMM不仅可用于较大规模公司,同样也可实施于小公司,小项目组(这是很多人所不知道的)。实施视具体情况等级之间可交叉,譬如实施时采用二级的某些KP再加上三级甚至四级的KP,但你只有实施了所有二级的KP,你才能也只能通过二级认证,即便你采用了某些四级的KP。CMM最新发展成果是CMMI(Integration),这主要是新考虑了软件与非纯软件因素的关系(譬如系统),以及团队之间的协作问题。CMM在国内的发展似乎有点走向ISO同样的道路,这实在不是一个好消息。

  Callback Function: 回调函数
  在侯sir的<<深入浅出>>中一开始就提出了这个概念,大概的提法是说回调函数是操作系统调用而你永远不要去调用的函数。这个提法让初学者有点望而生畏,以为是一种多么高深而难以领会的系统底层的核心技术。其实不然,这个技术本质很简单,而且很常用。它实质就是函数指针的基本运用(如果不知道什么是函数指针的话,翻翻书)。在一个模块中,有时想让一部分功能由其它模块实现,譬如说一个做显示的模块,它只想实现显示的资源配备,画面的刷新,缩放等控制功能,而把画具体实体(譬如圆、多边形,都可以有很多种不同效率的实现方法)的代码由别的模块来实现,怎么办呢?用函数指针。在自己的类中放一个画圆的函数指针,使用时由外部为这个函数指针赋值(其实就是指向了一个外部的函数),在自己的代码中直接调用这个函数指针来画就可以了(本模块完全不知道外部模块是怎么画圆的)。那个外部的函数在这里就是回调函数!

  在很多系统API中就使用了这种函数回调的方法,让我们开发的代码实现可以嵌入到API的代码实现当中,其实我们就是传了一个函数地址给它而已。换句话说,这些API搭好了某些运行的代码框架,我们来为它具体实现。

  XML: Extensible Markup Language 可扩充标记语言
  也许你还在为选择.net和j2ee而徘徊不前,如果是这样的话,不妨先着手学一下它们所共通的一个基础:XML。有了HTML为什么我们还要XML?很简单,HTML重在表现文本/图片以及一些多媒体内容,它很难表达数据,因为它的标记是固定的,而数据类型千千万,根本无法描述。.net和j2ee都要解决一个信息传输格式标准化的难题,这个格式要能承载文本/数据,最好还能描述程序接口,同时又应该像HTML一样简单,具有通用性,能够在HTTP下很好的运作。在这种要求下,XML产生了。它的特点正如其名,和HTTP一样,它也是一种标记语言,但是它的标记不是固定的,是可自定义(也就可无限扩展)的,这些自定义标记能够很好的描述数据类型以及对应的数据内容(乍看起来很像数据库表的定义)。除此以外,XML还可以描述程序接口,所以XML可以方便地与网络程序构件(COM、EJB等)直接交互。由于它也是一种ASCII文本流,所以与当前的HTTP兼容,在当前的internet上畅通无阻(这很重要)。有了以上功能,XML就名副其实地成为了新一代互联网技术的标准信息载体,在.net和j2ee的网络架构中,各种“构件”的信息交互都交给了XML,可谓任重而道远。

  XML我自己没怎么写过,单就学习上的经验而言,感觉语法上比HTML更琐碎一些,小细节更多,没那么容易速成:) 好在根本同源,有HTML基础甚至WEB开发基础的,学起来也很轻松。
 
原创粉丝点击