JP6178023B2 - モジュール分割支援装置、方法、及びプログラム - Google Patents

モジュール分割支援装置、方法、及びプログラム Download PDF

Info

Publication number
JP6178023B2
JP6178023B2 JP2016563360A JP2016563360A JP6178023B2 JP 6178023 B2 JP6178023 B2 JP 6178023B2 JP 2016563360 A JP2016563360 A JP 2016563360A JP 2016563360 A JP2016563360 A JP 2016563360A JP 6178023 B2 JP6178023 B2 JP 6178023B2
Authority
JP
Japan
Prior art keywords
module
category
keyword
function
indivisible
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
JP2016563360A
Other languages
English (en)
Other versions
JPWO2016092677A1 (ja
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2016092677A1 publication Critical patent/JPWO2016092677A1/ja
Application granted granted Critical
Publication of JP6178023B2 publication Critical patent/JP6178023B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/721Modular inversion, reciprocal or quotient calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4436Exlining; Procedural abstraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、ソースコード内のモジュール、例えば関数分割が可能か否かを判定する、モジュール分割支援装置、モジュール分割支援方法、及びモジュール分割支援プログラムに関する。
ファイルが適切に設計されず、関数が不適切なファイルに配置されている事があり、ソース可読性低下の原因となっている。特許文献1では、関数の評価ルール(ファイル内に含まれる関数名の類似度等)を用いて、判定対象の関数をファイルから分離するべきか否かを判定する方法が提案されている。
特開2007/219586
しかしながら、特許文献1の方法では、関数内の解析を行わない為、関数の分割が可能か否かを判断する事が出来ず、関数レベルでのソース可読性を向上させる事が出来なかった。
上記課題を解決する為に、本発明のモジュール可視化判定は以下の手段を有するものである。
本発明の一側面は、入力装置、出力装置、演算装置、および記憶装置を用いて、ソースコード中のモジュール(例えば、関数、変数、マクロ等のひとまとまりの機能・要素)を分割するモジュール分割支援方法、あるいは、そのための装置、およびプログラムである。
演算装置は、記憶装置に記憶された、あるいは、入力装置から入力される、キーワードカテゴリ表と不可分度算出項目リストを利用可能である。キーワードカテゴリ表は、キーワードと、キーワードに対応するカテゴリのデータの組を複数組含む。例えば、カテゴリとして、キーワードに関連する機能を利用することができる。同じまたは関連する機能を有する部分は、なるべく一つのファイルに纏めたほうが、ソースコードの可読性は向上する。このため、機能に着目してキーワードを分類することで、ソースコードの整理がしやすくなる。あるいは、カテゴリとして、キーワードそのものを用いてもよい。この場合は、キーワードとカテゴリが一対一に対応する。より詳細な分析が可能となるが、結果の検討が煩雑になる場合もある。また、カテゴリを2以上に階層化してもよい。
不可分度算出項目リストは、カテゴリのうち第1のカテゴリと第2のカテゴリの間の不可分度算出項目と、不可分度算出項目の算出方法に関する情報の組を含む。不可分度算出項目とその算出方法は、経験則に基づいて種々のルールを定めることができる。
演算装置は、ソースコード取得部と、キーワード取得部と、データ解析部と、モジュール分割判定部を備える。
ソースコード取得部は、記憶装置に記憶された、あるいは、入力装置から入力される、一群のソースコードおよび可視化対象となるソースコードを取得する。キーワード取得部は、一群のソースコード中のモジュール毎に、モジュールに含まれるキーワードを特定して、モジュール別キーワード使用データを作成する。モジュール別キーワード使用データは、一群のソースコードのモジュール中に出現するキーワード間の関連性を、統計的に集計したものである。一群のソースコードは、データが多いほど統計的精度は向上するが、データ処理量は大きくなる。また、一群のソースコードは、可視化対象となるソースコードと関連性の大きい集合であることが好ましい。典型的な例としては、可視化対象となるソースコードが属する、データベースまたはプロジェクトに属するソースコードの集合を一群のソースコードとして利用することが望ましい。
データ解析部は、不可分度算出項目リストに格納された算出方法と、モジュール別キーワード使用データに格納されたデータと、キーワードカテゴリ表に含まれるキーワードに対応するカテゴリに関する情報を用いて、第1のカテゴリと第2のカテゴリについての不可分度を算出し、不可分度データを作成する。
以上のソースコード取得部とデータ解析部による処理によって、キーワードに関連づけられたカテゴリ相互の不可分度が、不可分度データとしてデータベース化される。
モジュール分割判定部は、可視化対象となるソースコード中の各モジュール内に存在するキーワードを特定し、各モジュールのうち、所定閾値を下回る不可分度を有する第1のカテゴリと第2のカテゴリに対応するキーワードの組を有するモジュールを特定する。この特定されたモジュールが、分割を検討すべき候補となる。
なお、不可分度データをデータベース化する主体もしくは情報処理装置は、モジュール分割を判定する主体もしくは情報処理装置と別個であってもよい。
本発明の好ましい具体例では、カテゴリとして機能を用いた場合、データ解析部は、不可分度として、第1の機能と第2の機能の関連度、または、第1の機能と第2の機能の利用順の割合、を算出する。
閾値については、その都度オペレータが入力装置から入力することができる。この場合、閾値と変化させた結果をリアルタイムで確認することができる。または、不可分度算出項目リストの各情報の組に、あらかじめ閾値を付随させておいてもよい。
可視化対象となるソースコード中のモジュールに含まれるキーワードに対するカテゴリは、2つとは限らず、3以上ある場合もある。この場合、あるモジュールが含むキーワードに対応したカテゴリ同士の不可分度が、全て前記所定閾値を下回る場合、当該モジュールを分割可能なモジュールと判定してもよい。このようなモジュールは、関連性のない部分が多く含まれることが推測され、優先的に分割を検討することが望ましい。
本発明の好ましい具体例では、可視化対象となるソースコード中のモジュールを絞り込むために、絞り込み条件を定義したモジュール絞り込み判定リストを利用可能とする。モジュール分割判定部は、絞り込み条件に該当するモジュールについて特定する処理を行うことにより、処理量を少なくすることができる。絞り込み条件としては、種々の条件を経験的に定めておくことができる。モジュール絞り込み条件の具体的な例としては、使用機能あるいはキーワード数、機能あるいはキーワード間の最大行間数、LOC(Lines Of Code)、種々の指標で測定できる複雑度、修正回数、最後に修正してから経過した時間、開発に関わった人数、または開発者の開発レベル、経験、能力等を利用することができる。
より具体的な例では、モジュール分割判定対象モジュールを絞り込むために、絞り込み条件を規定するモジュール絞り込み項目、と項目毎にモジュール絞り込みの閾値を記載したモジュール絞り込み判定データ、を備える。データ解析部は、モジュール絞り込み項目に従いモジュール絞り込みの値を算出し、モジュール絞り込みの値と、モジュール絞り込みの閾値と、を比較する。モジュール絞り込みの値が、モジュール絞り込みの閾値以上である場合に、モジュール分割判定を行い、閾値未満である場合に、モジュール分割判定を行わないように構成することができる。
なお、モジュール分割判定に用いる閾値は複数用いることができ、判定条件も種々のものを組み合わせることができる。例えば、単一の閾値では分割可能なモジュールと判定されるモジュールであっても、不可分度の高い機能の組が複数別個に内在するモジュールである場合がある。本発明の他の好適な例では、モジュール分割判定部は、該不可分度の高い機能の組を抽出するとともに、当該不可分度の高い機能の組同士の不可分度を判定する機能を有する。このため、機能の組同士の不可分度が、所定閾値未満である場合に分割可能なモジュールと判定し、それ以外を分割可能でないモジュールと判定することが考えられる。
また、本発明の他の観点は、可視化対象のソースコードを取得するソースコード取得部と、ソースコード、またはソースコードが属するプロジェクトに関係するソースコードや開発保守データに記述されているキーワードを取得するキーワード取得部とを備える。また、モジュール内に記述されるキーワードまたはキーワードが属する機能名を纏めたキーワードカテゴリ表を用いる。また、キーワード取得部が、キーワードカテゴリ表を参考にしつつ、取得したモジュール毎のキーワード使用に関するデータを格納するモジュール別キーワード使用データを用いる。また、機能やキーワードの不可分度算出項目、不可分度の算出方法、及び閾値を纏めた不可分度算出項目リストを用いる。また、不可分度算出項目の算出値を格納した不可分度データと、モジュール別キーワード使用データと、不可分度算出項目リストに記載された不可分度算出方法と、を利用して、不可分度の算出を行い、算出結果を該不可分度データに格納するデータ解析部を用いる。また、不可分度と、不可分度算出項目リストから取得した閾値またはユーザが入力した閾値とを比較して、モジュールの分割判定を行うモジュール分割判定部を備える。
以上で説明した装置構成は、単体のコンピュータで構成してもよいし、あるいは、入力装置、出力装置、処理装置、記憶装置の任意の部分が、ネットワークで接続された他のコンピュータで構成されてもよい。発明の思想としては等価であり、変わるところがない。
本実施例中、ソフトウエアで構成した機能と同等の機能は、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)などのハードウエアでも実現できる。そのような態様も本願発明の範囲に含まれる。
本発明によれば、ソースコード内に含まれるモジュールに対し、該モジュールが利用する機能に関する情報を活用して機能の不可分度を算出し、該不可分度を用いて分割が可能なモジュールか否かを判定する事で、モジュールレベルでのソース可読性向上を支援する事が出来る。上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
実施例におけるハードウェア構成の例を示すブロック図である。 実施例における例を示す機能ブロック図である。 実施例におけるキーワードカテゴリ表の例を示す表図である。 実施例における関数別キーワード使用データの例を示す表図である。 実施例における不可分度算出項目リストの例を示す表図である。 実施例における不可分度データの例を示す表図である。 実施例における関数絞り込み判定リストの例を示す表図である。 実施例における関数分割を支援するためのプログラム図作成フローチャートの一例を示すフロー図である。 実施例における分割判定対象関数絞り込みフローチャートの一例を示すフロー図である。 実施例における関数分割判定フローチャートの一例を示すフロー図である。 不可分度変更に応じて可視化図が変化する一例を示す平面図である。 分割優先度の高い関数の一例を示す平面図である。 不可分度変更に応じて可視化図が変化する一例を示す平面図である。
以下、本発明による関数分割支援装置、関数分割支援方法、及び関数分割支援プログラムに関する一実施形態を、図面を用いて詳細に説明する。
ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略することがある。
本明細書等における「第1」、「第2」、「第3」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられ、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
本明細書において単数形で表される構成要素は、特段文脈で明らかに示されない限り、複数形を含むものとする。
本実施例1では、複数の関数を含む可視化対象ソースコードに対して、分割可能だと判定した関数を強調したプログラム図を生成する方法の一例を記す。プログラム図の種類は複数考えられるが、本例では、プログラム図として関数の呼出関係図をベースにして記載している。
図1は、本発明の実施例1に係る情報処理装置100のハードウェア及びシステム構成の一例を示す図である。情報処理装置100のハードウェアとして、中央処理装置101、キーボードやマウス等の入力装置102、二次記憶装置103、主記憶装置104、ディスプレイ等の表示装置105、及び通信装置107を有する。尚、各装置は、バス106によって接続され、各装置間で相互にデータの送受信が可能である。また、情報処理装置100の他に、情報処理装置やネットワークストレージといった、データを保存する事が可能な種々の情報装置A110と情報装置B120があり、これらの間が、例えば、インターネット等の通信ネットワーク130により接続されている。
図2は、本発明の実施例1に係る情報処理装置100、情報装置A110、及び情報装置B120の機能ブロックの一例を示す図である。尚、本実施例においては、情報処理装置100の機能ブロックの全てが中央処理装置101によって実行または操作されるソフトウェアプログラムやデータであるものとして説明するが、一部または全ては、ハードウェアとして実現されても良い。
また、本来は、これらの機能ブロックに加え、各機能ブロックの起動や管理等を行うOS(Operating System)や制御プログラム等が存在するが、本実施例では、これらの機能ブロックの連携動作を適宜説明することとし、OSや制御プログラムがここで適宜説明された連携動作に必要となる機能ブロックの起動や動作管理を行う事は自明であるので、これらのOSや制御プログラムについては説明及び記載を省略する。
さて、本発明の実施例1に係る情報処理装置100は、機能ブロックとして、図2に示すように、ソースコード取得部200、キーワード取得部201、データ解析部202、関数分割判定部203、描画指示部204、プログラム図作成制御部205、キーワードカテゴリ表212、関数別キーワード使用データ213、不可分度算出項目リスト214、不可分度データ215、及び関数絞り込み判定データ216を有する。
情報装置A110は、プロジェクトAに関するソースコード群206、及びソースコードA207を有する。ソースコードA207は、関数や変数等の部分的プログラムで構成されている。
情報装置B120は、プロジェクトBに関するソースコード群208、及びソースコードB209を有する。ソースコードB209は、関数や変数等の部分的プログラムで構成されている。尚、プロジェクトAに関するソースコード群206、ソースコードA207、プロジェクトBに関するソースコード群208、及びソースコードB209は必ずしも上述の場所にある必要はなく、情報処理装置100、情報装置A110、及び情報装置B120、あるいは他のアクセス可能な情報処理装置のいずれに格納されていても良い。
図3に、キーワードカテゴリ表212の一例を示す。キーワードカテゴリ表212には、関数内に記述されるキーワード3001と、該キーワードが属する機能名3002が格納される。本例では、キーワードとして、SCI0、SCI1、ITU、及びCMTを記載している。また、SCI0とSCI1が属する機能名を通信、ITUとCMTが属する機能名をタイマ、として記載している。キーワードカテゴリ表212は、ソフトウェアベンダーが作成することができる。あるいは、ソフトウェアユーザが自分でキーワードのカテゴリ分けをして作成してもよい。これらキーワードや機能名は、キーワード取得部201が、ソースコードやソースコードに関する開発・保守データ等で設定されているマクロやキーワード情報を取得し、該情報を、関数別キーワード使用データ213に格納する際に用いる。関数別キーワード使用データ213に格納する情報に関しては後述する。
図4に、関数別キーワード使用データ213の一例を示す。関数別キーワード使用データ213には、例えば情報装置AのプロジェクトAに関するソースコード群に含まれる、関数4001毎のキーワード3001使用に関するデータ4002が格納される。本例では、キーワード取得部201が、関数毎に、キーワードカテゴリ表212に記載されているキーワード3001の使用回数を記載するものとする。キーワードの使用回数は、キーワードが使用されている文単位で一回とカウントしたり、x行数の間にy回キーワードが使用している場合に一回とカウントしたり、と複数のカウント方法が考えられる。このようなカウント処理は、各関数のソースコードに対して、キーワードカテゴリ表212に示すキーワードを検索し、抽出することで自動的に行うことができる。尚、格納するデータは、キーワードの使用回数に限定されず、どのようなデータも格納可能である。どのようなデータを格納するかを、予めシステムで決めておいても良いし、ユーザ入力等の情報をもとに柔軟に決定する事も考えられる。また、本例ではキーワード3001単位で使用回数のデータを格納しているが、キーワード単位に限定されるものではなく、機能3002単位で格納しても良い。
図5に、不可分度算出項目リスト214の一例を示す。不可分度算出項目リスト214には、機能の不可分度算出で利用する項目5001、該項目の不可分度算出方法5002、及び該項目の不可分度閾値5003が格納される。
本例では、不可分度算出で利用する項目5001はユーザが選択するものとする。不可分度算出項目リスト214(図5)に格納された不可分度算出方法5002と関数別キーワード使用データ213(図4)に格納されたデータを用いて、ユーザが選択した不可分度算出項目5001の不可分度を算出し、該算出不可分度を不可分度データ215(図6)に格納する。
該算出不可分度は、関数分割判定対象関数が分割可能か否かを判定する際に利用する。本例では、不可分度算出項目5001の例として、“機能の関連度”と“機能の利用順の割合”の二つを挙げている。
“機能の関連度(機能Aと機能Bの関連度)”は、機能Aに属するキーワード及び機能Bに属するキーワードを利用する関数の数、を、機能Aに属するキーワードまたは機能Bに属するキーワードを使用する関数の数で除算する事で算出する。
“機能の利用順の割合(機能Aの後に機能Bを利用する割合)”は、機能Aの後に機能Bを利用する関数の数を、機能Aの後に機能Bを利用する、または機能Bの後に機能Aを利用する関数の数で除算する事で算出する。
不可分度算出項目5001である“機能の関連度”と“機能の利用順の割合”に関して、それぞれ、閾値5003として、0.7と0.5が記載されている。本例では、不可分度算出項目として“機能の関連度”を使用する。関数が機能A、機能B、機能Cを使用している場合、機能Aと機能B、機能Bと機能C、機能Aと機能Cのそれぞれに対する不可分度を算出し、該不可分度が全て該閾値よりも小さい機能を使用している関数は分割可能と判定する。尚、不可分度算出で利用する項目は、一つずつの利用に限らず、複数の項目を同時に利用する事も考えられる。
図5のような、不可分度算出項目リスト214は、予め設定して作成しておく。算出方法の例は、図5に限るものではなく、機能相互の関連性もしくは密接性を評価できるものであればよい。図5の例では、算出方法として2つの機能の不可分度を算出したが、3つ以上の機能の不可分度を算出してもよい。例えば、3つの機能A,B,Cの関連度を算出するのであれば、「(機能Aに関するキーワード及び機能Bに関するキーワード及び機能Cに関するキーワードを利用する関数の数)/(機能Aに関するキーワードまたは機能Bに関するキーワードまたは機能Cに関するキーワードを利用する関数の数)」で計算することができる。機能が4以上の場合でも同様である。また、閾値も予め設定しておくが、後に説明するように、算出時に変更または選択できるようにしておいてもよい。
図6に、図4に示した関数別キーワード使用データ213を基に、図5に示した不可分度算出方法で算出した不可分度データ215の一例を示す。不可分度データ215には、ユーザが使用を指定した不可分度算出項目5001の算出値を格納する。該不可分度の算出方法は、図5で説明した通りである。本例では、利用する不可分度算出項目が“機能の関連度”である場合を想定しており、機能同士の関連度を表現可能な表形式で、不可分度の値6001を格納している。図5の例では、カテゴリA(通信機能)とカテゴリB(タイマ機能)の関連度を示している。図5の例では、算出値はカテゴリで纏めて示しているが、キーワード毎に示すこともできる。尚、算出値の格納形式あるいは表示方式は左記に限定されず、任意の形式で格納・表示して良い。
図6ではタイマと通信の2つの機能についてのみ示しているが、後に説明するように、分割可能か否かの判定においては、判定対象関数で使用している全ての機能(3以上ある場合もある)の組み合わせに関し、図6の不可分度データを取得する。
図7に、関数絞り込み判定リスト216の一例を示す。関数絞り込み判定リスト216には、関数分割判定対象関数を絞り込むために利用する項目7001を挙げている。もし分割判定対象関数の数が膨大であれば、分割判定が全て終了するのに時間が掛かるため、関数絞り込み判定リスト216を用いて判定対象の関数を絞り込む事で、判定時間を短縮する。図7の判定条件を用いることで、関数分割の検討対象として適するものを抽出することができる。
本例では、項目7001として、“使用機能/キーワード数”、“機能/キーワード間最大行間数”、“LOC”、“複雑度”、“修正回数”、“最後に修正してからの期間”、及び“開発に関わった人数”を挙げており、ユーザは好きな項目を利用出来る。関数絞り込み判定リスト216は、経験則等に基づいてあらかじめ設定しておく。例えば、修正回数が多い関数は、構成が複雑で分割をしたほうがよい場合が多い。また、開発人員が多い関数も、構成が複雑で分割をしたほうがよい場合が多い。それぞれの項目に対して閾値7002を設定しており、項目の値が閾値以上であれば、分割判定対象とし、項目の値が閾値未満であれば、分割判定対象から外す。尚、無論、関数絞り込みで用いる事が出来る項目は上記に限定されるものではない。
図8に、情報処理装置100で、関数分割を支援するために、情報処理装置A110に格納されている、ソースコードA207(図2参照)を可視化する際の一例である、フローチャートを示す。
処理800:プログラム図作成制御部205が、プログラム図作成を開始する。本実施例1では、プログラム中の関数に対して、関数が分割可能か否かの判定を行うものとし、分割可能な関数を強調表示したプログラム図を作成する例を示す。
処理801:入力装置102を用いて、ソースコード群206の中から可視化するソースコード、をユーザが指定する。本実施例では可視化ソースコードとしてソースコードA207、を指定したものとする。ユーザが可視化対象ソースコードを指定すると、ソースコード取得部200が、通信装置107を介し、プロジェクトAに関するソースコード群206の中から、可視化対象であるソースコードA207を取得する。もしソースコード群206が巨大で、ソースコードA207の検索に時間が掛かりそうな場合には、ユーザ指示により、予め、使いそうなファイルを、例えば情報処理装置100といった高速な検索が可能となる場所へ移動またはコピーしておく事も考えられる。
処理802:キーワード取得部201が、処理801でユーザ指定した可視化対象ソースコードA207が属するプロジェクトAに関するソースコード群206で設定されているマクロ等のキーワード情報を取得し、関数別キーワード使用データ213(図4参照)に格納する。
本例では、関数毎の、キーワード使用数を格納する。この際、キーワードカテゴリ表212(図3参照)によるキーワードの分類を参考にして、関数別キーワード使用データ213へ格納していく事も考えられる。このようにする事で、例えば、キーワードであるSCI0と、それが属する機能である通信といったように、キーワードの上位概念まで考慮してデータを格納する事が出来る。
尚、本例では、キーワード取得部201が取得するキーワードとして、ソースコード内に記述されるマクロやキーワードを挙げているが、左記に限定される事は無い。更に、キーワードを取得する対象として、可視化対象ソースコードA207が属するプロジェクトAに関するソースコード群206に限定されず、可視化対象と関係の無いソースコードB209が属するプロジェクトBに関するソースコード群208等、様々なソースコードやそれに関する開発・保守データを利用可能である。
処理803:入力装置102を用いて、分割判定対象関数を絞り込む為の項目と、後に関数を分割するか否かの判定を行うために算出する“機能の不可分度”項目を、ユーザが指定する。分割判定対象関数の絞り込みで利用可能な項目は、予め、関数絞り込み判定リスト216(図7参照)に記載しておき、ユーザは関数絞り込み判定リスト216から項目を指定する事も考えられる。
また、不可分度算出で利用可能な項目は、予め、関数不可分度算出項目リスト214(図5参照)に記載しておき、ユーザは関数不可分度算出項目リスト214から項目を指定する事も考えられる。本例では、関数絞り込み判定リスト216に、“使用機能/キーワード数”、“機能/キーワード間最大行間数”、“LOC”、“複雑度”、“修正回数”、“最後に修正してからの期間”、及び“開発に関わった人数”を記載しており、本処理で“使用機能/キーワード数”を、ユーザが絞り込み項目として指定したものとする。
また、不可分度算出項目リスト214に、不可分度算出項目5001として、“機能の関連度”と、“機能の利用順の割合”の二つを記載しており、本処理で“機能の関連度”をユーザが指定したものとする。尚、絞り込み項目や不可分度算出項目は、一つずつの利用に限らず、複数の項目を同時に利用する事もできる。
処理804:データ解析部202が、不可分度算出項目リスト214(図5参照)に格納された不可分度算出方法と関数別キーワード使用データ213(図4参照)に格納されたデータを用いて、ユーザが選択した不可分度算出項目の不可分度を算出し、不可分度データ215(図6参照)へ格納する。該不可分度は、後に関数を分割するか否かの判定で用いる。処理803にて、“不可分度”項目として、ユーザが“機能の関連度”を指定したと想定している為、不可分度算出項目リスト214記載の“機能の関連度”算出式を用いて不可分度を算出する。
“機能の関連度”は、複数の機能が互いにどれだけの関連性があるかを示す指標であり、この値が高い程、それらの機能は同時に利用されやすい事を示す。換言すると、機能の関連度が高ければ、それらの機能は一つの処理として同時に利用されるべきであり、処理として不可分であると言える。不可分度算出項目リスト214(図5)によると、“機能Aと機能Bの関連度”は、機能Aに属するキーワード及び機能Bに属するキーワードを利用する関数の数を、機能Aに属するキーワードまたは機能Bに属するキーワードを使用する関数の総数で除算する事で、算出する事が出来る。
処理805:処理805以下では、可視化対象であるソースコードA207に含まれる関数について、分割判定を行う。プログラム図作成制御部205が、処理801で取得した可視化対象であるソースコードA207に含まれる、未だ関数分割判定を行っていない関数の内、一つの関数を関数分割判定対象関数として取得する。
処理806:関数分割判定部203が、処理805で取得した関数分割判定対象該関数の分割判定を行うか否かを判定する。本判定では、関数絞り込み判定リスト216に記載された項目のうち、“使用機能/キーワード数”を使用するものと想定している。判定が真であれば、処理807へ進む。判定が偽であれば、処理809へ進む。尚、本処理は後に詳述する。
処理807:関数分割判定部203が、該関数は分割可能か否かを判定する。本判定では、不可分度算出項目リスト214(図5)に記載された項目のうち、“機能の関連度”を使用するものと想定している。判定においては、ソースコードA207に含まれる関数で使用している、全ての機能の組み合わせに対して、”機能の関連度”データ値と、不可分度算出項目リスト214記載の“機能の関連度”項目の閾値とを比較する。例えば、全ての”機能の関連度”が、閾値を上回れば、分割不可(分割不適切)と判定する。図6の例では、機能”通信”と”タイマ”の関連度は0.8であり、評価すべき機能がこの2つだけであれば、閾値0.7を超えるため、この関数は分割不可(偽)とする。また、図6には示していないが、他の機能(例えば”I/O”)があり、機能”I/O”と”タイマ”の関連度が、閾値を下回れば分割可(真)とする。判定が真であれば、処理808へ進む。判定が偽であれば、処理809へ進む。尚、本処理内容は後に詳述する。なお、上記の例では閾値を1つとしたが、機能の組み合わせに応じて、閾値を別個に設定し、機能の組み合わせ毎に判定した結果を論理演算することも可能である。
処理808:描画指示部204が、該関数を分割可能な関数として強調表示する。また、このとき、不可分度が閾値を下回った機能またはキーワードを併せて表示してもよい。
処理809:描画指示部204が、該関数を分割可能でない関数として強調表示しない。
処理810:プログラム図作成制御部205が、処理801で取得したソースコードA207に未だ関数分割判定を行っていない関数があるか否かを判定する。関数分割判定を行っていない関数がある場合は、処理805へ進む。関数分割判定をしていない関数が無い場合は、処理811へ進む。
処理811:プログラム図作成制御部205が、プログラム図作成を終了する。
図9に、図8の処理806において、関数の分割判定を行うか否かを判定する際の一例であるフローチャートを示す。処理803にて、分割判定対象関数の絞り込み項目として、関数絞り込み判定リスト216(図7)に記載されている項目のうち、ユーザが“使用機能/キーワード数”を指定した事を想定している。この例では条件として一つの項目を用いたが、複数項目を用いてもよい。
処理900:データ解析部202が、関数で使われている機能やキーワードの数を解析する。そして、関数分割判定部203が、該“使用機能/キーワード数”と、関数絞り込み判定リスト216記載の“使用機能/キーワード数”項目の閾値と、を比較し、前者の値が後者の値以上であれば、処理807へ進む。前者の値が後者の値より小さければ、処理809へ進む。
図10に、図8の処理807において、関数の分割判定を行う際の一例であるフローチャートを示す。処理803にて、“不可分度”項目として、不可分度算出項目リスト214(図5)に記載されている項目のうち、ユーザが“機能の関連度”を指定した事を想定している。この例では条件として一つの項目を用いたが、複数項目を用いてもよい。
処理1000:データ解析部202が、関数別キーワード使用データ213(図4)より、判定対象関数のキーワードデータを取得する。そして、該データを利用して、該関数で使用している全ての機能の組み合わせに関し、不可分度データ215(図6)記載の“機能の関連度”データ値を取得する。そして、関数分割判定部203が、関数で使用している全ての機能に対して、該“機能の関連度”データ値と、不可分度算出項目リスト214(図5)記載の“機能の関連度”項目の閾値とを比較する。この際、全ての前者の値が後者の値よりも低い機能があれば、処理808へ進む。全ての前者の値が後者の値よりも低い機能がなければ処理809へ進む。
本実施例の効果として、上述した特許文献1に存在した課題、すなわち関数内を解析しない為、関数の分割を行う事が出来ず、ソース可読性を向上出来なかった、という課題を解決する。つまり、関数が利用する機能に着目して、該機能同士の関連度を算出し、これらを関数不可分度として利用する事で、対象関数が分割可能か否かを自動で判定し、該判定結果を用いて、分割可能な関数を強調したプログラム図を構築・表示する事で、ソース可読性を向上させるための支援を行う事が出来る。
本実施例の方法を利用して作成するプログラム図は、不可分度の閾値を変更すれば、分割可能として強調表示される関数が変わる。
図11に不可分度の閾値を変更する際の画面例を示す。例えば、図中の四角は関数を示し、四角同士を接続する矢印は、呼び出しや書き込み等を示す。本プログラム図を利用する目的や意図に応じて、分割可能関数をどの程度含めるかの考え方は異なる為、例えば、不可分度算出項目リスト214(図5)に記載された不可分度算出項目5001の閾値5003の代わりに、図11で示すように、不可分度閾値スライダ1101を調整してその値を閾値として利用する事で、目的や意図に応じて、プログラム図を適宜作り替える事も考えられる。
図11で示すプログラム図の中で、灰色のノード1102は分割可能だと判定された関数を示している。図11上図のように、不可分度閾値が0.8の時には6つの関数が分割可能として強調されているが、不可分度閾値スライダを操作して、0.1へと変更した場合には、図11下図のように3つの関数だけが分割可能として強調表示される。
処理1000や図11で行った関数分割判定では、関数内で利用している機能のうち、その関数内の他の機能との関連度が閾値未満であるような機能(分離対象機能)が一つでもあれば、関数分割可能と判定した。ここで、もし関数分割可能であると判定される関数が多い場合等では、分割可能関数を分割優先度の高いものへと絞り込みたい場合がある。
図12に分割優先度の高い関数の一例を示す。図12に示す関数、receiveMessage関数は、A機能、B機能、C機能、及びD機能を利用しており、A機能とB機能は不可分度0.8、A機能とC機能は不可分度0.2、A機能とD機能は不可分度0.2、B機能とC機能は不可分度0.2、B機能とD機能は不可分度0.2、C機能とD機能は不可分度0.7である。このように、不可分度の高い複数の機能の組(A機能及びB機能、とC機能及びD機能)が、二極化(多極化)している関数は分割優先度が高い。次に、このような、機能が二極化している関数を抽出する例を説明する。
図13に不可分度の閾値を変更する別の例を示す。図12のような場合を分析するために、例えば、図13で示すように、不可分度閾値スライダは二軸以上あると好ましい。二軸ある事で、不可分度の高い機能の組を選別するための第一の閾値と、不可分度の高い機能の組同士を分離するための第二の閾値と、をそれぞれ設定する事が出来る。図13において、不可分度閾値スライダの上段1101aは、高い不可分度の機能の組を選ぶ為に利用するものである。上段スライダ1101aの閾値により、関数内に閾値以上の不可分度を有する機能の組が一つでも存在する関数が抽出される。不可分度閾値スライダの下段1101bは、高い不可分度の機能の組同士を分離する為に利用するものである。下段スライダ1101bの閾値により、上段スライダで抽出した関数のうち、関数内に閾値未満の不可分度を有する機能の組が一つでも存在する関数が抽出される。すなわち、上段スライダにより、関数内に不可分度の高い機能の組が存在することが分かる。また、下段スライダにより、関数内に不可分度の低い機能の組が存在することが分かる。すなわち、当該関数内には、機能が二極化(あるいは多極化)していることが分かる。この2つのスライダを利用し、まず不可分度の高い機能の組を有する関数を選別した上で、更にその中から分離可能な機能の組が存在する関数を選別する。
図12の関数を用いて説明すると、図13の上段スライダ1101aの設定では、不可分度の高い機能として、0.6以上の機能、つまり、A機能とB機能の組と、C機能とD機能の組の存在が分かり、これを有する関数を抽出出来る。図13の上段の図では、不可分度が0.6以上の機能の組が一つでもあった場合、関数は白い四角で表示され、それ以外は灰色の四角で示される。しかし、下段スライダ1101bは0に設定されているため、A機能とB機能の組と、C機能とD機能の組の間の関連度(B機能とC機能の関連度)は0.2という小さい値であっても、分離対象関数とならない。よって、分離対象とならない関数は、図13上段で白い四角で示される。また、図13上段に灰色で示されている関数は、不可分度が0.6以上の機能の組が一つもない関数ということになる。
ここで、下段スライダ1101bを操作し、0.25に変更する。ここで下段スライダの閾値による判定対象は、上段スライダの設定により0.6以上の不可分度の機能の組を持つ関数(図13上段で白い四角で示される)に限定される。すると、図13上段で白い四角で示された関数のうち、0.25未満の不可分度の機能の組を有する関数が抽出される。図12の関数では、B機能とC機能の不可分度0.2が閾値未満であるため、分離対象の関数となる。図13下段においては、図13上段で白い四角で示された関数のうち、いくつかが灰色の四角に変更されている。この、白から灰色に変更された関数が、機能が二極化(多極化)している関数である。
上述の説明では、下段スライダの閾値の判定対象を、全ての機能の間の不可分度としている。しかし、上段スライダで抽出した高い不可分度を有するA機能とB機能の組と、C機能とD機能の組の間の不可分度に絞ってもよい。判定する機能(キーワード)を特定することで、詳細な検討が可能になる。また、図13の例では、2つのスライダの閾値は、最初から特定の機能相互の不可分度のみに有効な閾値としておくこともできる。例えば、スライダの上段1101aの設定による結果にかかわらず、最初から下段スライダを、図12のB機能とC機能の間の不可分度に対する閾値として設定することもできる。
関数の分割判定では、機能の不可分度として、機能の利用順の割合を利用する事も出来る。複数の機能を利用するにあたり、A機能を利用した後にB機能を利用する、というように、機能の利用順番が決まっている場合がある。図12を例に、不可分度を“機能の利用順の割合”に対するものと想定して説明すると、A機能を利用した後にB機能を利用、またC機能を利用した後にD機能を利用、する割合は、それぞれ0.8、0.7である。また、B機能を利用した後にC機能を利用する割合は、0.2である。ここで、図13下図のように、不可分度閾値を設定した場合、A機能とB機能の不可分度と、C機能とD機能の不可分度は、閾値0.6以上であるため、これらは関数内の不可分度の高い機能の組として選別される。更に、B機能とC機能の不可分度は、閾値0.25未満であるため、A機能とB機能の組と、C機能とD機能の組は分割対象となる。
本例では、プログラム図として関数の呼出関係図をベースに記載したため、図11や図13に示すように、分割可能と判定した関数自体を強調表示しており、関数内部を表現していない。しかし、分割可能と判定した関数の内部を可視化したい事も考えられる。その際には、例えば、図12に記載しているように、関数の内部で、不可分な機能の組に色を付けておく、といった可視化方法が考えられる。もちろん、可視化方法は、左記含む、本例記載のものに限定されるものではない。
尚、本実施例では、不可分度を、関数を強調表示するか否かで利用する事としたが、左記に限らず、様々な利用法が考えられる。
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。
組込装置等、ソフトウェアを動作させる装置に適用出来る。
100 情報処理装置
101 中央処理装置
102 入力装置
103 二次記憶装置
104 主記憶装置
105 表示装置
106 バス
107 通信装置
110 情報装置A
120 情報装置B
130 通信ネットワーク
200 ソースコード取得部
201 キーワード取得部
202 データ解析部
203 関数分割判定部
204 描画指示部
205 プログラム図作成制御部
206 プロジェクトAに関するソースコード群
207 ソースコードA
208 プロジェクトBに関するソースコード群
209 ソースコードB
212 キーワードカテゴリ表
213 関数別キーワード使用データ
214 不可分度算出項目リスト
215 不可分度データ
216 関数絞り込み判定データ

Claims (15)

  1. 入力装置、出力装置、演算装置、および記憶装置を有し、ソースコード中のモジュールを分割するモジュール分割支援装置であって、
    前記演算装置は、前記記憶装置に記憶された、あるいは、前記入力装置から入力される、キーワードカテゴリ表と不可分度算出項目リストを利用可能であり、
    前記キーワードカテゴリ表は、キーワードと、前記キーワードに対応するカテゴリのデータの組を複数組含み、
    前記不可分度算出項目リストは、前記カテゴリのうち第1のカテゴリと第2のカテゴリの間の不可分度算出項目と、前記不可分度算出項目の算出方法に関する情報の組を含み、
    前記演算装置は、ソースコード取得部と、キーワード取得部と、データ解析部と、モジュール分割判定部を備え、
    前記ソースコード取得部は、前記記憶装置に記憶された、あるいは、前記入力装置から入力される、一群のソースコードおよび可視化対象となるソースコードを取得し、
    前記キーワード取得部は、前記一群のソースコード中のモジュール毎に、当該モジュールに含まれる前記キーワードを特定して、モジュール別キーワード使用データを作成し、
    前記データ解析部は、前記不可分度算出項目リストに格納された前記算出方法と、前記モジュール別キーワード使用データに格納されたデータと、前記キーワードカテゴリ表に含まれるキーワードに対応するカテゴリに関する情報を用いて、前記第1のカテゴリと第2のカテゴリについての不可分度を算出し、不可分度データを作成し、
    前記モジュール分割判定部は、前記可視化対象となるソースコード中の各モジュール内に存在する前記キーワードを特定し、前記各モジュールのうち、所定閾値を下回る前記不可分度を有する第1のカテゴリと第2のカテゴリに対応するキーワードの組を有するモジュールを特定する、
    ことを特徴とするモジュール分割支援装置。
  2. 請求項1において、
    前記カテゴリは、前記キーワードが関連する機能名であり、
    前記データ解析部は、前記不可分度として、前記第1のカテゴリと第2のカテゴリの関連度、または、前記第1のカテゴリと第2のカテゴリの利用順の割合、を算出する、
    ことを特徴とするモジュール分割支援装置。
  3. 請求項1において、
    前記モジュール分割判定部は、前記所定閾値として、前記入力装置から入力される閾値、または、前記不可分度算出項目リストの各情報の組に付随する閾値を用いる、
    ことを特徴とするモジュール分割支援装置。
  4. 請求項1において、
    前記モジュール分割判定部は、前記可視化対象となるソースコード中の各モジュールのうち、あるモジュールが含むキーワードに対応したカテゴリ同士の不可分度が、全て前記所定閾値を下回る場合、当該モジュールを分割可能なモジュールと判定し、それ以外を分割可能でないモジュールと判定する、
    ことを特徴とするモジュール分割支援装置。
  5. 請求項1において、
    前記可視化対象となるソースコード中のモジュールを絞り込むために、絞り込み条件を定義したモジュール絞り込み判定リストを利用可能であり、
    前記モジュール分割判定部は、前記絞り込み条件に該当するモジュールについて、前記モジュールを特定する処理を行う、
    ことを特徴とするモジュール分割支援装置。
  6. 入力装置、出力装置、演算装置、および記憶装置を用いて、ソースコード中のモジュールを分割するモジュール分割支援方法であって、
    前記演算装置は、前記記憶装置に記憶された、あるいは、前記入力装置から入力される、キーワードカテゴリ表と不可分度算出項目リストを利用可能であり、
    前記キーワードカテゴリ表は、キーワードと、前記キーワードに対応するカテゴリのデータの組を複数組含み、
    前記不可分度算出項目リストは、前記カテゴリのうち第1のカテゴリと第2のカテゴリの間の不可分度算出項目と、前記不可分度算出項目の算出方法に関する情報の組を含み、
    前記演算装置は、ソースコード取得部と、キーワード取得部と、データ解析部と、モジュール分割判定部を備え、
    前記ソースコード取得部は、前記記憶装置に記憶された、あるいは、前記入力装置から入力される、一群のソースコードおよび可視化対象となるソースコードを取得し、
    前記キーワード取得部は、前記一群のソースコード中のモジュール毎に、当該モジュールに含まれる前記キーワードを特定して、モジュール別キーワード使用データを作成し、
    前記データ解析部は、前記不可分度算出項目リストに格納された前記算出方法と、前記モジュール別キーワード使用データに格納されたデータと、前記キーワードカテゴリ表に含まれるキーワードに対応するカテゴリに関する情報を用いて、前記第1のカテゴリと第2のカテゴリについての不可分度を算出し、不可分度データを作成し、
    前記モジュール分割判定部は、前記可視化対象となるソースコード中の各モジュール内に存在する前記キーワードを特定し、前記各モジュールのうち、所定閾値を下回る前記不可分度を有する第1のカテゴリと第2のカテゴリに対応するキーワードの組を有するモジュールを特定する、
    ことを特徴とするモジュール分割支援方法。
  7. 請求項6において、
    前記カテゴリは、前記キーワードが関連する機能名であり、
    前記データ解析部は、前記不可分度として、前記第1のカテゴリと第2のカテゴリの関連度、または、前記第1のカテゴリと第2のカテゴリの利用順の割合、を算出する、
    ことを特徴とするモジュール分割支援方法。
  8. 請求項6において、
    前記モジュール分割判定部は、前記所定閾値として、前記入力装置から入力される閾値、または、前記不可分度算出項目リストの各情報の組に付随する閾値を用いる、
    ことを特徴とするモジュール分割支援方法。
  9. 請求項6において、
    前記モジュール分割判定部は、前記可視化対象となるソースコード中の各モジュールのうち、あるモジュールが含むキーワードに対応したカテゴリ同士の不可分度が、全て前記所定閾値を下回る場合、当該モジュールを分割可能なモジュールと判定し、それ以外を分割可能でないモジュールと判定する、
    ことを特徴とするモジュール分割支援方法。
  10. 請求項6において、
    前記可視化対象となるソースコード中のモジュールを絞り込むために、絞り込み条件を定義したモジュール絞り込み判定リストを利用可能であり、
    前記モジュール分割判定部は、前記絞り込み条件に該当するモジュールについて、前記モジュールを特定する処理を行う、
    ことを特徴とするモジュール分割支援方法。
  11. 入力装置、出力装置、演算装置、および記憶装置を有する情報処理装置に、ソースコード中のモジュールを分割する処理を実行させるモジュール分割支援プログラムであって、
    前記演算装置は、前記記憶装置に記憶された、あるいは、前記入力装置から入力される、キーワードカテゴリ表と不可分度算出項目リストを利用可能であり、
    前記キーワードカテゴリ表は、キーワードと、前記キーワードに対応するカテゴリのデータの組を複数組含み、
    前記不可分度算出項目リストは、前記カテゴリのうち第1のカテゴリと第2のカテゴリの間の不可分度算出項目と、前記不可分度算出項目の算出方法に関する情報の組を含み、
    前記演算装置を、ソースコード取得部と、キーワード取得部と、データ解析部と、モジュール分割判定部を備えるごとく機能させ、
    前記ソースコード取得部は、前記記憶装置に記憶された、あるいは、前記入力装置から入力される、一群のソースコードおよび可視化対象となるソースコードを取得し、
    前記キーワード取得部は、前記一群のソースコード中のモジュール毎に、当該モジュールに含まれる前記キーワードを特定して、モジュール別キーワード使用データを作成し、
    前記データ解析部は、前記不可分度算出項目リストに格納された前記算出方法と、前記モジュール別キーワード使用データに格納されたデータと、前記キーワードカテゴリ表に含まれるキーワードに対応するカテゴリに関する情報を用いて、前記第1のカテゴリと第2のカテゴリについての不可分度を算出し、不可分度データを作成し、
    前記モジュール分割判定部は、前記可視化対象となるソースコード中の各モジュール内に存在する前記キーワードを特定し、前記各モジュールのうち、所定閾値を下回る前記不可分度を有する第1のカテゴリと第2のカテゴリに対応するキーワードの組を有するモジュールを特定する、
    ことを特徴とするモジュール分割支援プログラム。
  12. 請求項11において、
    前記カテゴリは、前記キーワードが関連する機能名であり、
    前記データ解析部は、前記不可分度として、前記第1のカテゴリと第2のカテゴリの関連度、または、前記第1のカテゴリと第2のカテゴリの利用順の割合、を算出する、
    ことを特徴とするモジュール分割支援プログラム。
  13. 請求項11において、
    前記モジュール分割判定部は、前記所定閾値として、前記入力装置から入力される閾値、または、前記不可分度算出項目リストの各情報の組に付随する閾値を用いる、
    ことを特徴とするモジュール分割支援プログラム。
  14. 請求項11において、
    前記モジュール分割判定部は、前記可視化対象となるソースコード中の各モジュールのうち、あるモジュールが含むキーワードに対応したカテゴリ同士の不可分度が、全て前記所定閾値を下回る場合、当該モジュールを分割可能なモジュールと判定し、それ以外を分割可能でないモジュールと判定する、
    ことを特徴とするモジュール分割支援プログラム。
  15. 請求項11において、
    前記可視化対象となるソースコード中のモジュールを絞り込むために、絞り込み条件を定義したモジュール絞り込み判定リストを利用可能であり、
    前記モジュール分割判定部は、前記絞り込み条件に該当するモジュールについて、前記モジュールを特定する処理を行う、
    ことを特徴とするモジュール分割支援プログラム。
JP2016563360A 2014-12-11 2014-12-11 モジュール分割支援装置、方法、及びプログラム Expired - Fee Related JP6178023B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/082884 WO2016092677A1 (ja) 2014-12-11 2014-12-11 モジュール分割支援装置、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2016092677A1 JPWO2016092677A1 (ja) 2017-04-27
JP6178023B2 true JP6178023B2 (ja) 2017-08-09

Family

ID=56106924

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016563360A Expired - Fee Related JP6178023B2 (ja) 2014-12-11 2014-12-11 モジュール分割支援装置、方法、及びプログラム

Country Status (4)

Country Link
US (1) US10025558B2 (ja)
JP (1) JP6178023B2 (ja)
CN (1) CN106575225B (ja)
WO (1) WO2016092677A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019012674A1 (ja) * 2017-07-13 2019-01-17 株式会社日立製作所 プログラムの統合解析管理装置及びその統合解析管理方法
US10579370B2 (en) * 2018-08-03 2020-03-03 EMC IP Company LLC Method to disintegrate a monolith service to microservices
WO2020129432A1 (ja) * 2018-12-21 2020-06-25 日本電信電話株式会社 分散処理支援装置、分散処理支援方法およびプログラム
CN113139867B (zh) * 2021-04-30 2024-03-08 中国银行股份有限公司 微服务模块的划分方法、装置、设备及可读存储介质
CN115113921B (zh) * 2022-08-29 2022-11-08 云账户技术(天津)有限公司 代码重构价值的评估方法、装置、电子设备及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4445177A (en) * 1981-05-22 1984-04-24 Data General Corporation Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions
JP3375766B2 (ja) * 1994-12-27 2003-02-10 松下電器産業株式会社 文字認識装置
US5809500A (en) * 1997-02-26 1998-09-15 Century Technology Services, Inc. System for converting programs and databases to correct year 2000 processing errors
JP2001290639A (ja) * 2000-04-07 2001-10-19 Hitachi Ltd ソフトウェア再構成方式
JP2004295425A (ja) * 2003-03-26 2004-10-21 Mitsubishi Electric Corp モジュール構造化支援装置
JP2007219586A (ja) * 2006-02-14 2007-08-30 Matsushita Electric Ind Co Ltd ソースコード解析装置
US7617210B2 (en) * 2007-02-28 2009-11-10 Goldman Sachs & Co. Global inventory warehouse
JP5238635B2 (ja) * 2009-07-29 2013-07-17 京セラ株式会社 情報処理装置及びアプリケーションプログラムの起動方法
CN102193859B (zh) * 2010-03-03 2014-09-10 深圳市世纪光速信息技术有限公司 一种代码分析方法及系统
CN102779170B (zh) * 2012-06-25 2015-01-07 北京奇虎科技有限公司 一种识别网页正文楼层的系统和方法
US9182947B2 (en) * 2013-06-06 2015-11-10 International Business Machines Corporation Program source code navigation

Also Published As

Publication number Publication date
CN106575225A (zh) 2017-04-19
WO2016092677A1 (ja) 2016-06-16
CN106575225B (zh) 2019-07-02
US20170242661A1 (en) 2017-08-24
US10025558B2 (en) 2018-07-17
JPWO2016092677A1 (ja) 2017-04-27

Similar Documents

Publication Publication Date Title
JP6178023B2 (ja) モジュール分割支援装置、方法、及びプログラム
US9846708B2 (en) Searching of images based upon visual similarity
US20190213114A1 (en) Apparatus and application interface traversing method
US20060004528A1 (en) Apparatus and method for extracting similar source code
JPWO2016151618A1 (ja) 予測モデル更新システム、予測モデル更新方法および予測モデル更新プログラム
US20150026635A1 (en) Method for generating control-code by a control-code-diagram
JP2014533416A (ja) 反復時系列マトリクスパターンエンハンサプロセッサ
JPWO2017094262A1 (ja) ログ分析システム、方法およびプログラム
CN109478191B (zh) 文本挖掘方法、记录介质及文本挖掘装置
JP6453502B1 (ja) 特許調査支援方法
US20180365341A1 (en) Three-Dimensional Cad System Device, and Knowledge Management Method Used in Three-Dimensional Cad
KR102217092B1 (ko) 애플리케이션의 품질 정보 제공 방법 및 장치
US11886513B2 (en) Data analysis system, data analysis method, and computer program product
US11281458B2 (en) Evaluation of developer organizations
KR102113834B1 (ko) Pls-da를 기반으로 하는 db의 웹서비스 구현 방법
US9317125B2 (en) Searching of line pattern representations using gestures
JP6771314B2 (ja) 予測不可データ判定システム及び予測不可データ判定方法
US10891332B2 (en) Instrumentation diagram data generation device, instrumentation diagram search system, and computer readable medium
JP2020166443A (ja) データ加工方法レコメンドシステム、データ加工方法レコメンド方法、及びデータ加工方法レコメンドプログラム
US20180011911A1 (en) System and method for efficiently generating responses to queries
US10157056B2 (en) Device, method, and program for visualizing dependent portions of program
CN110020401B (zh) 对弧长的曲线积分计算方法、装置、设备及存储介质
JP2014081875A (ja) 情報処理装置及びプログラム
JP2012038022A (ja) クローン検出装置、クローン検出プログラム、及びクローン検出プログラムを記録した記録媒体
WO2023032317A1 (ja) プログラム、情報処理装置、情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161214

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: 20170627

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170712

R150 Certificate of patent or registration of utility model

Ref document number: 6178023

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees