一种分析软件的方法和系统,用以估计计算机应用的生产、开发和维护的成本。不像先前为这种分析的建议,它们主要的测量参数是代码行和函数点的数目,本发明专利技术的方法识别执行该程序中从特定间断产生的高复杂性软件段,亦即程序必须事实上进行决策的点。给这些事项分配复杂性指数,这些复杂性指数可以相加以给出该程序一个总复杂性值,或者这些指数可以作为表示该程序复杂性分布的直方图显示。(*该技术在2021年保护过期,可自由使用*)
【技术实现步骤摘要】
本专利技术涉及计算机软件的分析,包括源代码和预编码文件,诸如程序设计,以便估计有关计算机程序的生产、开发和维护的成本。分析也可以指向跟踪特定软件工程的进展,优化劳力对这种任务的配置,以及在某些场合优化软件设计自身。本专利技术涉及分析计算机程序或其一部分的方法和装置,还涉及包括计算机可读介质的计算机程序产品,在该介质上记录有为执行这种分析的计算机程序。
技术介绍
为软件开发、增强、测试等进行精确的成本估计对于销售商在市场中保持赢利是必须的。如Fairly,R在软件工程概念(纽约McGraw书籍公司,1985年版,64页和72-75页)一书中所指出的,软件产品成本的估计是软件工程中最困难和最容易发生错误的任务,特别在计划阶段。为减轻这一任务,已经提供有某些软件成本估计模型,例如在由Boehm等人在“美国程序员”(1996年,7月,2-17页)中公开的COCOMO2.0软件成本估计模型。COCOMO 2.0包括一族可定制的软件大小估计模型,包括对象点、函数点和源代码行;用于软件重使用和再设计的非线性模型;以及用于相对软件不经济尺度的模型提取的指数驱动方法。即使如此,成本估计(或劳力的估计)依然难于进行,因为某些(或所有)测量和选择定义它们的参数缺乏通用的约定,诸如它们指的是什么和它们怎样测量。例如,两个常用的参数-软件产品中的代码行和函数点数-对个人的人员解释是未定的,这因而可以导致在任何两个个人之间产生变化很大的估计,甚至同一个人在不同时间做出多种估计。当除去专门术语和不着边际的空话时,可用的估计技术有时不比由个人做出的受过训练的猜测更好。专利技术概述本专利技术的目的是通过提供一种测量系统至少部分解决这种情形,该测量系统包括对软件代码复杂性的一种一致而可重复的测量。这通过定义和提供对该测量系统的两个中心概念-决策点和复杂性指数-而实现。本专利技术提供一种决定计算机程序复杂性的方法,其中从程序源代码或其它预编码文件,诸如程序设计,决定在该程序中实际或者期望出现的某种预定事项。这些事项专门是指示正在向前的程序流中的中断的事项。这些事项例如是条件语句、循环、存储器分配、子程序调用等,它们中断了代码的线性流和/或思想的线性流,因此在编码时要仔细注意。例如,也许需要检查导致中断的代码部分,看程序流是否像期望的那样编码,函数调用的返回值是否被正确处理,是否避免了存储器漏失等。(代码和思想的)程序流的中断之所以被认为是复杂的,是因为需要暂停并反应正在进行的变化和正被选择的动作过程。形成对比的是,程序中大而简单的语句块的出现是繁琐的但是并不复杂,因为这样的块可以从开始到结束顺序扫描而不需担心代码行中的逻辑(隐式或显式)流的中断。因此,代码行的数目(或它们是怎样定义的)不再重要。它们增加大小,而不是复杂性。程序中出现程序流中断的所有事项,无论是显式还是隐式,都称为决策点。我们遇到的决策点出现的地方,例如有1.条件语句2. 循环语句的头和尾3.子程序/函数调用4.存储器分配/重分配/解除分配5.给分配的存储器冠以别名6.在C++中的Goto、continue、break语句或在其它语言中的等价语句7.在C++中的switch、case、default语句或在其它语言中的等价语句8.在C++中的return语句或在其它语言中的等价语句9.不在返回该指针的函数的参数表中的指针的返回10.在一个循环体内,在迭代内第一次使用后重定义或修改的变量11.在一个表达式或语句内的隐式混合型操作 12.通过用户定义的数据类型在其过载的实现中使用嵌入运算符13.在分母不是常数时的除法运算符14.通信调用15.文件操作16.嵌套操作上面列出最普通遇到的决策点。其它的可以在需要时用手工添加。决策点的总数目告诉我们代码中必须仔细注意的地方的数目。这些是程序中可能强调的点。在确定决策点后,给每一个决策点分配一个整数值,指示在这里称之为为该点的复杂性指数(CI)。这些值可以相加,以便对整个程序或其一部分提供一个总复杂性指数。另外可选的方案或在这之外,可以分析决策点在整个程序中的分布,例如通过形成一个复杂性指数的直方图,以确定高复杂性群。附图说明为更好理解本专利技术,以示例方式参考附图,其中图1是一个计算机系统的简化示意图。专利技术详述本专利技术涉及确定一个计算机程序或其一部分的复杂性指数和复杂性剖面图(complexity profile)。本专利技术涉及为执行这种确定的方法和装置,还涉及包括一个计算机可读介质的计算机程序产品,在该介质上记录有为执行这种决定的计算机程序。图1表示一个可以实现本专利技术的计算环境的实施例。该实施例包括所谓的独立计算机1,亦即一个并非固定连接到网络的计算机,它包括一个监视器2、键盘3、基于中央处理单元的微处理器4、硬磁盘驱动器5和随机存取存储器6,所有都通过一条连接总线7彼此相连。可操作键盘3允许用户连同用户数据输入命令到计算机,诸如检索查询式。除键盘3外,该计算机可以包括一个鼠标或轨迹球(未示出),用于输入用户命令,特别如果是该计算机由一个具有图形用户接口的操作系统控制的话。为给计算机1输入程序指令,亦即把它们加载到存储器6和/或将其存储在磁盘驱动器5上,以便计算机开始操作,和/或在受到命令时能够操作,按照本专利技术,计算机1包括CD-ROM驱动器8用以接收CD-ROM9。程序指令存储在CD-ROM9上,驱动器8从这里读这些指令。然而,熟悉本
的人理解,驱动器8读取的指令可能不能从CD-ROM9直接使用,而是加载到存储器6和存储到硬磁盘驱动器5上,由计算机1从那里使用。另外,指令可能需要使用CD-ROM上或存储器6中的合适的解压缩软件从CD-ROM解压缩,无论那种情况,可能由计算机1以不同于它们在CD-ROM上存储的顺序接收和存储。在CD-ROM驱动器8之外或代替CD-ROM驱动器8,可以提供任何适合的输入设备,例如软磁盘驱动器或磁带机或无线通信设备,诸如红外接收器(它们都没有表示在图中)。最后,计算机1还包括一个电话调制解调器10,通过它该计算机可以经由电话线11、位于因特网服务提供商(ISP)场地的调制解调器12、和ISP的计算机13临时连接到因特网。计算机1不一定是一个独立的环境。反之,它可以和其它计算机形成一个网络(未示出)的一部分,固定地连接在该网络上。它也可以固定地或具有临时链路连接到一个所谓的内联网上,亦即一组类似因特网网站或URL并且以和因特网同样的方式安排但是仅允许特定用户例如一个特定公司的雇员访问的数据保持场地。代替调制解调器10,计算机1可以具有对ISP的计算机13的一个数字硬导线连接,或者计算机1自身可以包括固定连接的因特网网站(URL),不管是否作为对其它远程用户的ISP。换句话说,代替仅可以通过本地键盘3使用的本专利技术,它可以为通过对作为ISP或者只作为一个因特网网站的计算机1的临时或固定连接的远程用户使用。被分析的程序可以是通过键盘3已经输入到计算机的软件,也许用了很长时间,并存储在硬磁盘驱动器5或装入驱动器8的另一个CD-ROM上,假定该驱动器和该另外的CD-ROM能够在该CD-ROM上重写数据,或者在前面提到的可选软盘驱动器或磁带机上。计算机程序可以从例如形成上述网络一部分的文件服务器(未示出)获得,或本文档来自技高网...
【技术保护点】
一种决定计算机程序复杂性的方法,该方法包括步骤:i)审查程序,识别其内预先定义的程序事项的出现,该程序事项作为该程序向前的程序流中的中断的指示;ii)为每一这种事项,分配和记录一个对该事项预先确定的数值值;和iii)将分配的数值 值相加来定义一个指示程序复杂性的复杂性指数。
【技术特征摘要】
...
【专利技术属性】
技术研发人员:RK贝拉,
申请(专利权)人:国际商业机器公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。