JP6682036B2 - 規模算出装置及び規模算出プログラム - Google Patents
規模算出装置及び規模算出プログラム Download PDFInfo
- Publication number
- JP6682036B2 JP6682036B2 JP2019500101A JP2019500101A JP6682036B2 JP 6682036 B2 JP6682036 B2 JP 6682036B2 JP 2019500101 A JP2019500101 A JP 2019500101A JP 2019500101 A JP2019500101 A JP 2019500101A JP 6682036 B2 JP6682036 B2 JP 6682036B2
- Authority
- JP
- Japan
- Prior art keywords
- refactoring
- function
- strength
- scale
- influence
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Description
リファクタリングの規模見積りの方法としては、過去の経験に基づきファンクションポイント法又はWBS(Work Breakdown Structure)により行う方法がある。しかし、この方法では、熟練者以外が正確な見積りをすることは難しい。また、S/Wの複雑化及び大規模化により、大量ソースコードに対して人の手で改造規模を見積もることは困難である。
この発明は、適切にリファクタリングの規模の見積りをできるようにすることを目的とする。
ソースコードに含まれる関数の依存強度を特定するソースコード解析部と、
リファクタリングによって他のサブシステムに移動する移動関数を特定し、前記移動関数について前記ソースコード解析部によって特定された依存強度から、前記リファクタリングの影響がある依存強度を特定する影響解析部と、
前記影響解析部によって特定された影響を受ける依存強度に基づき、前記リファクタリングの規模を算出する規模算出部と
を備える。
***構成の説明***
図1を参照して、実施の形態1に係る規模算出装置10の構成を説明する。
規模算出装置10は、コンピュータである。
規模算出装置10は、プロセッサ11と、メモリ12と、ストレージ13と、通信インタフェース14とのハードウェアを備える。プロセッサ11は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
ストレージ13には、ソースコード解析部21と、影響解析部22と、規模算出部23との機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ11によりメモリ12に読み込まれ、プロセッサ11によって実行される。これにより、ソースコード解析部21と、影響解析部22と、規模算出部23との機能が実現される。
図2を参照して、実施の形態1に係る規模算出装置10の動作を説明する。
実施の形態1に係る規模算出装置10の動作は、実施の形態1に係る規模算出方法に相当する。また、実施の形態1に係る規模算出装置10の動作は、実施の形態1に係る規模算出プログラムの処理に相当する。
ソースコード解析部21は、通信インタフェース14を介してソースコード31の入力を受け付け、メモリ12に書き込む。ソースコード解析部21は、受け付けたソースコード31からS/Wの構成要素間の依存関係を抽出する。そして、ソースコード解析部21は、ソースコード31に含まれる関数毎に依存強度を集計して、関数の依存強度を示す関数依存強度対応表32を生成する。また、ソースコード解析部21は、関数に対応するサブシステムを示す前関数サブシステム対応表33を生成する。ソースコード解析部21は、関数依存強度対応表32及び前関数サブシステム対応表33を、メモリ12に書き込む。
ソースコード31は、S/W、すなわちコンピュータプログラムの元となる文字の羅列である。つまり、ソースコード31は、コンピュータに対する一連の指示が記述されたものである。S/Wの構成要素は、ソースコードに記述された要素である。S/Wの構成要素は、例えば、関数、変数、ファイル、マクロである。S/Wの構成要素間の依存関係は、S/Wの構成要素間に定義された関係である。S/Wの構成要素間の依存関係は、例えば、インクルード、マクロ及び関数の呼び出し、変数への書込み、変数の参照である。依存強度は、依存する回数である。
まず、ソースコード解析部21は、図3に示すソースコード31から、図4に示すS/W構成要素間の依存関係を抽出する。
図4に示すように、S/W構成要素間の依存関係は、依存元のS/Wの構成要素毎に、依存先のS/Wの構成要素と、依存種類と、依存強度とを示す。
具体例としては、図4の1行目は、図3に示すソースコード31において、依存元のS/W構成要素であるファイルfile1.cから依存先のS/W構成要素であるファイルfile1.hへの「インクルード」という依存種別の依存関係の依存強度が1であることを示している。また、図4の5行目は、図3に示すソースコード31において、依存元のS/W構成要素であるファイルfile1.cの関数func_I_B()から依存先のS/W構成要素であるファイルfile1.cの変数val_Iへの「変数の参照」という依存種別の依存関係の依存強度が2であることを示している。
図5に示すように、関数依存強度対応表32は、関数毎に、関数の与依存に関する与依存強度と、関数の被依存に関する依存強度とを示す。与依存とは、対象となるS/W構成要素が依存元となる依存関係を指す。被依存とは、対象となるS/W構成要素が依存先となる依存関係を指す。
具体例としては、図5の2行目は、ファイルfile1.cの関数func_I_B()の与依存強度と被依存強度とを示す。ファイルfile1.cの関数func_I_B()は、図4の3行目と4行目と5行目とで依存元となっている。そのため、ファイルfile1.cの関数func_I_B()の与依存強度は、図4の3行目と4行目と5行目との依存強度を足し合わせた4となっている。また、ファイルfile1.cの関数func_I_B()は、図4において依存先となっていない。そのため、ファイルfile1.cの関数func_I_B()の被依存強度は、0となっている。
ソースコード解析部21は、図3に示すソースコード31から、関数と、関数が所属するサブシステムとを抽出して、図6に示す前関数サブシステム対応表33を生成する。
図6に示すように、前関数サブシステム対応表33は、関数毎に、所属するサブシステムを示す。具体例としては、図6の1行目は、ファイルfile1.cの関数func_I_A()がサブシステムIに所属することを示す。
なお、ソースコード解析部21は、関数がどのサブシステムに所属するかの情報は、ソースコードのコメントに記載された情報から読み取ってもよいし、外部から入力された関数とサブシステムとの対応に関するルールを元に生成してもよい。関数とサブシステムの対応に関するルールとは、例えば関数が所属しているファイルとサブシステムとの対応表である。
影響解析部22は、リファクタリングによって他のサブシステムに移動する関数である移動関数を特定する。そして、影響解析部22は、移動関数についてソースコード解析部21によって特定された依存強度から、リファクタリングの影響がある依存強度を示す影響依存強度表35を生成する。
具体的には、影響解析部22は、関数依存強度対応表32と、前関数サブシステム対応表33と、前関数サブシステム対応表33から生成された後関数サブシステム対応表34とをメモリ12から読み出す。影響解析部22は、前関数サブシステム対応表33と、前関数サブシステム対応表33から生成された後関数サブシステム対応表34とを比較して、移動関数を特定する。そして、影響解析部22は、ソースコード解析部21によって生成された関数依存強度対応表32に基づき、移動関数に対してリファクタリングの影響がある依存強度を特定して、影響依存強度表35を生成する。影響解析部22は、生成された影響依存強度表35をメモリ12に書き込む。
影響解析部22は、図6に示す前関数サブシステム対応表33と、図7に示す後関数サブシステム対応表34との変更箇所を特定することにより、移動関数を特定する。
図7に示すように、後関数サブシステム対応表34は、図6に示す前関数サブシステム対応表33を元に、リファクタリングによりサブシステム間を移動する関数を、移動元のサブシステムから移動先のサブシステムに変更して作成された表である。後関数サブシステム対応表34は、リファクタリングの内容に応じて作業者等により作成される。具体例としては、図7の1行目は、ファイルfile1.cの関数func_I_A()が、サブシステムIIに移動されることを示す。
なお、後関数サブシステム対応表34は、前関数サブシステム対応表33の情報を含んでもよい。後関数サブシステム対応表34が前関数サブシステム対応表33の情報を含めば、影響解析部22は、後関数サブシステム対応表34だけを参照して、移動関数を特定することができる。
影響解析部22は、移動関数について特定された依存強度の総計を、影響を受ける依存強度として特定して、影響依存強度表35を生成する。
図8に示すように、影響依存強度表35は、サブシステム間の移動が発生する移動関数の被依存強度の総計と与依存強度の総計とを示す。
具体例としては、図6及び図7から分かるように、ファイルfile1.cの関数func_I_A()のみがサブシステム間の移動を行う移動関数である。そのため、与依存強度の総計は図5のファイルfile1.cの関数func_I_A()の与依存強度を示す1となる。また、被依存強度の総計は、図5のファイルfile1.cの関数func_I_A()の被依存強度を示す2となる。
規模算出部23は、影響解析部22によって特定された影響がある依存強度に基づき、リファクタリングの規模を算出して、リファクタリングの規模を示す規模見積り結果37を生成する。
具体的には、規模算出部23は、影響依存強度表35をメモリ12から読み出す。規模算出部23は、影響依存強度表35が示す影響を受ける依存強度に、係数36を乗じて、リファクタリングの規模を示す規模見積り結果37を生成する。例えば、規模算出部23は、影響依存強度表35における被依存強度の総計と与依存強度の総計とのそれぞれに係数36を掛けることでリファクタリングの規模を算出する。規模算出部23は、規模見積り結果37を通信インタフェース14を介して出力する。
係数36は、依存強度からリファクタリング規模を見積もるために使用する値である。係数36は、作業者が過去の経験から設定されてもよいし、一部のサンプルに実際にリファクタリングを行った結果に基づき、算出されてもよい。係数36は、被依存強度の総計と与依存強度の総計とについて異なる値が設定されてもよい。
以上のように、実施の形態1に係る規模算出装置10は、S/Wの関数間の依存強度を用いて、リファクタリングの規模の見積りをする。これにより、大規模なソースコード31に対しても、機械的かつ高精度にリファクタリングの規模の見積りをすることが可能である。
図9に示すリファクタリング後のソースコード31と、図3に示すリファクタリング前のソースコード31とを比較する。すると、図9に示すリファクタリング後のソースコード31では、サブシステムIのファイルfile1.cの関数func_I_A()が、サブシステムIIのファイルfile2.cに移動されている。また、サブシステムを移動したため、関数func_I_A()の関数名がfunc_II_A()に変更されている。
リファクタリングのために必要な改造として、関数func_I_A()のインタフェースの変更がある。この変更は、関数func_I_A()を使用しているファイルfile1.cの関数func_I_B()の1箇所と、ファイルfile2.cの関数func_II_C()の1箇所の計2箇所について行われる。この改造規模は、図5の関数func_I_A()の被依存強度と相関関係を持つと考えられる。
また、リファクタリングのために必要な改造として、関数func_II_A()からファイルfile1.cの静的変数val_Iへのアクセスのためのインタフェースの変更がある。具体的には、図9のファイルfile1.cの関数get_val_I()が作成され、関数func_II_A()の1箇所が変更される。この改造規模は、図5の関数func_I_A()の与依存強度と相関関係を持つと考えられる。
これらの相関関係を係数によって表現することで、依存強度からリファクタリング規模を算出することが可能である。
<変形例1>
実施の形態1では、規模算出装置10のソースコード解析部21と、影響解析部22と、規模算出部23との機能がソフトウェアで実現された。しかし、変形例1として、ソースコード解析部21と、影響解析部22と、規模算出部23との機能はハードウェアで実現されてもよい。この変形例1について、実施の形態1と異なる点を説明する。
ソースコード解析部21と、影響解析部22と、規模算出部23との機能がハードウェアで実現される場合、規模算出装置10は、プロセッサ11とメモリ12とストレージ13とに代えて、処理回路15を備える。処理回路15は、ソースコード解析部21と、影響解析部22と、規模算出部23との機能と、メモリ12とストレージ13との機能とを実現する専用の電子回路である。
ソースコード解析部21と、影響解析部22と、規模算出部23との機能を1つの処理回路15で実現してもよいし、ソースコード解析部21と、影響解析部22と、規模算出部23との機能を複数の処理回路15に分散させて実現してもよい。
変形例2として、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。つまり、ソースコード解析部21と、影響解析部22と、規模算出部23とのうち、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。
実施の形態2は、リファクタリングの効果を算出する点が実施の形態1と異なる。実施の形態2では、この異なる点を説明し、同一の点については説明を省略する。
図11を参照して、実施の形態2に係る規模算出装置10の構成を説明する。
規模算出装置10は、効果算出部24を備える点が図1に示す規模算出装置10と異なる。効果算出部24は、他の機能構成要素と同様にソフトウェアによって実現される。また、効果算出部24は、他の機能構成要素と同様にハードウェアによって実現されてもよい。
図12を参照して、実施の形態2に係る規模算出装置10の動作を説明する。
実施の形態2に係る規模算出装置10の動作は、実施の形態2に係る規模算出方法に相当する。また、実施の形態2に係る規模算出装置10の動作は、実施の形態2に係る規模算出プログラムの処理に相当する。
ソースコード解析部21は、関数依存強度対応表32及び前関数サブシステム対応表33に加えて、前サブシステム間依存関係表38を生成する。ソースコード解析部21は、図3に示すソースコード31からS/W構成要素に関するサブシステム間の依存関係と依存強度とを特定して、図13に示す前サブシステム間依存関係表38を生成する。
具体的には、ソースコード解析部21は、ソースコード31の各サブシステムを依存元とし、依存元以外の各サブシステムを依存先として、依存先のサブシステムのS/W構成要素に依存する依存元のサブシステムのS/W構成要素を抽出する。ソースコード解析部21は、抽出されたS/W構成要素の依存強度の総計を、依存元のサブシステムの依存先のサブシステムに対する依存強度として特定する。ソースコード解析部21は、各サブシステム間について、特定された依存強度を示す前サブシステム間依存関係表38を生成する。ソースコード解析部21は、生成された前サブシステム間依存関係表38をメモリ12に書き込む。
図13に示すように、前サブシステム間依存関係表38は、依存元のサブシステムと、依存先のサブシステムと、依存強度とを示す。具体例としては、図13の2行目は、サブシステムIIからサブシステムIへの依存強度が2であることを示している。図13の2行目の依存強度は、サブシステムIIのS/W構成要素がサブシステムIのS/W構成要素に依存している依存強度の合計である。したがって、図13の2行目の依存強度は、図4の6行目と7行目の依存強度の総和に相当する。
影響解析部22は、影響依存強度表35に加え、後サブシステム間依存関係表39を生成する。影響解析部22は、ソースコード31と前サブシステム間依存関係表38とに基づき、リファクタリング後のS/W構成要素に関するサブシステム間の依存関係と依存強度とを特定して、後サブシステム間依存関係表39を生成する。
具体的には、影響解析部22は、ソースコード31と前サブシステム間依存関係表38とをメモリ12から読み出し、前サブシステム間依存関係表38を後サブシステム間依存関係表39として複製する。影響解析部22は、以下の(1)から(4)の処理を行い、後サブシステム間依存関係表39を生成する。影響解析部22は、生成された後サブシステム間依存関係表39をメモリ12に書き込む。
(1)影響解析部22は、各サブシステムを対象として、移動関数を移動させる前における、移動関数のS/W構成要素が依存する対象のサブシステムのS/W構成要素の数N1を、ソースコード31から特定する。影響解析部22は、後サブシステム間依存関係表39が示す、移動前に移動関数が所属するサブシステムから対象のサブシステムへの依存強度を、特定された数N1だけ減らす。
(2)影響解析部22は、各サブシステムを対象として、移動関数を移動させる前における、対象のサブシステムのS/W構成要素が依存する移動関数のS/W構成要素の数N2を特定する。影響解析部22は、後サブシステム間依存関係表39が示す、対象のサブシステムから移動前に移動関数が所属するサブシステムへの依存強度を、特定された数N2だけ減らす。
(3)影響解析部22は、各サブシステムを対象として、移動関数を移動させた後における、移動関数のS/W構成要素が依存する対象のサブシステムのS/W構成要素の数N3を、ソースコード31から特定する。影響解析部22は、後サブシステム間依存関係表39が示す、移動後に移動関数が所属するサブシステムから対象のサブシステムへの依存強度を、特定された数N3だけ増やす。
(4)影響解析部22は、各サブシステムを対象として、移動関数を移動させた後における、対象のサブシステムのS/W構成要素が依存する移動関数のS/W構成要素の数N4を特定する。後サブシステム間依存関係表39が示す、影響解析部22は、対象のサブシステムから移動後に移動関数が所属するサブシステムへの依存強度を、特定された数N4だけ増やす。
これは、リファクタリングにより、関数funcI_A()がサブシステムIからサブシステムIIに移動したためである。具体的には、サブシステムIのサブシステムIIへの依存強度1は、図9に示すリファクタリング後のソースコード31におけるファイルfile1.cの関数funcI_B()からファイルfile2.cの関数funcII_A()への依存強度1に相当する。
効果算出部24は、リファクタリング前のサブシステム間の依存強度と、前記リファクタリング後のサブシステム間の依存強度とから、リファクタリングの効果を示す効果見積り結果40を生成する。
具体的には、効果算出部24は、前サブシステム間依存関係表38と後サブシステム間依存関係表39とをメモリ12から読み出す。効果算出部24は、前サブシステム間依存関係表38が示すリファクタリング前のサブシステム間の依存強度と、後サブシステム間依存関係表39が示すリファクタリング後のサブシステム間の依存強度との比較結果又は差分をリファクタリングの効果として算出する。効果算出部24は、算出されたリファクタリングの効果を示す効果見積り結果40を生成する。効果算出部24は、生成された効果見積り結果40を通信インタフェース14を介して出力する。
以上のように、実施の形態2に係る規模算出装置10は、S/Wの関数間の依存強度を用いて、リファクタリングの効果の見積りをする。これにより、リファクタリングの費用対効果を算出することが可能になる。
実施の形態3では、関数単位のリファクタリングの規模を算出する点が実施の形態1と異なる。実施の形態3では、この異なる点を説明し、同一の点については説明を省略する。
図15を参照して、実施の形態3に係る規模算出装置10の動作を説明する。
実施の形態3に係る規模算出装置10の動作は、実施の形態3に係る規模算出方法に相当する。また、実施の形態3に係る規模算出装置10の動作は、実施の形態3に係る規模算出プログラムの処理に相当する。
影響解析部22は、影響依存強度表35に加えて、関数単位でリファクタリングの影響がある依存強度を示す関数影響依存強度表41を生成する。
具体的には、図16に示すように、影響解析部22は、関数依存強度対応表32から移動関数の行を抽出することにより、関数影響依存強度表41を生成する。影響解析部22は、生成された関数影響依存強度表41をメモリ12に書き込む。
規模算出部23は、規模見積り結果37に加えて、関数単位でリファクタリングの規模を示す関数規模見積り結果42を生成する。
具体的には、規模算出部23は、関数影響依存強度表41をメモリ12から読み出す。規模算出部23は、関数影響依存強度表41が示す関数毎の依存強度に、係数36を乗じて、関数毎のリファクタリングの規模を示す関数規模見積り結果42を生成する。
以上のように、実施の形態3に係る規模算出装置10は、関数単位のリファクタリングの規模を算出する。これにより、リファクタリングの対象とする関数の絞り込みを行うことができる。
実施の形態4は、複数のリファクタリングのパターンそれぞれについて、リファクタリングの規模を算出する点が実施の形態1と異なる。実施の形態4では、この異なる点を説明し、同一の点については説明を省略する。
図17を参照して、実施の形態4に係る規模算出装置10の動作を説明する。
実施の形態4に係る規模算出装置10の動作は、実施の形態4に係る規模算出方法に相当する。また、実施の形態4に係る規模算出装置10の動作は、実施の形態4に係る規模算出プログラムの処理に相当する。
影響解析部22は、複数のリファクタリングのパターンそれぞれを対象として、対象のパターンのリファクタリングによって他のサブシステムに移動する移動関数を特定する。そして、影響解析部22は、移動関数についてソースコード解析部21によって特定された依存強度から、対象のパターンのリファクタリングの影響がある依存強度を示す影響依存強度表35を生成する。
具体的には、影響解析部22は、前関数サブシステム対応表33と、対象のパターンの後関数サブシステム対応表34とを比較して、対象のパターンについての移動関数を特定する。そして、影響解析部22は、関数依存強度対応表32に基づき、移動関数に対してリファクタリングの影響がある依存強度を特定して、対象のパターンについての影響依存強度表35を生成する。
図17の例であれば、影響解析部22は、前関数サブシステム対応表33と後関数サブシステム対応表34Aとを比較して、パターンAについての移動関数を特定する。そして、影響解析部22は、関数依存強度対応表32に基づき、特定された移動関数に対してリファクタリングの影響がある依存強度を特定して、パターンAについての影響依存強度表35Aを生成する。同様に、影響解析部22は、前関数サブシステム対応表33と後関数サブシステム対応表34Bとを比較して、パターンBについての移動関数を特定する。そして、影響解析部22は、関数依存強度対応表32に基づき、特定された移動関数に対してリファクタリングの影響がある依存強度を特定して、パターンBについての影響依存強度表35Bを生成する。
規模算出部23は、複数のリファクタリングのパターンそれぞれを対象として、対象のパターンのリファクタリングについて、影響解析部22によって特定された影響がある依存強度に基づき、対象のパターンのリファクタリングについての規模を算出する。そして、各パターンのリファクタリングについての規模を示す規模見積り結果37を生成する。
なお、規模算出部23は、規模の最も大きい、又は、最も小さいパターンについての規模のみを示す規模見積り結果37を生成してもよい。
以上のように、実施の形態4に係る規模算出装置10は、複数のリファクタリングのパターンそれぞれについて、リファクタリングの規模を算出する。これにより、どのリファクタリングパターンが最も少ない工数で実施可能かといったことを検討可能である。
<変形例3>
実施の形態2では、1つのリファクタリングのパターンについてリファクタリングの効果を算出した。実施の形態2と実施の形態4とを組み合わせ、複数のリファクタリングのパターンそれぞれについて、リファクタリングの効果を算出してもよい。
この場合、効果算出部24は、複数のリファクタリングのパターンそれぞれを対象として、リファクタリング前のサブシステム間の依存強度と、対象のパターンのリファクタリングをした後のサブシステム間の依存強度とから、対象のパターンのリファクタリングの効果を算出する。
実施の形態3では、1つのリファクタリングのパターンについて関数単位のリファクタリングの規模を算出した。実施の形態3と実施の形態4とを組み合わせ、複数のリファクタリングのパターンそれぞれについて、関数単位のリファクタリングの規模を算出してもよい。
この場合、影響解析部22は、複数のリファクタリングのパターンそれぞれを対象として、対象のパターンのリファクタリングによって他のサブシステムに移動する移動関数を特定する。そして、影響解析部22は、対象のパターンのリファクタリングについて特定された移動関数毎に、対象のパターンのリファクタリングの影響がある依存強度を特定する。また、規模算出部23は、複数のパターンのリファクタリングそれぞれを対象として、対象のパターンのリファクタリングについて特定された移動関数毎に、その移動関数についての前記影響がある依存強度に基づき、その移動関数についての対象のパターンのリファクタリングの規模を算出する。
Claims (12)
- ソースコードに含まれる関数の依存強度として、関数が他の関数に依存する与依存強度と、関数が他の関数から依存される被依存強度とを特定するソースコード解析部と、
リファクタリングによって他のサブシステムに移動する移動関数を特定し、前記移動関数について前記ソースコード解析部によって特定された前記与依存強度及び前記被依存強度から、前記リファクタリングの影響がある依存強度を特定する影響解析部と、
前記影響解析部によって特定された影響がある依存強度に基づき、前記リファクタリングの規模を算出する規模算出部と
を備える規模算出装置。 - 前記影響解析部は、前記移動関数について特定された前記与依存強度の総計と、前記被依存強度の総計とを、前記影響がある依存強度として特定し、
前記規模算出部は、前記与依存強度の総計に与依存係数を乗じるとともに、前記被依存強度の総計に被依存係数を乗じて、前記リファクタリングの規模を算出する
請求項1に記載の規模算出装置。 - 前記規模算出装置は、さらに、
前記リファクタリング前のサブシステム間の依存強度と、前記リファクタリング後のサブシステム間の依存強度とから、前記リファクタリングの効果を算出する効果算出部
を備える請求項1又は2に記載の規模算出装置。 - 前記影響解析部は、前記移動関数毎に、前記リファクタリングの影響がある依存強度を特定し、
前記規模算出部は、前記移動関数毎に、その移動関数についての前記影響がある依存強度に基づき、その移動関数についての前記リファクタリングの規模を算出する
請求項1から3までのいずれか1項に記載の規模算出装置。 - 前記影響解析部は、複数のリファクタリングそれぞれを対象として、対象のリファクタリングによって他のサブシステムに移動する移動関数を特定し、前記対象のリファクタリングの影響がある依存強度を特定し、
前記規模算出部は、前記複数のリファクタリングそれぞれを対象として、対象のリファクタリングについての前記影響がある依存強度に基づき、前記対象のリファクタリングについての規模を算出する
請求項1から4までのいずれか1項に記載の規模算出装置。 - 前記効果算出部は、複数のリファクタリングそれぞれを対象として、前記リファクタリング前のサブシステム間の依存強度と、対象のリファクタリングをした後のサブシステム間の依存強度とから、前記対象のリファクタリングの効果を算出する
請求項3に記載の規模算出装置。 - 前記影響解析部は、複数のリファクタリングそれぞれを対象として、対象のリファクタリングによって他のサブシステムに移動する移動関数を特定し、対象のリファクタリングについて特定された移動関数毎に、前記対象のリファクタリングの影響がある依存強度を特定し、
前記規模算出部は、前記複数のリファクタリングそれぞれを対象として、対象のリファクタリングについて特定された移動関数毎に、その移動関数についての前記影響がある依存強度に基づき、その移動関数についての前記対象のリファクタリングの規模を算出する請求項4に記載の規模算出装置。 - ソースコードに含まれる関数の依存強度として、関数が他の関数に依存する与依存強度と、関数が他の関数から依存される被依存強度とを特定するソースコード解析処理と、
リファクタリングによって他のサブシステムに移動する移動関数を特定し、前記移動関数について前記ソースコード解析処理によって特定された前記与依存強度及び前記被依存強度から、前記リファクタリングの影響がある依存強度を特定する影響解析処理と、
前記影響解析処理によって特定された影響がある依存強度に基づき、前記リファクタリングの規模を算出する規模算出処理と
をコンピュータに実行させる規模算出プログラム。 - ソースコードに含まれる関数の依存強度を特定するソースコード解析部と、
第1のサブシステムに対応する関数のうち、リファクタリングによって第2のサブシステムに移動した移動関数を特定し、前記移動関数について前記ソースコード解析部によって特定された依存強度から、前記移動関数と依存関係のあるインターフェースにおいて前記リファクタリングの影響がある依存強度を特定する影響解析部と、
前記影響解析部によって特定された影響がある依存強度に基づき、前記リファクタリングに伴う前記インターフェースの変更規模を算出する規模算出部と
を備える規模算出装置。 - 前記規模算出部は、前記影響解析部によって特定された影響がある依存強度との相関関係に基づき、前記リファクタリングの規模を算出する
請求項9に記載の規模算出装置。 - 前記影響解析部は、前記移動関数と依存関係のある前記第1のサブシステムと前記第2のサブシステムとのインターフェースにおいて前記リファクタリングの影響がある依存強度を特定する
請求項9又は10に記載の規模算出装置。 - ソースコードに含まれる関数の依存強度を特定するソースコード解析処理と、
第1のサブシステムに対応する関数のうち、リファクタリングによって第2のサブシステムに移動した移動関数を特定し、前記移動関数について前記ソースコード解析処理によって特定された依存強度から、前記移動関数と依存関係のあるインターフェースにおいて前記リファクタリングの影響がある依存強度を特定する影響解析処理と、
前記影響解析処理によって特定された影響がある依存強度に基づき、前記リファクタリングに伴う前記インターフェースの変更規模を算出する規模算出処理と
をコンピュータに実行させる規模算出プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2017/005666 WO2018150505A1 (ja) | 2017-02-16 | 2017-02-16 | 規模算出装置及び規模算出プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2018150505A1 JPWO2018150505A1 (ja) | 2019-06-27 |
JP6682036B2 true JP6682036B2 (ja) | 2020-04-15 |
Family
ID=63169893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019500101A Active JP6682036B2 (ja) | 2017-02-16 | 2017-02-16 | 規模算出装置及び規模算出プログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US11379224B2 (ja) |
JP (1) | JP6682036B2 (ja) |
GB (1) | GB2573417B (ja) |
WO (1) | WO2018150505A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11301223B2 (en) * | 2019-08-19 | 2022-04-12 | International Business Machines Corporation | Artificial intelligence enabled function logic infusion |
US11755318B2 (en) | 2019-08-28 | 2023-09-12 | Mitsubishi Electric Corporation | Proposing device and improvement proposing method |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001325100A (ja) * | 2000-05-15 | 2001-11-22 | Mitsubishi Electric Corp | プログラム解析装置 |
JP3842592B2 (ja) | 2001-07-26 | 2006-11-08 | 株式会社東芝 | 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム |
US6804682B1 (en) * | 2002-04-29 | 2004-10-12 | Borland Software Corporation | System and methodology providing compiler-assisted refactoring |
US7451439B2 (en) * | 2004-12-03 | 2008-11-11 | Palo Alto Research Center Incorporated | System and method for automatically identifying compound refactorings of program code through quantitative metric analysis |
US8032876B2 (en) * | 2007-07-05 | 2011-10-04 | Cadence Design Systems, Inc. | Method and apparatus for restructuring a software program hierarchy |
JP5168279B2 (ja) * | 2007-07-19 | 2013-03-21 | 富士通株式会社 | アプリケーション改善支援プログラム、アプリケーション改善支援方法およびアプリケーション改善支援装置 |
JP2009122754A (ja) * | 2007-11-12 | 2009-06-04 | Mitsubishi Electric Corp | ソフトウェア開発支援装置 |
US8473902B2 (en) * | 2009-08-07 | 2013-06-25 | International Business Machines Corporation | Identifying source code elements for refactoring |
JP2011170697A (ja) | 2010-02-19 | 2011-09-01 | Panasonic Corp | ソフトウェア構造分析装置 |
US8869127B2 (en) * | 2011-01-03 | 2014-10-21 | International Business Machines Corporation | Refactoring programs for flexible locking |
JP2013045421A (ja) | 2011-08-26 | 2013-03-04 | Toshiba Corp | 保守度測定装置 |
JP2013196433A (ja) | 2012-03-21 | 2013-09-30 | Hitachi Systems Ltd | 概算工数算出システム、概算工数の算出方法、およびプログラム |
JP2014032466A (ja) | 2012-08-01 | 2014-02-20 | Ntt Comware Corp | 複雑度算出装置、複雑度算出方法および複雑度算出プログラム |
JP6076660B2 (ja) | 2012-09-18 | 2017-02-08 | 富士電機株式会社 | プログラム構造評価システム、プログラム |
JP5791121B2 (ja) | 2013-03-08 | 2015-10-07 | Necソリューションイノベータ株式会社 | コスト算出装置、コスト算出方法、及びプログラム |
JP2016076080A (ja) | 2014-10-06 | 2016-05-12 | 三菱電機株式会社 | ソースコード解析装置、ソースコード解析方法、及びプログラム |
JP6300710B2 (ja) | 2014-12-04 | 2018-03-28 | 三菱電機株式会社 | 変更影響分析装置及び変更影響分析方法及びプログラム |
US9740480B1 (en) * | 2016-02-18 | 2017-08-22 | King Fahd University Of Petroleum And Minerals | Apparatus and methodologies for code refactoring |
-
2017
- 2017-02-16 US US16/473,855 patent/US11379224B2/en active Active
- 2017-02-16 GB GB1908961.4A patent/GB2573417B/en not_active Expired - Fee Related
- 2017-02-16 JP JP2019500101A patent/JP6682036B2/ja active Active
- 2017-02-16 WO PCT/JP2017/005666 patent/WO2018150505A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
GB2573417A (en) | 2019-11-06 |
JPWO2018150505A1 (ja) | 2019-06-27 |
US20210326130A1 (en) | 2021-10-21 |
GB201908961D0 (en) | 2019-08-07 |
WO2018150505A1 (ja) | 2018-08-23 |
GB2573417B (en) | 2021-11-24 |
US11379224B2 (en) | 2022-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8578311B1 (en) | Method and system for optimal diameter bounding of designs with complex feed-forward components | |
US8489380B2 (en) | Satisfiability (SAT) based bounded model checkers | |
US8938703B1 (en) | Method and apparatus for comprehension of common path pessimism during timing model extraction | |
WO2011037940A2 (en) | Concurrent simulation of hardware designs with behavioral characteristics | |
US7765503B2 (en) | Half cycle common path pessimism removal method | |
US10606970B2 (en) | Selection of corners and/or margins using statistical static timing analysis of an integrated circuit | |
US10592703B1 (en) | Method and system for processing verification tests for testing a design under test | |
US9003342B1 (en) | Lumped aggressor model for signal integrity timing analysis | |
JP6682036B2 (ja) | 規模算出装置及び規模算出プログラム | |
Tatsuoka et al. | Physically aware high level synthesis design flow | |
JP5040625B2 (ja) | Lsiの電力見積方法及びその装置 | |
Goli et al. | Through the looking glass: Automated design understanding of SystemC-based VPs at the ESL | |
JP2010033493A (ja) | レイアウト配線混雑予測装置およびその方法、並びにプログラム | |
JP6789844B2 (ja) | 類似関数抽出装置および類似関数抽出プログラム | |
JP5454349B2 (ja) | 性能推定装置 | |
US10223077B2 (en) | Determination of signals for readback from FPGA | |
JP6512032B2 (ja) | スタブ化対象判定装置、方法、及びプログラム | |
Kamal et al. | Timing variation-aware custom instruction extension technique | |
US9600613B1 (en) | Block-level code coverage in simulation of circuit designs | |
JP6548848B2 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
Rashid | An efficient cycle accurate performance estimation model for hardware software co-design | |
US10503854B1 (en) | Method and system for generating validation tests | |
WO2022239226A1 (ja) | 組込み回路、回路品質確認装置、及び回路品質確認方法 | |
US7971164B2 (en) | Assessing resources required to complete a VLSI design | |
JP7091726B2 (ja) | 情報処理装置,プログラム及び情報処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20181221 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20191029 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20191216 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200117 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20200225 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200324 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6682036 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |