CN105190546B - 成本计算装置、成本计算方法及计算机可读记录介质 - Google Patents

成本计算装置、成本计算方法及计算机可读记录介质 Download PDF

Info

Publication number
CN105190546B
CN105190546B CN201480013080.2A CN201480013080A CN105190546B CN 105190546 B CN105190546 B CN 105190546B CN 201480013080 A CN201480013080 A CN 201480013080A CN 105190546 B CN105190546 B CN 105190546B
Authority
CN
China
Prior art keywords
modification
cost
source code
code
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201480013080.2A
Other languages
English (en)
Other versions
CN105190546A (zh
Inventor
宫崎徹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Japan Electrical Scheme Innovation Corp
Original Assignee
Japan Electrical Scheme Innovation Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Japan Electrical Scheme Innovation Corp filed Critical Japan Electrical Scheme Innovation Corp
Publication of CN105190546A publication Critical patent/CN105190546A/zh
Application granted granted Critical
Publication of CN105190546B publication Critical patent/CN105190546B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0283Price estimation or determination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • G06F8/751Code clone detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Development Economics (AREA)
  • Theoretical Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Entrepreneurship & Innovation (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Game Theory and Decision Science (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

一种成本计算设备(10)包括:代码克隆检测单元(101),用于将系统的修改前源代码的相同或相似的片段集合检测为代码克隆;组件化水平设置单元(102),用于设置将检测的片段集成为组件所在的水平;修改后源代码估计单元(103),用于估计在设置水平通过向修改前源代码应用组件化所获得的修改后源代码;以及成本计算单元(104),用于根据计算标准,基于估计的修改后源代码计算更新系统所需的修改成本和维护成本,所述计算标准指定计算修改成本和维护成本的方法。

Description

成本计算装置、成本计算方法及计算机可读记录介质
技术领域
本发明涉及用于计算在更新系统时修改和维护所需成本的成本计算设备和成本计算方法,还涉及记录用于实现同样目的的程序的计算机可读记录介质。
背景技术
近年来,企业尝试将他们所使用的旧系统更新为在开放平台上工作的新系统。在这个尝试过程中,注意力集中于发展与旧系统执行相同处理的新系统的各种技术。这些技术的特征在于,基于旧系统的源代码实现相同处理的执行的源代码的生成。因此,与用于系统集成(SI)的传统操作相比,可以减少要求定义和设计中操作处理的数目。这样最终降低了转换为新系统的修改成本(与设计、实施及测试相关联的成本)。
对于维持了很长时间周期的旧系统,作为缺陷的反复校正、增加功能等等的结果,其源代码通常很复杂。因此,简单应用系统重组技术导致可维护性低的程序的发展。这样最终增加了新系统的维护成本(与缺陷的校正、功能的增加相关联的成本)。
另一方面,高度可维护代码的发展要求所谓的重构,例如,重新设计旧系统的结构,从而通过组件化,简化用于相互处理的程序。这种重构程度的增加,例如组件化程度的增加,导致更高的修改成本以及相反地,更低的维护成本。这样会改变新系统的成本(修改成本和维护成本的总和)。因此,必须通过与重构程度相对应的成本的估计来决定实现成本降低的重构程度。
一般而言,根据软件规模(例如,其中行数)来得出这些修改成本和维护成本的近似估计。例如,专利文献1公开了一种对于通过协议来承担软件产品的维护的情况估计维护成本的方法。专利文献1中公开的估计方法基于维护各种实体所需的成本,并基于显示维护操作在这些实体中的影响的产品模型,实现软件产品的维护成本的估计。
现有技术文献列表
专利文献
专利文献1:JP 2007-156820A
发明内容
本发明要解决的问题
但是,专利文献1只公开了估计维护成本的方法,没有公开估计从旧系统转变为新系统所需的修改成本的方法。这样对于在实现最佳重构时实现修改成本和维护成本的估计的技术提出了要求。
本发明目的是提供一种解决上述传统问题的成本计算设备、成本计算方法及程序,并实现系统的修改成本和维护成本的计算,以及将这些成本最小化的重构程度的估计。
解决问题的方案
为了实现以上目的,根据本发明一个方案的成本计算设备是一种用于计算更新系统所需的修改成本以及更新后维护成本的设备。该成本计算设备包括:代码克隆检测单元,用于将待更新系统的修改前源代码的相同或相似的片段集合检测为代码克隆;组件化水平设置单元,用于设置将检测为所述代码克隆的片段集成为组件所在的水平;修改后源代码估计单元,用于估计在设置水平通过向修改前源代码应用组件化所获得的修改后源代码;以及成本计算单元,用于根据计算标准,基于估计的修改后源代码计算所述修改成本和所述维护成本,所述计算标准指定计算所述修改成本和所述维护成本的方法。
为了实现以上目的,根据本发明一个方案的成本计算方法是一种用于计算更新系统所需的修改成本以及更新后维护成本的方法。该成本计算方法包括:(a)将待更新系统的修改前源代码的相同或相似的片段集合检测为代码克隆的步骤;(b)设置将检测为所述代码克隆的片段集成为组件所在的水平的步骤;(c)估计在设置水平通过向修改前源代码应用组件化所获得的修改后源代码的步骤;以及(d)根据计算标准,基于估计的修改后源代码计算所述修改成本和所述维护成本的步骤,所述计算标准指定计算所述修改成本和所述维护成本的方法。
为了实现以上目的,根据本发明一个方案的计算机可读介质是一种记录用于利用计算机来计算更新系统所需的修改成本和更新后维护成本的程序的计算机可读记录介质。所述程序包括指令,用于使得所述计算机执行:(a)将待更新系统的修改前源代码的相同或相似的片段集合检测为代码克隆的步骤;(b)设置将检测为所述代码克隆的片段集成为组件所在的水平的步骤;(c)估计在设置水平通过向修改前源代码应用组件化所获得的修改后源代码的步骤;以及(d)根据计算标准,基于估计的修改后源代码计算所述修改成本和所述维护成本的步骤,所述计算标准指定计算所述修改成本和所述维护成本的方法。。
本发明的有益效果
如上所述,本发明实现系统的修改成本和维护成本的计算,以及将这些成本最小化的重构程度的估计。
附图说明
图1是示出根据本发明实施例的成本计算设备的一般配置的方框图。
图2是示出根据本发明实施例的成本计算设备的特定配置的方框图。
图3示出在本发明实施例中检测的代码克隆的示例。
图4示出根据本发明实施例的组件化的示例。
图5是示出根据本发明实施例的成本计算设备的操作的示例的流程图。
图6是示出图5所示成本计算处理的细节的流程图。
图7是示出实现根据本发明实施例的成本计算设备10的计算机的示例的方框图。
图8示出在本发明的工作示例中产生的代码克隆的列表的示例。
图9示出在本发明的工作示例中使用的计算标准的示例。
图10示出根据本发明的工作示例,分别由组件化水平和成本形成的配对的示例。
具体实施方式
(实施例)
下面参照图1至图10描述根据本发明实施例的成本计算设备、成本计算方法及程序。
示例
[设备的配置]
首先,描述根据本实施例的成本计算设备的配置。图1是示出根据本发明实施例的成本计算设备的一般配置的方框图。
图1所示根据本实施例的成本计算设备10是用于计算更新系统所需的修改成本以及更新后维护成本的设备。如图1所示,成本计算设备10包括代码克隆检测单元101、组件化水平设置单元102、修改后源代码估计单元103、以及成本计算单元104。
其中,克隆检测单元101将待更新系统的修改前源代码的相同或相似的片段集合检测为代码克隆。组件化水平设置单元102设置将检测为代码克隆的片段集成为组件所在的水平(下面称为“组件化水平”)。
修改后源代码估计单元103估计在设置组件化水平通过向修改前源代码应用组件化所获得的修改后源代码。成本计算单元104根据计算标准,基于修改后源代码计算修改成本和维护成本,计算标准指定计算修改成本和维护成本的方法。
如上所述,成本计算设备10可以计算系统的修改成本和维护成本。此外,因为将指示重构程度的组件化水平设置用于通过成本计算设备10计算这些成本,所以可以基于逐个水平来进行成本计算。因此,成本计算设备10也可以估计将这些成本最小化的重构程度。
下面参照图2至图4更具体地描述根据本实施例的成本计算设备的配置。图2是示出根据本发明实施例的成本计算设备的特定配置的方框图。
如图2所示,除了代码克隆检测单元101、组件化水平设置单元102、修改后源代码估计单元103、以及成本计算单元104之外,成本计算设备10还包括成本计算标准累积单元105和组件化水平选择单元106。在本实施例中,通过在计算机中安装程序来构造成本计算设备10,如下所述。
此外,在本实施例中,将目标是成本计算的源代码累积在图2所示的外部修改前源代码累积单元30中。或者,在本实施例中,与图1的示例不同,可以不将修改前源代码累积在外部修改前源代码累积单元30中。例如,在本实施例中,可将修改前源代码从用户20的终端设备21经由通信网络(例如互联网)输入到成本计算设备10。
在本实施例中,“修改前源代码”表示企业当前使用的系统(换言之,旧系统)的源代码。“代码克隆”是源代码的相似或匹配的片段集合。构成代码克隆的其中相似或匹配的片段集合被称为“代码片断”。
图3示出在本发明实施例中检测的代码克隆的示例。在图3的示例中,在源代码A和源代码B中用虚线包围的片段充当代码克隆。在这种情况下,源代码A和源代码B的每一个包括一个代码片断。
在图3的示例中,从按照Java(注册商标)语言描述的源代码的两个序列中检测代码克隆。但是,在本实施例中,由其检测代码克隆的源代码不限于按照Java语言描述。
在本实施例中,“组件化”是用于集成被检测为代码克隆的源代码的相同或相似片段的处理,并且表示,例如代码的重写,从而允许一个代码片断呼叫另一个代码片断。
图4示出根据本发明实施例的组件化的示例。在图4的示例中,组件化校正源代码B中的代码片断,以呼叫源代码A中的代码片断的功能。通过这种方式,在组件化的一个示例中,通过功能呼叫来呼叫构成代码克隆的代码片断。
“组件化水平”是组件化水平的测度。在本实施例中,这是限定将组件化应用于代码克隆的程度的测度。具体而言,例如通过组件化所应用的代码克隆(多个)与源代码的比率[%]来表示组件化水平。在这种情况下,如果将组件化应用于所有代码克隆,那么组件化水平将是100%,而如果不将组件化应用于代码克隆,那么组件化水平将是0%。
在本实施例中,“修改后源代码”表示通过以一定的组件化水平修改修改前源代码所获得的源代码。
在本实施例中,代码克隆检测单元101从修改前源代码累积单元30获取其中累积的修改前源代码,并检测修改前源代码中的代码克隆。此外,代码克隆检测单元101产生检测的代码克隆的列表(参见图8),并将列表连同修改前源代码一起传输给组件化水平设置单元102。
在本实施例中,可以利用商用工具来构造代码克隆检测单元。具体而言,可将下面参考文献中描述的工具用作示例。
[参考文献]
Toshihiro Kamiya,Shinji Kusumoto,and Katsuro Inoue,"CCFinder:AMulti-Linguustic Token-based Code Clone Detection System for Large ScaleSource Code,"IEEE Teans.Software Engineering,vol.28,no.7,pp.654-670,(2002-7).
在本实施例中,组件化水平设置单元102可以按照任意间隔设置多个组件化水平。例如,组件化水平设置单元102可以设置多个组件化水平0%、10%、20%、…100%。此外,组件化水平设置单元102将设置的组件化水平连同修改前源代码以及从代码克隆检测单元101接收的代码克隆列表一起,通知修改后源代码估计单元103。
在本实施例中,修改后源代码估计单元103基于修改前源代码、代码克隆的列表以及从组件化水平设置单元102传输的组件化水平,基于逐个水平来估计修改后源代码。此外,修改后源代码估计单元103将估计的修改后源代码的序列以及它们各自的组件化水平传输给成本计算单元104。
指定计算修改成本和维护成本的方法的计算标准累积在成本计算标准累积单元105中。在本实施例中,成本计算单元104从成本计算标准累积单元105获取计算标准,从而计算修改成本和维护成本。
例如,在本实施例中,基于使用成本计算设备10的企业等等拥有的专有技术(例如质量标准)来设置计算标准,且包括用于计算修改成本的表达式以及用于计算维护成本的表达式。
具体而言,用于计算修改成本的表达式的一个示例是通过将经由片段的集成所得到的组件的数目乘以设置单价来计算修改成本的表达式。用于计算维护成本的表达式的一个示例是通过将修改后源代码中行数乘以设置单价来计算维护成本的表达式。通过这些表达式算出的成本的总和充当最终成本。
此外,成本计算单元104根据计算标准,将修改后源代码中成本计算所必须的测量单位的数目进行计数。然后,成本计算单元104将计数的数目应用于计算标准,从而基于逐个组件化水平计算修改成本和维护成本。成本计算单元104可以进一步计算修改成本和维护成本的总和。随后,成本计算单元104基于逐个组件化水平,将通过计算的成本以及在计算时设置的组件化水平形成的配对通知组件化水平选择单元106。
组件化水平选择单元106识别与修改成本的最小总和相对应的组件化水平以及通过成本计算单元104计算的维护成本,并将识别的组件化水平以及对应的总和呈现给外部用户20。也就是说,在本实施例中,将总成本(包括修改成本和维护成本)最小化的最佳组件化水平自动呈现给用户20。应当注意,例如经由他/她的终端设备21来进行给用户20的呈现。
[设备的操作]
下面参照图5和图6描述根据本发明实施例的成本计算设备10的操作。在本实施例中,通过令成本计算设备10操作来实施成本计算方法。因此,成本计算设备的操作的以下描述适用于根据本实施例的成本计算方法。在以下描述中,视情况参照图1至图4。
[设备的整体操作]
首先,参照图5描述成本计算设备10的整体操作。图5是示出根据本发明实施例的成本计算设备的操作的示例的流程图。
如图5所示,首先,代码克隆检测单元101获取修改前源代码累积单元30中累积的修改前源代码,并检测修改前源代码中的代码克隆(步骤S1)。在步骤S1中,代码克隆检测单元101还产生检测的代码克隆的列表,并将列表连同修改前源代码一起传输给组件化水平设置单元102。
接着,组件化水平设置单元102、修改后源代码估计单元103、以及成本计算单元104执行成本计算处理(步骤S2)。通过步骤S2的执行,成本计算单元104基于逐个组件化水平,将通过计算的成本以及在计算时设置的组件化水平形成的配对通知组件化水平选择单元106。下面参照图6描述步骤S2。
接着,组件化水平选择单元106从成本计算单元104通知的配对(即,分别由成本和组件化水平形成的配对)中选择最小成本配对,并经由终端设备21将选择的配对中的成本和组件化水平呈现给用户20(步骤S3)。
[与成本计算处理有关的设备的操作]
下面,参照图6更详细地描述图5所示的成本计算处理。图6是示出图5所示成本计算处理的细节的流程图。
如图6所示,首先,组件化水平设置单元102设置用于处理的组件化水平的默认值(步骤S201)。然后组件化水平设置单元102将修改前源代码、代码克隆的列表、以及设置的组件化水平传递给修改后源代码估计单元103。
随后,修改后源代码估计单元103根据设置的组件化水平,通过执行组件化,如图4所示,估计修改后源代码(步骤S202)。此外,修改后源代码估计单元103将估计的修改后源代码以及对应的组件化水平传输给成本计算单元104。
具体而言,在之后未将修改后源代码呈现给用户20的情况下,在步骤S202的估计处理中只计算修改后源代码中行数或者步骤的数目就足矣。在这种情况下,可以缩短处理时间周期。
接着,成本计算单元104从成本计算标准累积单元105获取计算标准(参见图8所述)(步骤S203)。
然后,成本计算单元104根据计算标准,将从修改后源代码估计单元103传输的修改后源代码中成本计算所必须的测量单位的数目进行计数。成本计算单元104将计数的数目应用于计算标准,从而计算与设置的组件化水平相对应的修改成本和维护成本(步骤S204)。
之后,成本计算单元104计算修改成本和维护成本的总和,并将通过计算的成本总和与设置的组件化水平形成的配对通知组件化水平选择单元106。
接着,组件化水平设置单元102确定是否对于所有组件化水平执行了处理(步骤S205)。
如果组件化水平设置单元102在步骤S205确定尚未对于所有组件化水平执行了处理(S205:否),则组件化水平设置单元102将组件化水平的值增加一个预设间隔(步骤S206)。然后组件化水平设置单元102再次执行步骤S202。
另一方面,如果组件化水平设置单元102在步骤S205确定对于所有组件化水平执行了处理(S205:是),则组件化水平设置单元102结束成本计算处理。之后,执行步骤S3。
[本发明的有益效果]
如上所述,在本实施例中,可以估计修改后源代码。因此,通过使用预设计算标准,能够可靠地计算源代码的修改所必须的成本以及修改后维护操作所必须的成本。通过将这些成本相加,还可以计算总成本。
在本实施例中,在改变组件化水平的同时自动计算修改成本和维护成本。通过这种方式,可以容易地识别将修改成本和维护成本最小化的组件化水平,并呈现给用户。
[修改示例]
在上述示例中,组件化水平选择单元106只向用户20呈现两种信息片,也就是成本和组件化水平。但是,本实施例不限于该示例。例如,通过将修改后源代码包括在成本计算单元104向组件水平选择单元106发布的通知中,组件水平选择单元106可将修改后源代码的内容呈现给用户20。
在上述示例中,按照相同的编程语言来描述修改前源代码和修改后源代码。但是,在本实施例中,可以按照不同的编程语言来描述它们。也就是说,在输入修改前源代码之后,可以对源代码施行语言变换处理。
例如,在应用修改从而将按照COBOL语言描述的系统变换为按照Java语言描述的系统的情况下,成本计算设备10首先接收按照COBOL语言描述的源代码作为输入。然后,应用变换为Java语言的处理。随后,将步骤S1之后的处理应用于后期变换源代码。应当注意,可以利用商用工具来执行这种语言变换处理。
[程序]
对于根据本实施例的程序而言使得计算机执行图5所示的步骤S1至S3以及图6所示的步骤S201至S206是足够的。通过将该程序安装在计算机中并执行安装的程序,可以实现根据本实施例的成本计算设备10和成本计算方法。在这种情况下,计算机的中央处理器(CPU)充当代码克隆检测单元101、组件化水平设置单元102、修改后源代码估计单元103、成本计算单元104、以及组件化水平选择单元106,并因此执行处理。
下面参照图7描述通过执行根据本实施例的程序来实现成本计算设备10的计算机。图7是示出实现根据本发明实施例的成本计算设备10的计算机的示例的方框图。
如图7所示,计算机10包括CPU 111、主存储器112、存储设备113、输入接口114、显示控制器115、数据读取器/写入器116、以及通信接口117。这些组件的连接方式使得它们可以经由总线121相互进行数据通信。
CPU 111通过将存储设备113中存储的根据本实施例的程序(代码)部署于主存储器112,并按照预定顺序执行部署的程序,执行各种类型的计算。主存储器112通常是易失性存储设备,例如动态随机访问存储器(DRAM)。在存储于计算机可读记录介质120中时提供根据本实施例的程序。应当注意,可将根据本实施例的程序分布于经由通信接口117连接的互联网。
存储设备113的具体示例包括硬盘和半导体存储设备,例如闪存。输入接口114调解CPU 111与输入设备118(例如键盘和鼠标)之间的数据传输。显示控制器115连接到显示设备119并控制显示设备119上的显示。
数据读取器/写入器116调解CPU 111与记录介质120之间的数据传输。数据读取器/写入器116从记录介质120读取程序,并将计算机110中的处理结果写入记录介质120。通信接口117调解CPU 111与其他计算机之间的数据传输。
下面是记录介质120的具体示例:通用半导体存储装置,例如CompactFlash(CF,注册商标)和Secure Digital(SD);磁存储介质,例如柔性盘;以及光存储介质,例如压缩盘只读存储器(CD-ROM)。
工作示例1
下面参照图8至图10描述本发明的工作示例。应当注意,下面按照图5和图6所示的步骤来描述工作示例。
[步骤S1]
首先,将修改前源代码输入成本计算设备10。然后,代码克隆检测单元101检测代码克隆并产生检测的代码克隆的列表。在本工作示例中假定,输入包括总共10000行的源代码作为修改前源代码。
图8示出步骤S1中产生的代码克隆的列表。图8示出在本发明的工作示例中产生的代码克隆的列表的示例。如图8所示,在代码克隆的列表中,对于检测的每个代码克隆登记以下事项:分配给代码克隆的号码、代码克隆中代码片断的数目、代码片断中行数、以及代码克隆中行的总数。
[步骤S2(S201至S206)]
随后,执行成本计算处理。首先,组件化水平设置单元102将0%设置为组件化水平的默认值(步骤S201)。
接着,修改后源代码估计单元103估计与0%的组件化水平相对应的修改后源代码(步骤S202)。这里,因为组件化水平是0%,所以修改后源代码估计单元103在不执行组件化的情况下估计修改后源代码。
接着,成本计算单元104从成本计算标准累积单元105获取图9所示的计算标准(步骤S203)。图9示出在本发明的工作示例中使用的计算标准的示例。在图9的示例中,将“成本=修改成本+维护成本”指示为计算标准。图9所示的计算标准还指示,将修改成本计算为“通过组件化得到的组件的数目×30000日元(单价)”,以及将维护成本计算为“修改后源代码中行数×100日元(单价)”。
接着,成本计算单元104根据从成本计算标准累积单元105获取的计算标准计算成本,并将通过计算的成本与组件化水平形成的配对通知组件化水平选择单元106(步骤S204)。
具体而言,修改成本为“通过组件化得到的组件的数目×30000日元”。但是,因为组件化水平为0%,也就是说,因为在不执行组件化的情况下估计修改后源代码,所以修改成本为0日元。另一方面,维护成本为“修改后源代码中行数×100日元”。但是,因为组件化水平为0%,所以修改后源代码中行数等于修改前源代码中行数。因此,维护成本为10000行×100日元=1百万日元。
因此,与0%的组件化水平相对应的成本是修改成本与维护成本的总和,即,1百万日元(=0日元+1百万日元)。组件化水平选择单元106被通知以通过计算的成本(按照上述方式获得)以及组件化水平形成的配对。
接着,组件化水平设置单元102确定,是否对于所有组件化水平执行了处理(步骤S205)。这里,尚未对于所有组件化水平执行处理。因此,组件化水平设置单元103为下一个处理将组件化水平改变为10%(步骤S206),然后再次执行步骤S202。
接着,修改后源代码估计单元103估计与10%的组件化水平相对应的修改后源代码(步骤S202)。这里,因为组件化水平为10%,所以修改后源代码估计单元103仅将组件化应用于图8所示代码克隆的10%,按照其中行的号码从大到小的顺序。在图8的示例中,因为有10个代码克隆,所以将组件化应用于分配号码4的代码克隆,其具有行的最大总数。
具体而言,执行代码克隆的组件化如下。首先,只留下代码克隆的其中一个代码片断。作为组件化的结果,其余代码片断没有行。也就是说,在组件化之后,代码克隆中行的总数等于一个代码片断中行数。因此,如果将组件化应用于分配号码4的代码克隆,那么在组件化之后代码克隆中行的总数为212个行。
这里,通过减去已经经由组件化从修改前代码克隆中行的总数中删除的行数,获得修改后源代码中行数。也就是说,通过分配号码4的代码克隆的组件化,将其中行数从636行减少为212行。因此,修改后源代码中行数为10000行-(636行-212行)=9576行。
接着,成本计算单元104从成本计算标准累积单元105获取图9所示的计算标准(步骤S203)。然后,成本计算单元104根据获取的计算标准,计算修改成本和维护成本以及这些成本的总和。之后,成本计算单元104将通过计算的成本与组件化水平形成的配对通知组件化水平选择单元106(步骤S204)。
具体而言,因为通过组件化得到的组件的数目为一个,所以修改成本为1×30000日元=30000日元。另一方面,因为修改后源代码中行数为9576行,如上所述,所以维护成本为9576行×100日元=957600日元。因此,与10%的组件化水平相对应的成本的总和为987600日元(=修改成本+维护成本=30000日元+957600日元)。
自此,重复步骤S202至S206的处理,直到组件化水平达到100%。通过以10%的间隔从0%到100%改变组件化水平所实现的成本计算的结果与图10所示的对应组件化水平配对。图10示出根据本发明的工作示例,分别由组件化水平和成本形成的配对的示例。
[步骤S3]
之后,组件化水平选择单元106从成本计算单元104通知的配对(即,分别由组件化水平和成本形成的配对)中选择最小成本配对,并经由终端设备21将成本和组件化水平呈现给用户20。
在本工作示例中,从图10所示的内容中选择最小成本配对,也就是由40%的组件化水平和982000日元的成本形成的配对,并呈现给用户20。
通过根据上述本工作示例的步骤S1至S3的执行,计算出源代码的修改所必须的成本以及修改后维护操作所必须的成本,并且将成本最小化的组件化水平被呈现给用户。
在上述工作示例中,在如下的假定下计算组件化之后代码克隆中行数:作为组件化的结果,只留下代码克隆的其中一个代码片断,其余代码片断没有行。但是,本工作示例不限于这种方式。可以通过包括复制代码片断的部分的更准确识别来计算组件化之后代码克隆中行数。此外,可以利用商用工具来产生充当组件化结果的源代码。
以上利用优选实施例和工作示例描述了本发明。但是,本发明不一定限于上述实施例和工作示例,并且可以通过本发明技术构思范围内的各种变型来实施。此外,上述设备配置和流程图都是示例,并且可以按照任何方式改变或修改。
上述实施例和工作示例的一部分或全部可以描述为以下补充说明1至15,但是不限于此。
(补充说明1)
一种用于计算更新系统所需的修改成本和更新后维护成本的成本计算设备,所述成本计算设备包括:
代码克隆检测单元,用于将待更新系统的修改前源代码的相同或相似的片段集合检测为代码克隆;
组件化水平设置单元,用于设置将检测为所述代码克隆的片段集成为组件所在的水平;
修改后源代码估计单元,用于估计在设置水平通过向修改前源代码应用组件化所获得的修改后源代码;以及
成本计算单元,用于根据计算标准,基于估计的修改后源代码计算所述修改成本和所述维护成本,所述计算标准指定计算所述修改成本和所述维护成本的方法。
(补充说明2)
根据补充说明1的成本计算设备,
其中,所述组件化水平设置单元设置多个水平,
所述修改后源代码估计单元基于逐个水平来估计所述修改后源代码,以及
所述成本计算单元基于逐个水平来计算所述修改成本和所述维护成本。
(补充说明3)
根据补充说明2的成本计算设备,进一步包括
组件化水平选择单元,用于识别与计算的修改成本以及维护成本的最小总和相对应的水平,并向外部呈现所识别的水平以及对应的总和。
(补充说明4)
根据补充说明1至3任一项的成本计算设备,
其中,所述修改后源代码估计单元将所述修改后源代码中行数或者步骤的数目估计为所述修改后源代码。
(补充说明5)
根据补充说明1至4任一项的成本计算设备,
其中,根据所述计算标准,通过将经由片段的集成所得到的组件的数目乘以第一单价来计算所述修改成本,通过将所述修改后源代码中行数乘以第二单价来计算所述维护成本。
(补充说明6)
一种用于计算更新系统所需的修改成本和更新后维护成本的成本计算方法,所述成本计算方法包括:
(a)将待更新系统的修改前源代码的相同或相似的片段集合检测为代码克隆的步骤;
(b)设置将检测为所述代码克隆的片段集成为组件所在的水平的步骤;
(c)估计在设置水平通过向修改前源代码应用组件化所获得的修改后源代码的步骤;
(d)根据计算标准,基于估计的修改后源代码计算所述修改成本和所述维护成本的步骤,所述计算标准指定计算所述修改成本和所述维护成本的方法。
(补充说明7)
根据补充说明6的成本计算方法,
其中在步骤(b)设置多个水平,
在步骤(c)基于逐个水平来估计所述修改后源代码,以及
在步骤(d)基于逐个水平来计算所述修改成本和所述维护成本。
(补充说明8)
根据补充说明7的成本计算方法,进一步包括
(e)识别与计算的修改成本以及维护成本的最小总和相对应的水平,并向外部呈现所识别的水平以及对应的总和的步骤。
(补充说明9)
根据补充说明6至8任一项的成本计算方法,
其中在步骤(c),将所述修改后源代码中行数或者步骤的数目估计为所述修改后源代码。
(补充说明10)
根据补充说明6至9任一项的成本计算方法,
其中根据步骤(d)中使用的所述计算标准,通过将经由片段的集成所得到的组件的数目乘以第一单价来计算所述修改成本,通过将所述修改后源代码中行数乘以第二单价来计算所述维护成本。
(补充说明11)
一种记录用于使用计算机来计算更新系统所需的修改成本和更新后维护成本的程序的计算机可读记录介质,所述程序包括指令,用于使得所述计算机执行:
(a)将待更新系统的修改前源代码的相同或相似的片段集合检测为代码克隆的步骤;
(b)设置将检测为所述代码克隆的片段集成为组件所在的水平的步骤;
(c)估计在设置水平通过向修改前源代码应用组件化所获得的修改后源代码的步骤;
(d)根据计算标准,基于估计的修改后源代码计算所述修改成本和所述维护成本的步骤,所述计算标准指定计算所述修改成本和所述维护成本的方法。
(补充说明12)
根据补充说明11的计算机可读记录介质,
其中在步骤(b)设置多个水平,
在步骤(c)基于逐个水平来估计所述修改后源代码,以及
在步骤(d)基于逐个水平来计算所述修改成本和所述维护成本。
(补充说明13)
根据补充说明12的计算机可读记录介质,
其中所述程序中包括的指令进一步使得所述计算机执行(e)识别与计算的修改成本以及维护成本的最小总和相对应的水平,并向外部呈现所识别的水平以及对应的总和的步骤。
(补充说明14)
根据补充说明11至13任一项的计算机可读记录介质,
其中在步骤(c),将所述修改后源代码中行数或者步骤的数目估计为所述修改后源代码。
(补充说明15)
根据补充说明11至14任一项的计算机可读记录介质,
其中根据步骤(d)中使用的所述计算标准,通过将经由片段的集成所得到的组件的数目乘以第一单价来计算所述修改成本,通过将所述修改后源代码中行数乘以第二单价来计算所述维护成本。
虽然上面利用实施例和工作示例描述了本申请的发明,但是本申请的发明不限于上述实施例和工作示例。在本申请的发明的范围内,本申请的发明的配置和细节可以进行本领域技术人员能够理解的各种变化。
本申请要求2013年3月8日提交的日本专利申请No.2013-046585的优先权,通过参考将其全部内容合并于此。
工业实用性
如上所述,本发明实现系统的修改成本和维护成本的计算,以及将这些成本最小化的重构程度的估计。本发明可用于将旧系统更新为在开放平台上操作的新系统的尝试。
附图标记列表
10 成本计算设备
20 用户
21 用户的终端设备
30 修改前源代码累积单元
101 代码克隆检测单元
102 组件化水平设置单元
103 修改后源代码估计单元
104 成本计算单元
105 成本计算标准累积单元
106 组件化水平选择单元
110 计算机
111 CPU
112 主存储器
113 存储设备
114 输入接口
115 显示控制器
116 数据读取器/写入器
117 通信接口
118 输入设备
119 显示设备
120 记录介质
121 总线

Claims (7)

1.一种用于计算更新系统所需的修改成本和更新后维护成本的成本计算设备,所述成本计算设备包括:
代码克隆检测单元,所述代码克隆检测单元将待更新的系统的修改前源代码的相同或相似的片段集合检测为代码克隆;
组件化水平设置单元,所述组件化水平设置单元设置检测为所述代码克隆的片段被集成为组件的水平;
修改后源代码估计单元,所述修改后源代码估计单元估计通过以所设置的水平向所述修改前源代码应用组件化所获得的修改后源代码;以及
成本计算单元,所述成本计算单元基于所估计的修改后源代码根据计算标准,来计算所述修改成本和所述维护成本,所述计算标准指定计算所述修改成本和所述维护成本的方法。
2.根据权利要求1所述的成本计算设备,
其中,所述组件化水平设置单元设置多个水平,
所述修改后源代码估计单元在逐个水平的基础上估计所述修改后源代码,并且
所述成本计算单元在逐个水平的基础上计算所述修改成本和所述维护成本。
3.根据权利要求2所述的成本计算设备,进一步包括:
组件化水平选择单元,组件化水平选择单元识别与所计算的修改成本以及维护成本的最小总和相对应的水平,并且向外部呈现所识别的水平以及与所识别的水平相对应的总和。
4.根据权利要求1所述的成本计算设备,
其中,所述修改后源代码估计单元将所述修改后源代码中的行数目或者步骤的数目估计为所述修改后源代码。
5.根据权利要求1所述的成本计算设备,
其中,根据所述计算标准,通过将经由片段的集成所得到的组件的数目乘以第一单价来计算所述修改成本,并且通过将所述修改后源代码中的行数乘以第二单价来计算所述维护成本。
6.一种用于计算更新系统所需的修改成本和更新后维护成本的成本计算方法,所述成本计算方法包括下述步骤:
(a)将待更新系统的修改前源代码的相同或相似的片段集合检测为代码克隆;
(b)设置检测为所述代码克隆的片段被集成为组件的水平;
(c)估计通过以所设置的水平向所述修改前源代码应用组件化所获得的修改后源代码;以及
(d)基于所估计的修改后源代码根据计算标准,来计算所述修改成本和所述维护成本,所述计算标准指定计算所述修改成本和所述维护成本的方法。
7.一种记录有程序的计算机可读记录介质,所述程序用于使用计算机来计算更新系统所需的修改成本和更新后维护成本,所述程序包括用于使得所述计算机执行下述步骤的指令:
(a)将待更新系统的修改前源代码的相同或相似的片段集合检测为代码克隆;
(b)设置检测为所述代码克隆的片段被集成为组件的水平;
(c)估计通过以所设置的水平向所述修改前源代码应用组件化所获得的修改后源代码;以及
(d)基于所估计的修改后源代码根据计算标准,来计算所述修改成本和所述维护成本,所述计算标准指定计算所述修改成本和所述维护成本的方法。
CN201480013080.2A 2013-03-08 2014-02-25 成本计算装置、成本计算方法及计算机可读记录介质 Expired - Fee Related CN105190546B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013-046585 2013-03-08
JP2013046585A JP5791121B2 (ja) 2013-03-08 2013-03-08 コスト算出装置、コスト算出方法、及びプログラム
PCT/JP2014/054452 WO2014136611A1 (ja) 2013-03-08 2014-02-25 コスト算出装置、コスト算出方法、及びコンピュータ読み取り可能な記録媒体

Publications (2)

Publication Number Publication Date
CN105190546A CN105190546A (zh) 2015-12-23
CN105190546B true CN105190546B (zh) 2018-08-31

Family

ID=51491132

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480013080.2A Expired - Fee Related CN105190546B (zh) 2013-03-08 2014-02-25 成本计算装置、成本计算方法及计算机可读记录介质

Country Status (4)

Country Link
US (1) US20160019609A1 (zh)
JP (1) JP5791121B2 (zh)
CN (1) CN105190546B (zh)
WO (1) WO2014136611A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170350718A1 (en) * 2016-06-03 2017-12-07 Toyota Motor Sales, U.S.A., Inc. Information-attainment system based on monitoring an occupant
JP6897111B2 (ja) * 2017-01-24 2021-06-30 株式会社リコー 管理装置、情報処理システム及び制御プログラム
JP6682036B2 (ja) 2017-02-16 2020-04-15 三菱電機株式会社 規模算出装置及び規模算出プログラム
JP6892053B2 (ja) * 2018-12-10 2021-06-18 株式会社One Act Aiを使用したソースコード売買システム
WO2021039110A1 (ja) * 2019-08-28 2021-03-04 三菱電機株式会社 改善提案装置、および、改善提案方法
CN111240740B (zh) * 2020-01-23 2021-09-17 复旦大学 基于演化历史分析的代码克隆危害性评估方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5189606A (en) * 1989-08-30 1993-02-23 The United States Of America As Represented By The Secretary Of The Air Force Totally integrated construction cost estimating, analysis, and reporting system
US6175957B1 (en) * 1997-12-09 2001-01-16 International Business Machines Corporation Method of, system for, and computer program product for providing efficient utilization of memory hierarchy through code restructuring
CN101697121A (zh) * 2009-10-26 2010-04-21 哈尔滨工业大学 一种基于程序源代码语义分析的代码相似度检测方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001312419A (ja) * 2000-02-22 2001-11-09 Fujitsu Ltd ソフトウェア重複度評価装置およびソフトウェア重複度評価プログラムを記録した記録媒体
JP2004199119A (ja) * 2002-12-16 2004-07-15 Toshiba Corp ソフトウェアの開発・運用・保守コスト予測方法及びシステム
JP2006085663A (ja) * 2004-03-02 2006-03-30 Teikoku Databank Ltd ソフトウェア開発工数費用の評価装置
JP2005301859A (ja) * 2004-04-15 2005-10-27 Fujitsu Ltd コード検索プログラム及びコード検索装置
JP2007156820A (ja) * 2005-12-05 2007-06-21 Fujitsu Ltd 保守コスト見積プログラム、保守コスト見積方法および保守コスト見積装置
JP2009176064A (ja) * 2008-01-24 2009-08-06 Fuji Electric Holdings Co Ltd ソフトウェアリファクタリング支援装置および方法
JP5027765B2 (ja) * 2008-09-02 2012-09-19 新日鉄ソリューションズ株式会社 クローンコード検出装置、クローンコード検出方法及びプログラム
US9110769B2 (en) * 2010-04-01 2015-08-18 Microsoft Technology Licensing, Llc Code-clone detection and analysis

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5189606A (en) * 1989-08-30 1993-02-23 The United States Of America As Represented By The Secretary Of The Air Force Totally integrated construction cost estimating, analysis, and reporting system
US6175957B1 (en) * 1997-12-09 2001-01-16 International Business Machines Corporation Method of, system for, and computer program product for providing efficient utilization of memory hierarchy through code restructuring
CN101697121A (zh) * 2009-10-26 2010-04-21 哈尔滨工业大学 一种基于程序源代码语义分析的代码相似度检测方法

Also Published As

Publication number Publication date
WO2014136611A1 (ja) 2014-09-12
US20160019609A1 (en) 2016-01-21
JP5791121B2 (ja) 2015-10-07
CN105190546A (zh) 2015-12-23
JP2014174728A (ja) 2014-09-22

Similar Documents

Publication Publication Date Title
CN105190546B (zh) 成本计算装置、成本计算方法及计算机可读记录介质
CN108595157B (zh) 区块链数据的处理方法、装置、设备和存储介质
CN110036279A (zh) 检查装置和检查方法
CN105988930A (zh) 测试用例生成方法和装置
CN108304318B (zh) 设备兼容性的测试方法及终端设备
CN109029918A (zh) 一种gamma调节绑点的方法及装置
CN104077371B (zh) 监测数据库异常数据的方法及系统
CN104412319A (zh) 亮度控制方法、设备和程序产品
CN111190750B (zh) 一种数据处理方法以及系统
CN111242319A (zh) 模型预测结果的解释方法和装置
US9165091B2 (en) Recipe management apparatus and recipe management method
CN108648092A (zh) 保险赔付率计算方法、装置、设备及计算机可读存储介质
CN109597745B (zh) 异常数据处理方法及装置
JP5250481B2 (ja) ルール設計支援方法およびルール設計支援装置
CN106843857A (zh) 基于srp实现代码库转换sdk的方法和装置
CN103617513A (zh) 一种支持规则演化的计算流引擎方法
CN106709621A (zh) 技术趋势预测方法及系统
CN110275880B (zh) 数据分析方法、装置、服务器及可读存储介质
CN108961071B (zh) 自动预测组合业务收益的方法及终端设备
CN109324963A (zh) 自动测试收益结果的方法及终端设备
CN115878683A (zh) 业务数据智能化稽核方法和装置、电子设备及存储介质
TW202143078A (zh) 測試路徑統籌方法、電子設備及存儲介質
JP2009187294A (ja) 製品の仕様設計を支援する装置、支援プログラム、製品仕様設計支援システム
CN109242682A (zh) 货币汇率转换方法、装置、计算机设备及存储介质
US20140163917A1 (en) Multi-sensing-elements calibration system, multi-sensing-elements calibration method and recording medium

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180831

Termination date: 20200225

CF01 Termination of patent right due to non-payment of annual fee