分享
 
 
 

用预测性对象点度量面向对象软件(1)

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

近年来,面向对象技术已经作为一种有优势的软件工程方法出现。和其他许多新技术一样,面向对象方法的出现使得软件开发人员和他们的经理们必须重新考虑估计他们开发项目的方法。传统的软件度量技术即使进行改善也无法满足度量生产力和猜测工作的需要。源代码行和功能点方法都是程序需要将数据和过程分解开的时代特有产物。这和面向对象范畴有冲突。传统的设计技术将数据和过程分离而面向对象技术将他们联合在一起。假如要提供准确的工作猜测或生产力跟踪,面对对象度量方法必须有多个尺度(度量维)。计算交付给客户的软件具有功能数非常重要,但对象间交流的信息和通过继续的重用对规模度量也非常重要。

本文论述了猜测性对象点(Predictive Object Points POPs),一种包含前面提到的面对对象3个尺度的度量方法。不像传统的度量方法基于结构分析的数据和过程模型,POPs是基于对象和他们的特征。POPs综合了文献中几种流行的度量方法,建立一种适合猜测工作量和跟踪生产力的方法。POPs方法的核心是每类加权方法数(Weighted Methods per Class WMC)。这种方法测量每个顶层类(或者说,每个在用户的视野中清楚的对象)并且根据类的行为(方法)类型不同进行加权。一旦得到WMC的值,POPs方法将把它和有关按类分对象组的信息和对象类之间的关系进行联合计算。接下来本文将论述POPs方法形成过程和有关工作研究结果,并且介绍一个猜测性对象点方法应用的例证。通过对一个公用领域的面向对象项目的使用,能指导读者熟悉计算猜测性对象点的机理。

传统的度量有什么错误

传统的度量方法在一些度量过程中还占有一席之地。一些年来,软件开发人员和软件估计人员使用源代码行(SLOC)或者功能点方法估计要建设的面向对象软件项目的工作量,这不是因为他们选用的方法是最好的,但却可能是最适合的,经常在组织面向对象过程不够成熟时他们比较适合。相反地,当组织越来越善于设计和开发面向对象软件时,这些传统的方法变得越来越没有用了,因为每个开发人员的代码行变得和其他人员的不是很相似。变化的原因很明显,他们已经停止了思考每一行代码是怎样和另一行代码相匹配,停止了结构化分析,走向面向对象方法的道路。首先我们不妨想想传统的程序方法和它是怎么发展的。最初,软件开发人员被迫将的软件方案完全分解,因为最早的程序语言需要辛劳地一步一步描写要实现的每一个方案的动作。随着编程的发展,越来越多的一步步描写变成了一个简单的编译命令。但是还需要分解功能业务。 结构化分析需要开发人员按过程连续地思考和编程,编写每一行代码,每一个函数和每个子系统,每一个产品,都是一种单一连续思维。在这种对源代码和函数单一的思想下,很轻易想到像代码行和功能点这样度量方法。但面向对象技术要求人们完全转变思想。一个方案不再根据需要实现它的步骤进行分解。它宁愿分解成一个个包含在方案的动作者,当然分解出来的动作者必须对方案有作用。方案空间分解为动作者和动作者的行为。既然动作者和他们的行为受他们内部之间相互作用或者环境的影响,所以每一行代码的想法需要考虑许多可能的作用在动作者上的路径。基于连续程序开发模型的度量方法将会错过这种相互作用所导致的复杂性。

相关研究

面向对象度量的研究,无论如何不是一块未曾开垦的处女地。Chidamber 等曾提出一套面向对象度量,其中包括一些度量规模的方法,他们都是很好地根据度量理论创立的[4]。Lorenz发布了一张11个“构思度量”的表,其中有些能很好适用于规模度量[16]。其他一些学者在收集软件开发工作不同的度量尺度时做出了贡献。Henderson-Sellers收集形成了一个这些方法的全部名单[2]。由于以前每种方法都是致力于面向对象软件的规模的一个度量尺度,这些方法没有一个能单独用作一个很好的规模猜测器。Whitmire提出了3-D功能点[19],这是一种扩展的功能点方法,度量软件项目的数据、控制和功能。然而3-D功能点采用的是传统的功能点思想处理碰到的问题,他可以度量所有3个尺度,但只能完成在类的水平。这就使得3-D功能点能作为一个完整的软件生产力分析的方法,但不可能用作工作量猜测。

表1列出了一些比较流行的适合于面向对象软件度量方法和他们可以度量系统特征方面。

度量方法

适用的度量方面

用例/情节脚本数(Number of use cases/scenario scripts)

规模

每类加权方法(Weighted Methods per Class (WMC))

规模,复杂性

每类方法(Methods per Class)

规模

子类数(Number of Children (NOC))

规模,复杂性

继续树深度(Depth in Inheritance Tree (DIT))

规模,复杂性

方法大小(Method Size(LOC))

规模

3-D 功能点(3-D Function Points)

规模,复杂性

对象间的耦合(Coupling Between Objects (CBO))

耦合

每类实例化变量数(Number of Instance Variables per class)

复杂性

独立消息发送数(Number of unique messages sent)

耦合/复杂性

超类数(Number of classes inherited(derived classes))

复杂性

派生类数(Number of classes inherited from (base classes))

复杂性

重用率(Reuse Ration)

品质,复杂性

表1 一些流行的面向对象度量方法

面向对象软件的度量尺度结构

传统度量方法应用于面向对象解决方案时的问题是只度量软件的一个尺度,即功能。没有度量对象与对象间通信的复杂性和通过继续的重用数量,传统功能性度量忽略了软件规模至关重要的这两个方面。功能(对象的行为)是你猜测工作量时一个重要的信息,但只是考虑这个方面,在设计得比较好的面向对象方案中会明显证实是错误的。在功能之外,还有基于系统对象间通信数量的复杂水平。这种复杂性充分影响项目规模。对象间的通信增加,就需要更多的具体设计和对象测试,他们就是在增加更多的系统服务。面向对象规模的第三个尺度是通过继续的重用。部分优秀的面向对象分析员潜心识别对象(动作着),将行为足够相似的分成一个相同的类或一个相同的类族。 类是通过行为和属性进行描述,实例化就有了具体的对象。一组有许多相似行为的对象经常设计为基类(或者父类),基类包含可以供派生类(或者子类)继续的一般方法,子类也可以添加新的方法和通过重载父类方法实现父类定义的方法中没有提供的功能。 继续是面向对象软件系统一个强有力的特征,在某些软件项目,它有可能大大减少项目工作量。

度量所有的三维

已经确定传统的度量方法缺少准确估计软件规模的三维中的两维,下一步的就是确定一种能合并所有三维的度量方法或者度量方法集合。猜测性对象点,本文的主题,综合了最近文献中出现的几种度量面向对象的软件的方法。他们是所有关于软件系统面向对象分析和设计的度量方法。这些方法度量项目面向的最重要方面~开发的类,类的方法和类的方法对系统其他部分的作用。他们也联合度量拟定类结构的广度和深度。包含在POPs计算的度量方法有:

顶层类数(Number of Top Level Classes TLC )

每类的加权平均方法数(Average Number of Weighted Methods per Class WMC)

平均继续树深度(Average Depth of Inheritance Tree DIT )

平均每基类的子类数(Average Number of Children per Base Class NOC)近年来,面向对象技术已经作为一种有优势的软件工程方法出现。和其他许多新技术一样,面向对象方法的出现使得软件开发人员和他们的经理们必须重新考虑估计他们开发项目的方法。传统的软件度量技术即使进行改善也无法满足度量生产力和猜测工作的需要。源代码行和功能点方法都是程序需要将数据和过程分解开的时代特有产物。这和面向对象范畴有冲突。传统的设计技术将数据和过程分离而面向对象技术将他们联合在一起。假如要提供准确的工作猜测或生产力跟踪,面对对象度量方法必须有多个尺度(度量维)。计算交付给客户的软件具有功能数非常重要,但对象间交流的信息和通过继续的重用对规模度量也非常重要。

本文论述了猜测性对象点(Predictive Object Points POPs),一种包含前面提到的面对对象3个尺度的度量方法。不像传统的度量方法基于结构分析的数据和过程模型,POPs是基于对象和他们的特征。POPs综合了文献中几种流行的度量方法,建立一种适合猜测工作量和跟踪生产力的方法。POPs方法的核心是每类加权方法数(Weighted Methods per Class WMC)。这种方法测量每个顶层类(或者说,每个在用户的视野中清楚的对象)并且根据类的行为(方法)类型不同进行加权。一旦得到WMC的值,POPs方法将把它和有关按类分对象组的信息和对象类之间的关系进行联合计算。接下来本文将论述POPs方法形成过程和有关工作研究结果,并且介绍一个猜测性对象点方法应用的例证。通过对一个公用领域的面向对象项目的使用,能指导读者熟悉计算猜测性对象点的机理。

传统的度量有什么错误

传统的度量方法在一些度量过程中还占有一席之地。一些年来,软件开发人员和软件估计人员使用源代码行(SLOC)或者功能点方法估计要建设的面向对象软件项目的工作量,这不是因为他们选用的方法是最好的,但却可能是最适合的,经常在组织面向对象过程不够成熟时他们比较适合。相反地,当组织越来越善于设计和开发面向对象软件时,这些传统的方法变得越来越没有用了,因为每个开发人员的代码行变得和其他人员的不是很相似。变化的原因很明显,他们已经停止了思考每一行代码是怎样和另一行代码相匹配,停止了结构化分析,走向面向对象方法的道路。首先我们不妨想想传统的程序方法和它是怎么发展的。最初,软件开发人员被迫将的软件方案完全分解,因为最早的程序语言需要辛劳地一步一步描写要实现的每一个方案的动作。随着编程的发展,越来越多的一步步描写变成了一个简单的编译命令。但是还需要分解功能业务。 结构化分析需要开发人员按过程连续地思考和编程,编写每一行代码,每一个函数和每个子系统,每一个产品,都是一种单一连续思维。在这种对源代码和函数单一的思想下,很轻易想到像代码行和功能点这样度量方法。但面向对象技术要求人们完全转变思想。一个方案不再根据需要实现它的步骤进行分解。它宁愿分解成一个个包含在方案的动作者,当然分解出来的动作者必须对方案有作用。方案空间分解为动作者和动作者的行为。既然动作者和他们的行为受他们内部之间相互作用或者环境的影响,所以每一行代码的想法需要考虑许多可能的作用在动作者上的路径。基于连续程序开发模型的度量方法将会错过这种相互作用所导致的复杂性。

相关研究

面向对象度量的研究,无论如何不是一块未曾开垦的处女地。Chidamber 等曾提出一套面向对象度量,其中包括一些度量规模的方法,他们都是很好地根据度量理论创立的[4]。Lorenz发布了一张11个“构思度量”的表,其中有些能很好适用于规模度量[16]。其他一些学者在收集软件开发工作不同的度量尺度时做出了贡献。Henderson-Sellers收集形成了一个这些方法的全部名单[2]。由于以前每种方法都是致力于面向对象软件的规模的一个度量尺度,这些方法没有一个能单独用作一个很好的规模猜测器。Whitmire提出了3-D功能点[19],这是一种扩展的功能点方法,度量软件项目的数据、控制和功能。然而3-D功能点采用的是传统的功能点思想处理碰到的问题,他可以度量所有3个尺度,但只能完成在类的水平。这就使得3-D功能点能作为一个完整的软件生产力分析的方法,但不可能用作工作量猜测。

表1列出了一些比较流行的适合于面向对象软件度量方法和他们可以度量系统特征方面。

度量方法

适用的度量方面

用例/情节脚本数(Number of use cases/scenario scripts)

规模

每类加权方法(Weighted Methods per Class (WMC))

规模,复杂性

每类方法(Methods per Class)

规模

子类数(Number of Children (NOC))

规模,复杂性

继续树深度(Depth in Inheritance Tree (DIT))

规模,复杂性

方法大小(Method Size(LOC))

规模

3-D 功能点(3-D Function Points)

规模,复杂性

对象间的耦合(Coupling Between Objects (CBO))

耦合

每类实例化变量数(Number of Instance Variables per class)

复杂性

独立消息发送数(Number of unique messages sent)

耦合/复杂性

超类数(Number of classes inherited(derived classes))

复杂性

派生类数(Number of classes inherited from (base classes))

复杂性

重用率(Reuse Ration)

品质,复杂性

表1 一些流行的面向对象度量方法

面向对象软件的度量尺度结构

传统度量方法应用于面向对象解决方案时的问题是只度量软件的一个尺度,即功能。没有度量对象与对象间通信的复杂性和通过继续的重用数量,传统功能性度量忽略了软件规模至关重要的这两个方面。功能(对象的行为)是你猜测工作量时一个重要的信息,但只是考虑这个方面,在设计得比较好的面向对象方案中会明显证实是错误的。在功能之外,还有基于系统对象间通信数量的复杂水平。这种复杂性充分影响项目规模。对象间的通信增加,就需要更多的具体设计和对象测试,他们就是在增加更多的系统服务。面向对象规模的第三个尺度是通过继续的重用。部分优秀的面向对象分析员潜心识别对象(动作着),将行为足够相似的分成一个相同的类或一个相同的类族。 类是通过行为和属性进行描述,实例化就有了具体的对象。一组有许多相似行为的对象经常设计为基类(或者父类),基类包含可以供派生类(或者子类)继续的一般方法,子类也可以添加新的方法和通过重载父类方法实现父类定义的方法中没有提供的功能。 继续是面向对象软件系统一个强有力的特征,在某些软件项目,它有可能大大减少项目工作量。

度量所有的三维

已经确定传统的度量方法缺少准确估计软件规模的三维中的两维,下一步的就是确定一种能合并所有三维的度量方法或者度量方法集合。猜测性对象点,本文的主题,综合了最近文献中出现的几种度量面向对象的软件的方法。他们是所有关于软件系统面向对象分析和设计的度量方法。这些方法度量项目面向的最重要方面~开发的类,类的方法和类的方法对系统其他部分的作用。他们也联合度量拟定类结构的广度和深度。包含在POPs计算的度量方法有:

顶层类数(Number of Top Level Classes TLC )

每类的加权平均方法数(Average Number of Weighted Methods per Class WMC)

平均继续树深度(Average Depth of Inheritance Tree DIT )

平均每基类的子类数(Average Number of Children per Base Class NOC)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有