JP6121558B2 - プログラム図作成装置、プログラム図作成方法、及びプログラム図作成プログラム - Google Patents

プログラム図作成装置、プログラム図作成方法、及びプログラム図作成プログラム Download PDF

Info

Publication number
JP6121558B2
JP6121558B2 JP2015544745A JP2015544745A JP6121558B2 JP 6121558 B2 JP6121558 B2 JP 6121558B2 JP 2015544745 A JP2015544745 A JP 2015544745A JP 2015544745 A JP2015544745 A JP 2015544745A JP 6121558 B2 JP6121558 B2 JP 6121558B2
Authority
JP
Japan
Prior art keywords
source code
module
implemented
importance
lines
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
JP2015544745A
Other languages
English (en)
Other versions
JPWO2015063954A1 (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 JPWO2015063954A1 publication Critical patent/JPWO2015063954A1/ja
Application granted granted Critical
Publication of JP6121558B2 publication Critical patent/JP6121558B2/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
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、可視化対象であるソースコード内のモジュールを自動で複数選択するプログラム図作成装置、プログラム図作成方法、及びプログラム図作成プログラムに関する。
プログラムを理解する方法として、例えばフローチャート図といったプログラム図を生成・利用して処理の流れを追う方法がある。しかし、複雑なプログラムを対象として生成したプログラム図は、プログラム全体に渡って詳細に出力され、注目する必要のないモジュールが含まれてしまう為、プログラム全体の概要を把握したい場合や特定の箇所に着目して調査したい場合に時間が掛かるという問題があった。そこで従来、例えば特許文献1では、可視化するモジュールを開発者やユーザ等が予め手動で選択しておき、選択したモジュールのみを可視化する事で、プログラム理解に特化したプログラム図を生成する方法が提案されている。
特開平5−257666号公報
しかしながら、特許文献1の方法では、開発者やユーザ等が予め可視化するモジュールをソースコード内から選択しておく必要があり、この選択作業に工数を要していた。
本発明は、上記に鑑みてなされたものであって、ソースコード内の可視化するモジュールを予め開発者やユーザ等が選択していない場合でも、可視化するモジュールを自動で選択してプログラム図を構築・表示することで、可視化工数を削減することが可能なプログラム図作成装置、プログラム図作成方法、及びプログラム図作成プログラムを提供することを目的とする。
上記課題を解決する為に、本発明にかかるプログラム図作成装置は、複数のモジュールを構成するソースコードと、前記ソースコードが関係するプロジェクトと前記ソースコードの開発または保守データとを示すリポジトリとを記憶する記憶部と、指定されたソースコードと該ソースコードに関するリポジトリとを取得し、該ソースコードが関係するプロジェクトに関わる開発者または保守者のスキルを示すスキル値を、スキル値算出式により、前記開発者または保守者ごとに算出するスキル値算出部と、算出された前記スキル値の中から前記各モジュールの実装に関わる開発者または保守者の前記スキル値を取得し、該スキル値に基づいて、前記モジュールの重要度を示すモジュール重要度を、重要度算出式により、前記モジュールごとに算出する重要度算出部と、前記モジュールごとに、前記モジュール重要度が所定の閾値以上であるか否かを判定し、前記モジュール重要度が所定の閾値以上であると判定されたモジュールを表示部に表示して可視化する可視化判定部と、を備えることを特徴とするプログラム図作成装置として構成される。
また、本発明は、上記プログラム図作成装置で行われるプログラム図作成方法、プログラム図作成プログラムとして把握される。
本発明によれば、ソースコード内の可視化するモジュールを予め開発者やユーザ等が選択していない場合でも、可視化するモジュールを自動で選択してプログラム図を構築・表示する事で、可視化工数を削減出来る。
実施例におけるハードウェア構成の一例図である。 実施例における機能ブロックの一例図である。 図2Aに示したソースコードの開発・保守データの構成例を示す図である。 実施例における開発スキル値算出利用表の一例図である。 実施例におけるモジュール重要度算出式データの一例図である。 実施例における可視化判定閾値データの一例図である。 実施例におけるモジュール別重要度データの一例図である。 実施例における開発者別開発スキルデータの一例図である。 実施例1におけるプログラム図作成フローチャートの一例図である。 実施例1における可視化判定フローの一例図である。 モジュール重要度変更に応じて可視化図が変化する一例図である。
以下、本発明によるプログラム図作成装置、プログラム図作成方法、及びプログラム図作成プログラムに関する一実施形態を、図面を用いて詳細に説明する。
本実施例1では、複数のモジュールを含む可視化対象ソースコードに対して、重要度の高いモジュールや可読性の高いモジュールのみで構成されたプログラム図を生成する方法の一例を記す。
図1は、本発明の実施例1に係る情報処理装置100のハードウェア及びシステム構成の一例を示す図である。情報処理装置100のハードウェアとして、中央処理装置101、キーボードやマウス等の入力装置102、二次記憶装置103、主記憶装置104、ディスプレイ等の表示装置105、及び通信装置107を有する。尚、各装置は、バス106によって接続され、各装置間で相互にデータの送受信が可能である。また、情報処理装置100の他に、情報処理装置やネットワークストレージといった、データを保存する事が可能な情報装置A110と情報装置B120があり、これらの間が、例えば、インターネット等の通信ネットワーク130により接続されている。
図2Aは、本発明の実施例1に係る情報処理装置100、情報装置A110、及び情報装置B120の機能ブロックの一例を示す図である。尚、本実施例においては、情報処理装置100の機能ブロックの全てが中央処理装置101によって実行または操作されるソフトウェアプログラムやデータであるものとして説明するが、一部または全ては、ハードウェアとして実現されても良い。また、本来は、これらの機能ブロックに加え、各機能ブロックの起動や管理等を行うOS(Operating System)や制御プログラム等が存在するが、本実施例では、これらの機能ブロックの連携動作を適宜説明することとし、OSや制御プログラムがここで適宜説明された連携動作に必要となる機能ブロックの起動や動作管理を行う事は自明であるので、これらのOSや制御プログラムについては説明及び記載を省略する。
さて、本発明の実施例1に係る情報処理装置100は、機能ブロックとして、図2Aに示すように、ソースコード取得部200、リポジトリ取得部201、データ解析部202、可視化判定部203、描画指示部204、プログラム図作成制御部205、開発スキル値算出利用表212、モジュール重要度算出式データ213、可視化判定閾値データ214、モジュール別重要度データ215、及び開発者別開発スキルデータ216を有する。情報装置A110は、様々な複数のソースコードの集合であるソースコード群206、ソースコードA207を有する。ソースコードA207は、モジュールという単位の部分的プログラムで構成されている。情報装置B120は、ソースコードA207が関係するプロジェクト全体または一部の開発・保守データの集合であるリポジトリ208、及びソースコードA207の開発・保守データ209を有する。尚、ソースコード群206、ソースコードA207、ソースコードA207が関係するプロジェクト全体または一部の開発・保守データの集合であるリポジトリ208、及びソースコードA207の開発・保守データ209は必ずしも上述の場所にある必要はなく、情報処理装置100、情報装置A110、及び情報装置B120のいずれに格納されていても良い。
図2Bに、ソースコードA207の開発・保守データ209の構成例を示す。図2Bに示すように、ソースコードA207の開発・保守データ209は、ソースコードを識別するためのソースコード名と、そのソースコードに含まれるモジュール名と、そのモジュールの開発者名と、そのモジュールのステップ数およびバグ数と、そのモジュールのメンテナンス者名とが対応付けて記憶されている。図2Bでは、例えば、ソースコードA207にはモジュールB1等の複数のモジュールによって構成され、モジュールB1については、開発者(開発時の実装者)が「日立太郎」であり、そのモジュールのステップ数(総実装行数)が1500ステップ、バグ数(B票数)が30箇所であり、メンテナンス時の実装者である「日立花子」によってメンテナンスされたことを示している。これらの情報の他に、メンテナンス者がメンテナンスしたモジュールのステップ数やバグ数が同様に記憶され、開発者やメンテナンス者が犯したコード規約違反数等の情報も記憶されている。また、ソースコード207Aには、そのソースコードが関係するプロジェクトが対応付けて記憶されている。したがって、この開発・保守データ209を参照すれば、どのプロジェクトのどのソースコードが誰によって開発され、またはメンテナンスされたのか、さらにはどのような精度によって開発またはメンテナンスされたのかがわかる。
図3に、開発スキル値算出利用表212の一例を示す。開発スキル値算出利用表212には、個人のプログラム開発スキルレベルを意味する、開発スキル項目と、左記項目の値を算出する式を格納する。開発スキル項目として、本例では、バグ作成率の逆数(x1)、コード規約違反率の逆数(x2)、補正バグ作成率の逆数(x3)、及び補正コード規約違反率の逆数(x4)を挙げており、これら開発スキル項目の値は後述するモジュール重要度算出で利用する。開発スキルが高い開発者は、プログラム内の重要なモジュールを実装する傾向が高い為、開発スキルに着目する事で重要なモジュールの抽出が可能となる。
開発スキル値の算出では、メトリクス等の開発者が実装したソースコードから得られる情報の他に、例えば、開発者が作ったバグ数や開発者が犯したコード規約違反数といった、リポジトリに格納されている開発・保守データから得られる情報を利用する。バグ作成率は、開発・保守データの一つである開発者の作成バグ数(B票数)を、同じく開発・保守データの一つである開発者の実装総行数(総実装行数)で除算して算出する。コード規約違反率は、開発・保守データの一つである開発者のコード規約違反数を、同じく開発・保守データの一つである開発者の実装総行数(総実装行数)で除算して算出する。補正バグ作成率は、開発・保守データの一つである開発者の作成バグ数(B票数)を、同じく開発・保守データの一つである開発者の実装総行数(総実装行数)と、実装したソースコードの循環的複雑度で除算して算出する。
一般的に、作成するプログラムの難易度が高ければ実装行当たりのバグ数が増え、逆に低ければ実装行当たりのバグ数が減る為、開発者の実装行当たりのバグ作成数を、構造的なプログラム作成難易度とほぼ同じ意味を持つ、該実装ソースコード部の循環的複雑度で割る事で、プログラム作成難易度の影響を除去し、バグ作成率を補正する事が出来る。補正コード規約違反率は、開発・保守データの一つである開発者のコード規約違反数を、同じく開発・保守データの一つである開発者の実装総行数(総実装行数)と、実装したソースコードの循環的複雑度で除算して算出する。バグ作成率と同様に、一般的に、作成するプログラムの難易度が高ければ実装行当たりのコード規約違反数が増え、逆に低ければ実装行当たりのコード規約違反数が減る為、開発者の実装行当たりのコード規約違反数を、構造的なプログラム作成難易度とほぼ同じ意味を持つ、該実装ソースコード部の循環的複雑度で割る事で、プログラム作成難易度の影響を除去し、コード規約違反率を補正する事が出来る。バグ作成率、コード規約違反率、補正バグ作成率、及び補正コード規約違反率に関して、値が低い程プログラム開発スキルが高い事を意味する為、これらの値の逆数を取り、開発スキル項目としている。
尚、無論、開発スキル項目、利用するリポジトリ内の開発・保守データ、及び開発スキル項目の値算出で利用する計算式はいずれも上記で述べたものに限定される事はない。考え得る開発スキル項目やその項目値の算出に利用可能なものであれば、いずれも利用可能である。例えば、開発スキル項目値の算出で利用可能なリポジトリ内開発・保守データとして、バグ数、コード規約違反数、実装行数の他に、実装期間、コミット回数、レビュー回数、レビュアとして活躍した回数、作成ドキュメント数、コミットを許可された数等、の利用が考えられる。例えば、ソース実装行数を該ソースの実装期間で除算すると、開発速度という開発スキル項目として利用出来る。更に、例えば、前述の補正バグ作成率や補正コード規約違反率と同様の考えで、ソース実装行数を該ソース実装期間で除算し、実装ソース部の循環的複雑度で乗算する事で、プログラム作成難易度の影響を除去した、補正開発速度という開発スキル項目として利用出来る。また、例えば、ある実装期間において、同時に実装しているソースコードの数は、並行実装ソース数という開発スキル項目として利用出来る。尚、前述した、補正バグ作成率、補正コード規約違反率、及び補正開発速度といった、循環的複雑度を用いた開発スキル値の算出では、本実施例で述べたように、循環的複雑度の値をそのまま用いるだけでなく、循環的複雑度の値を元に四則演算で算出した結果を開発スキル値算出で用いる事も考えられる。
図4に、モジュール重要度算出式データ213の一例を示す。モジュール重要度算出式データ213には、モジュールの可視化判定で利用するモジュール重要度を算出する式の情報が格納される。モジュール重要度1(z1)として、該モジュール初期実装者のバグ作成率の逆数(x1)を、モジュール重要度2(z2)として、該モジュール初期実装者の補正コード規約違反率の逆数(x4)を、モジュール重要度3(z3)として、モジュールを実装した開発者の実装割合(該開発者のモジュール実装数をモジュールの総行数で除算した算出結果)と、補正バグ作成率の逆数(x3)を互いに乗算する計算を、モジュールを実装した全ての開発者に対して行い、それら全ての算出結果値を加算するという算出式を挙げている。
図4では、モジュール重要度算出式データ213として上記の式を挙げたが、式中に登場する、x1、x3、及びx4は、開発スキル値算出利用表212に記載された開発スキル項目のいずれでも適宜代替利用可能である。モジュール重要度1(z1)、モジュール重要度2(z2)、及びモジュール重要度3(z3)に共通する事は、バグ作成率、コード規約違反率、補正バグ作成率、補正コード規約違反率が低いような、プログラム開発スキルの高い人がモジュールを実装すれば、モジュールの重要度を示す算出結果値が高くなるという事である。これは、プログラム開発スキルの高い人は、プログラムの中で重要なモジュールの実装を担当する傾向がある事に基づいている。尚、モジュール重要度算出式として、上記に限らず、開発スキル値算出利用表212に記載される開発スキル項目の値を用いた様々な式の利用が考えられる。無論、モジュール重要度に関する算出式は一つとは限らず、図4に示すように、複数存在する事が考えられる。
なお、図4では代表的な例について示しているが、モジュールの初期実装者が実装したソース行数に対するバグの数を、実装したソースの循環的複雑度で除算した値の逆数、該モジュール初期実装者が実装したソース行数に対するコード規約違反数を、実装したソースの循環的複雑度で除算した値の逆数、モジュールの初期実装者があるソースを実装している期間に同時に実装しているソース数、モジュールの初期実装者が行ったソース実装期間に対する実装ソース行数、モジュールの初期実装者が行ったソース実装期間に対する該実装ソース行数を、実装したソースの循環的複雑度で乗算した値、またはモジュールの総行数に対する実装者のモジュール実装行数で示されるモジュール実装寄与率に対して、実装者の開発スキル値を乗算する計算を、全ての該モジュールの実装者に対して行い、それら全ての値を足した結果、をモジュール重要度として、可視化判定部203が、モジュール重要度と可視化判定閾値データから取得したモジュール重要度の閾値またはプログラム図利用者の開発スキルを元に計算したモジュール重要度の閾値とを比較し、前者の方が後者より大きい場合に可視化し、小さい場合に可視化しないと判定してもよい。
図5に、可視化判定閾値データ214の一例を示す。可視化判定閾値データ214には、ソースコード内にあるモジュールの可視化判定を行う際に利用する、判定項目に関する様々な閾値が格納される。ここでは、モジュール重要度1(z1)、モジュール重要度2(z2)及びモジュール重要度3(z3)を挙げた。この際の閾値として、固定値を利用する方法や、可視化したプログラム図を見る人のプログラム開発スキルに応じて可変値を用いる方法が考えられる。固定値の場合は、予め、値を可視化判定閾値データ214に入力しておく必要がある。また、可視化したプログラム図を見る人のプログラム開発スキルに応じて閾値を変更する場合は、モジュールの可視化判定までに閾値を算出して設定する必要がある。後者に関しては後で詳述する。
図6に、モジュール別重要度データ215の一例を示す。モジュール別重要度データ215には、プログラムの各モジュールに対して算出したモジュール重要度が格納される。本例では、モジュール重要度1(z1)、モジュール重要度2(z2)、及びモジュール重要度3(z3)の項目に関して、可視化対象ソースコード内モジュールである、モジュールA、モジュールB、及びモジュールCに対するモジュール重要度が記載されている。後述するが、モジュール別重要度データ215は、二度目以降のプログラム図作成を高速化する為に用いる。
図7に、開発者別開発スキルデータ216の一例を示す。開発者別開発スキルデータ216には、可視化対象ソースコードが関係する開発プロジェクトに関わる全開発者に対し、開発スキル値算出利用表212に記載されている開発スキル項目と、左記項目の算出結果値が格納される。
図8に、情報処理装置100でソースコードA207を可視化する際の一例であるフローチャートを示す。
処理800:プログラム図作成制御部205が、プログラム図作成を開始する。本実施例1ではプログラム図としてプログラム内のモジュールを全て可視化せず、重要なモジュールのみで構成されたプログラム図を作成する例を示す。
処理801:入力装置102を用いて、本シーケンスにより作成するプログラム図の主利用者、ソースコード群206の中から可視化するソースコード、及び該ソースコード用リポジトリを、ユーザが指定する。例えば、本システムにネットワーク接続されたクライアント端末の入力部がその指定の入力を受け付ける。本実施例では可視化ソースコードとしてソースコードA207、及び該ソースコード用リポジトリとしてレポジトリ208を指定する。この際、主利用者名、可視化ソースコードや該ソースコード用レポジトリは、本処理801のようにユーザが入力せずとも、予め指定しておいても良い。
処理802:ソースコード取得部200が、通信装置107を介し、ソースコード群206の中から、可視化対象であるソースコードA207を取得する。また、同時に、リポジトリ取得部201が、通信装置107を介し、リポジトリ208を取得した上で、リポジトリ208内に格納されている該ソースコードA207の開発・保守データ209を取得する。もしソースコード群206やリポジトリ208が巨大で、ソースコードA207や開発・保守データ209の検索に時間が掛かりそうな場合には、ユーザ指示により、予め、使いそうなファイルを、例えば情報処理装置100といった高速な検索が可能となる場所へ移動またはコピーしておく事も考えられる。
処理803:データ解析部202が、処理802で取得したリポジトリ208に格納されている、様々なソースコードに関する開発・保守データを活用して、リポジトリに格納されている様々なソースコードを実装した全ての実装者のプログラム開発スキルを、開発スキル値算出利用表212に記載された計算式を利用して算出し、左記の算出結果を、開発者毎に、開発者別開発スキルデータ216へ格納する。この際、処理801にて入力されたプログラム図の主利用者名から、もし、プログラム図の主利用者はリポジトリに格納されているソースコード実装者の内の一人である事が判明した場合、モジュール重要度算出式データ213を用いて、該主利用者の開発スキルを利用したモジュール重要度を算出し、可視化判定閾値データ214の閾値として利用する事が考えられる。
処理804:プログラム図作成制御部205が、処理802で取得したソースコードA207に含まれる、まだ解析していないモジュールの内、一つのモジュールを可視化判定対象モジュールとして取得する。また、データ解析部202が、処理802で取得した該ソースコードA207の開発・保守データ209から、取得した可視化判定対象モジュールの実装者名を取得し、それら全実装者のプログラム開発スキルを、開発者別開発スキルデータ216から取得する。
処理805:可視化判定部203が、処理804で取得したモジュールを可視化するか否かを判定する。判定が真であれば、処理806へ進む。判定が偽であれば、処理807へ進む。尚、本処理内容は後に詳述する。
処理806:描画指示部204が、該モジュールを表示する。
処理807:描画指示部204が、該モジュールを非表示にする。
処理808:プログラム図作成制御部205が、処理802で取得したソースコードA207にまだ解析していないモジュールがあるか否かを判定する。解析していない処理がある場合は、処理804へ進む。解析していない処理がない場合は、処理809へ進む。
処理809:プログラム図作成制御部205が、プログラム図作成を終了する。
処理805の可視化モジュール判定方法に関して、本例では、重要なモジュールを可視化モジュールとして抽出する方法を図9に示す。
処理900:データ解析部202が、処理804で取得した、可視化判定対象モジュール実装者のプログラム開発スキルを利用して、モジュール重要度を算出する。この際のモジュール重要度は、モジュール重要度算出式データ213の中から算出式を一つ選択して、算出する。算出式の選択方法は、最も利用頻度の高いものを選ぶといった方法や、ユーザが選ぶといった方法等、複数の方法が考えられるが、左記に限定されない。本例では、モジュール重要度算出式データ213の中から、モジュール重要度3(z3)を選択した場合を述べる。データ解析部202は、開発者別開発スキルデータ216から、モジュール実装者らの補正バグ作成率の逆数(x3)を、また、ソースコードAの開発・保守データ209から、可視化判定対象モジュールに対するモジュール実装者毎の実装行数、及び可視化判定対象モジュールの総行数を取得し、モジュール重要度3(z3)を算出する。モジュール重要度3(z3)では、実装者らの開発スキル、及び実装寄与度(例えば、モジュールの総行数に対する実装者のモジュール実装行数)に基づきモジュール重要度を算出する。算出したモジュール重要度はモジュール別重要度データ215に格納しておき、後述するように、この後、重要度変更を行い適宜図を作り替える際に利用する。
処理901:可視化判定部203が、可視化判定閾値データ214からモジュール重要度3(z3)の閾値を取得、または処理803で述べたように、処理801にて入力されたプログラム図利用者の開発スキルを元にモジュール重要度3(z3)の閾値を計算、し、処理900で算出したモジュール重要度3(z3)が、左記の閾値以上か否かを判定する。判定が真であれば、処理806へ進む。判定が偽であれば、処理807へ進む。
本実施例の効果として、上述した特許文献1の可視化方法に存在した課題、すなわち開発者やユーザ等が予め可視化する処理を選択しておく必要があり、可視化の工数が掛かるという課題を解決し、ソースコード内の可視化する処理やモジュールを予め開発者やユーザ等が選択していない場合でも、モジュール実装者のプログラム開発者スキルを利用してモジュール重要度を算出する事で、可視化モジュールを自動で抽出してプログラム図を構築・表示する事で、可視化工数を削減出来る。
本実施例のように一度プログラム図を作成すると、以降、該プログラム図と同時に表示されるモジュール重要度の閾値スライダーを調整して、表示するモジュールの重要度閾値を変更する事で、適宜、プログラム図を容易に作り替える事が出来る。これを、図10を用いて説明する。
処理901で、可視化判定閾値データ214に記載されたモジュール重要度3(z3)の閾値または処理801にて入力されたプログラム図利用者の開発スキルを元に計算したモジュール重要度3(z3)の閾値と、処理900にてモジュール重要度算出式データ213に記載されたモジュール重要度3(z3)の算出式を用いて算出したモジュール重要度とを比較し、モジュール重要度10以上のモジュールのみを可視化すると、図10の上図のようなプログラム図が表示される。この後、改めてユーザがモジュール重要度80以上のモジュールで構成されたプログラム図を作成したいと考え、画面に表示されているモジュール重要度スライダを調整して、重要度を10から80に変更した場合は、前回、算出したモジュール重要度3(z3)の値を、処理900にてモジュール別重要度データ215に格納した事で、既に算出結果を保持している為、今回は、処理900で行うモジュール重要度の算出を省略してモジュール別重要度データ215に格納された値を利用、また処理901で利用する閾値としてユーザが重要度の閾値スライダーで設定したモジュール重要度の閾値を利用する事で、容易に図10下図を構築出来る。
以上のように、本発明にかかるプログラム図作成装置、プログラム図作成方法、及びプログラム図作成プログラムは、組込装置等、ソフトウェアが動作する差様々な装置に適用することができる。
100 情報処理装置
101 中央処理装置
102 入力装置
103 二次記憶装置
104 主記憶装置
105 表示装置
106 バス
107 通信装置
110 情報装置A
120 情報装置B
130 通信ネットワーク
200 ソースコード取得部
201 リポジトリ取得部
202 データ解析部
203 可視化判定部
204 描画指示部
205 プログラム図作成制御部
206 ソースコード群
207 ソースコードA
208 リポジトリ
209 ソースコードAの開発・保守データ
212 開発スキル値算出利用表
213 モジュール重要度算出式データ
214 可視化判定閾値データ
215 モジュール別重要度データ
216 開発者別開発スキルデータ。

Claims (12)

  1. 複数のモジュールを構成するソースコードと、前記ソースコードが関係するプロジェクトと前記ソースコードの開発または保守データとを示すリポジトリとを記憶する記憶部と、
    指定されたソースコードと該ソースコードに関するリポジトリとを取得し、該ソースコードが関係するプロジェクトに関わる開発者または保守者のスキルを示すスキル値を、スキル値算出式により、前記開発者または保守者ごとに算出するスキル値算出部と、
    算出された前記スキル値の中から前記各モジュールの実装に関わる開発者または保守者の前記スキル値を取得し、該スキル値に基づいて、前記モジュールの重要度を示すモジュール重要度を、重要度算出式により、前記モジュールごとに算出する重要度算出部と、
    前記モジュールごとに、前記モジュール重要度が所定の閾値以上であるか否かを判定し、前記モジュール重要度が所定の閾値以上であると判定されたモジュールを表示部に表示して可視化する可視化判定部と、
    を備えることを特徴とするプログラム図作成装置。
  2. 前記スキル値算出部は、前記スキル値算出式により、
    (a)実装総行数に対するバグ数の逆数
    (b)実装総行数に対するコード規約違反数の逆数
    (c)実装総行数に対するバグ数を、実装したソースコードの循環的複雑度で除算した値の逆数
    (d)実装総行数に対するコード規約違反数を、実装したソースコードの循環的複雑度で除算した値の逆数
    (e)ソースコードの実装期間に対する実装行数、
    (f)ソースコードの実装期間に対する実装行数を、実装したソースコードの循環的複雑度で乗算した値、及び、
    (g)ソースコードの実装期間において、同時に実装されたソースコードの数、
    を前記スキル値として算出する、
    ことを特徴とする請求項1記載のプログラム図作成装置。
  3. 前記スキル値算出部は、前記プログラム図作成装置の利用者の前記スキル値を前記スキル値算出式により算出し、前記プログラム図作成装置の利用者のスキル値に基づいて算出された前記モジュール重要度を算出閾値として設定し、
    前記可視化判定部は、前記重要度算出部が算出した前記モジュール重要度が前記算出閾値以上であるか否かを判定し、前記モジュール重要度が前記算出閾値以上であると判定した場合に可視化する、
    ことを特徴とする請求項1記載のプログラム図作成装置。
  4. 前記重要度算出部は
    (A)前記ソースコードに含まれるモジュールの初期実装者が実装した実装行数に対するバグ数の逆数
    (B)前記ソースコードに含まれるモジュールの初期実装者が実装した実装行数に対するコード規約違反数の逆数
    (C)前記ソースコードに含まれるモジュールの初期実装者が実装した実装行数に対するバグ数を、実装したソースコードの循環的複雑度で除算した値の逆数
    (D)前記ソースコードに含まれるモジュールの初期実装者が実装した実装行数に対するコード規約違反数を、実装したソースコードの循環的複雑度で除算した値の逆数
    (E)前記ソースコードに含まれるモジュールの初期実装者がソースコードの実装期間に同時に実装しているソースコードの数、
    (F)前記ソースコードに含まれるモジュールの初期実装者が行ったソースコードの実装期間に対する実装行数、
    (G)前記ソースコードに含まれるモジュールの初期実装者が行ったソースコードの実装期間に対する実装行数を、実装したソースコードの循環的複雑度で乗算した値、または、
    (H)前記ソースコードに含まれるモジュールの総実装行数に対する該ソースコードに含まれるモジュールの初期実装者が実装した該モジュールの実装行数で示されるモジュール実装寄与率に対して、前記モジュールの実装者の前記スキル値を乗算する計算を、全ての前記モジュールの実装者に対して行い、それら全ての値を足した結果
    を前記モジュール重要度として算出し、
    前記可視化判定部が、前記モジュール重要度が前記算出閾値以上であるか否かを判定し、前記モジュール重要度が前記算出閾値以上であると判定した場合に可視化する、
    ことを特徴とする請求項3記載のプログラム図作成装置。
  5. 複数のモジュールを構成するソースコードと、前記ソースコードが関係するプロジェクトと前記ソースコードの開発または保守データとを示すリポジトリとを記憶する記憶部を有したプログラム図作成装置で行われるプログラム図作成方法であって、
    指定されたソースコードと該ソースコードに関するリポジトリとを取得し、該ソースコードが関係するプロジェクトに関わる開発者または保守者のスキルを示すスキル値を、スキル値算出式により、前記開発者または保守者ごとに算出するスキル値算出ステップと、
    算出された前記スキル値の中から前記各モジュールの実装に関わる開発者または保守者の前記スキル値を取得し、該スキル値に基づいて、前記モジュールの重要度を示すモジュール重要度を、重要度算出式により、前記モジュールごとに算出する重要度算出ステップと、
    前記モジュールごとに、前記モジュール重要度が所定の閾値以上であるか否かを判定し、前記モジュール重要度が所定の閾値以上であると判定されたモジュールを表示部に表示して可視化する可視化判定ステップと、
    を含むことを特徴とするプログラム図作成方法。
  6. 前記スキル値算出ステップでは、前記スキル値算出式により、
    (a)実装総行数に対するバグ数の逆数
    (b)実装総行数に対するコード規約違反数の逆数
    (c)実装総行数に対するバグ数を、実装したソースコードの循環的複雑度で除算した値の逆数
    (d)実装総行数に対するコード規約違反数を、実装したソースコードの循環的複雑度で除算した値の逆数
    (e)ソースコードの実装期間に対する実装行数、
    (f)ソースコードの実装期間に対する実装行数を、実装したソースコードの循環的複雑度で乗算した値、及び、
    (g)ソースコードの実装期間において、同時に実装されたソースコードの数、
    を前記スキル値として算出する、
    ことを特徴とする請求項5記載のプログラム図作成方法。
  7. 前記スキル値算出ステップでは、前記プログラム図作成装置の利用者の前記スキル値を前記スキル値算出式により算出し、前記プログラム図作成装置の利用者のスキル値に基づいて算出された前記モジュール重要度を算出閾値として設定し、
    前記可視化判定ステップでは、前記重要度算出ステップで算出した前記モジュール重要度が前記算出閾値以上であるか否かを判定し、前記モジュール重要度が前記算出閾値以上であると判定した場合に可視化する、
    ことを特徴とする請求項5記載のプログラム図作成方法。
  8. 前記重要度算出ステップでは
    (A)前記ソースコードに含まれるモジュールの初期実装者が実装した実装行数に対するバグ数の逆数
    (B)前記ソースコードに含まれるモジュールの初期実装者が実装した実装行数に対するコード規約違反数の逆数
    (C)前記ソースコードに含まれるモジュールの初期実装者が実装した実装行数に対するバグ数を、実装したソースコードの循環的複雑度で除算した値の逆数
    (D)前記ソースコードに含まれるモジュールの初期実装者が実装した実装行数に対するコード規約違反数を、実装したソースコードの循環的複雑度で除算した値の逆数
    (E)前記ソースコードに含まれるモジュールの初期実装者がソースコードの実装期間に同時に実装しているソースコードの数、
    (F)前記ソースコードに含まれるモジュールの初期実装者が行ったソースコードの実装期間に対する実装行数、
    (G)前記ソースコードに含まれるモジュールの初期実装者が行ったソースコードの実装期間に対する実装行数を、実装したソースコードの循環的複雑度で乗算した値、または、
    (H)前記ソースコードに含まれるモジュールの総実装行数に対する該ソースコードに含まれるモジュールの初期実装者が実装した該モジュールの実装行数で示されるモジュール実装寄与率に対して、前記モジュールの実装者の前記スキル値を乗算する計算を、全ての前記モジュールの実装者に対して行い、それら全ての値を足した結果
    を前記モジュール重要度として算出し、
    前記可視化判定ステップでは、前記モジュール重要度が前記算出閾値以上であるか否かを判定し、前記モジュール重要度が前記算出閾値以上であると判定した場合に可視化する、
    ことを特徴とする請求項7記載のプログラム図作成方法。
  9. 複数のモジュールを構成するソースコードと、前記ソースコードが関係するプロジェクトと前記ソースコードの開発または保守データとを示すリポジトリとを記憶する記憶部を有したコンピュータに、
    指定されたソースコードと該ソースコードに関するリポジトリとを取得し、該ソースコードが関係するプロジェクトに関わる開発者または保守者のスキルを示すスキル値を、スキル値算出式により、前記開発者または保守者ごとに算出するスキル値算出ステップと、
    算出された前記スキル値の中から前記各モジュールの実装に関わる開発者または保守者の前記スキル値を取得し、該スキル値に基づいて、前記モジュールの重要度を示すモジュール重要度を、重要度算出式により、前記モジュールごとに算出する重要度算出ステップと、
    前記モジュールごとに、前記モジュール重要度が所定の閾値以上であるか否かを判定し、前記モジュール重要度が所定の閾値以上であると判定されたモジュールを表示部に表示して可視化する可視化判定ステップと、
    を実行させることを特徴とするプログラム図作成プログラム。
  10. 前記スキル値算出ステップでは、前記スキル値算出式により、
    (a)実装総行数に対するバグ数の逆数
    (b)実装総行数に対するコード規約違反数の逆数
    (c)実装総行数に対するバグ数を、実装したソースコードの循環的複雑度で除算した値の逆数
    (d)実装総行数に対するコード規約違反数を、実装したソースコードの循環的複雑度で除算した値の逆数
    (e)ソースコードの実装期間に対する実装行数、
    (f)ソースコードの実装期間に対する実装行数を、実装したソースコードの循環的複雑度で乗算した値、及び、
    (g)ソースコードの実装期間において、同時に実装されたソースコードの数、
    を前記スキル値として算出する、
    ことを特徴とする請求項9記載のプログラム図作成プログラム。
  11. 前記スキル値算出ステップでは、前記コンピュータの利用者の前記スキル値を前記スキル値算出式により算出し、前記コンピュータの利用者のスキル値に基づいて算出された前記モジュール重要度を算出閾値として設定し、
    前記可視化判定ステップでは、前記重要度算出ステップで算出した前記モジュール重要度が前記算出閾値以上であるか否かを判定し、前記モジュール重要度が前記算出閾値以上であると判定した場合に可視化する、
    ことを特徴とする請求項9記載のプログラム図作成プログラム。
  12. 前記重要度算出ステップでは
    (A)前記ソースコードに含まれるモジュールの初期実装者が実装した実装行数に対するバグ数の逆数
    (B)前記ソースコードに含まれるモジュールの初期実装者が実装した実装行数に対するコード規約違反数の逆数
    (C)前記ソースコードに含まれるモジュールの初期実装者が実装した実装行数に対するバグ数を、実装したソースコードの循環的複雑度で除算した値の逆数
    (D)前記ソースコードに含まれるモジュールの初期実装者が実装した実装行数に対するコード規約違反数を、実装したソースコードの循環的複雑度で除算した値の逆数
    (E)前記ソースコードに含まれるモジュールの初期実装者がソースコードの実装期間に同時に実装しているソースコードの数、
    (F)前記ソースコードに含まれるモジュールの初期実装者が行ったソースコードの実装期間に対する実装行数、
    (G)前記ソースコードに含まれるモジュールの初期実装者が行ったソースコードの実装期間に対する実装行数を、実装したソースコードの循環的複雑度で乗算した値、または、
    (H)前記ソースコードに含まれるモジュールの総実装行数に対する該ソースコードに含まれるモジュールの初期実装者が実装した該モジュールの実装行数で示されるモジュール実装寄与率に対して、前記モジュールの実装者の前記値を乗算する計算を、全ての前記モジュールの実装者に対して行い、それら全ての値を足した結果
    を前記モジュール重要度として算出し、
    前記可視化判定ステップでは、前記モジュール重要度が前記算出閾値以上であるか否かを判定し、前記モジュール重要度が前記算出閾値以上であると判定した場合に可視化する、
    ことを特徴とする請求項11記載のプログラム図作成プログラム。
JP2015544745A 2013-11-01 2013-11-01 プログラム図作成装置、プログラム図作成方法、及びプログラム図作成プログラム Expired - Fee Related JP6121558B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/079792 WO2015063954A1 (ja) 2013-11-01 2013-11-01 プログラム図作成装置、プログラム図作成方法、及びプログラム図作成プログラム

Publications (2)

Publication Number Publication Date
JPWO2015063954A1 JPWO2015063954A1 (ja) 2017-03-09
JP6121558B2 true JP6121558B2 (ja) 2017-04-26

Family

ID=53003593

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015544745A Expired - Fee Related JP6121558B2 (ja) 2013-11-01 2013-11-01 プログラム図作成装置、プログラム図作成方法、及びプログラム図作成プログラム

Country Status (2)

Country Link
JP (1) JP6121558B2 (ja)
WO (1) WO2015063954A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6356274B2 (ja) * 2015-06-26 2018-07-11 株式会社日立製作所 モジュール再利用判定装置、モジュール再利用判定方法、及びモジュール再利用判定プログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004038490A (ja) * 2002-07-02 2004-02-05 Hitachi Kokusai Electric Inc 開発分類別プログラムステップ測定方式
JP2008293486A (ja) * 2007-04-25 2008-12-04 Hitachi Ltd ソースコード解析機器、解析プログラムおよび解析方法

Also Published As

Publication number Publication date
WO2015063954A1 (ja) 2015-05-07
JPWO2015063954A1 (ja) 2017-03-09

Similar Documents

Publication Publication Date Title
JP2017142800A5 (ja)
CN109388376B (zh) 软件开发风险评估方法、装置、设备及可读存储介质
JP6253521B2 (ja) プログラム可視化装置、プログラム可視化方法、及びプログラム可視化プログラム
US20200313994A1 (en) Automated analysis and recommendations for highly performant single page web applications
US20160062871A1 (en) Program information generating system, method, and computer program product
EP3531285A2 (en) Ace: assurance, composed and explained
US11119899B2 (en) Determining potential test actions
US20160063744A1 (en) Data Quality Test and Report Creation System
JP6121558B2 (ja) プログラム図作成装置、プログラム図作成方法、及びプログラム図作成プログラム
CN109388385B (zh) 用于应用开发的方法和装置
JP2018133044A (ja) WebAPI実行フロー生成装置およびWebAPI実行フロー生成方法
JPWO2020085374A1 (ja) 熟練指数提供装置、熟練指数提供方法、及びプログラム
JP6157166B2 (ja) 部品生成システムおよび方法ならびにプログラム
CN108880835A (zh) 数据分析方法及装置、计算机存储介质
CN113238967A (zh) 测试案例的生成方法及装置
WO2021055239A1 (en) Method for automated code reviewer recommendation
CN108268347B (zh) 一种物理设备性能测试方法及装置
JP6088445B2 (ja) ソフトウェア規模演算装置およびプログラム
JP2021039394A (ja) 情報処理システム、情報処理方法、開発装置、および開発装置用のプログラム
JP5600826B1 (ja) 非構造化データ処理システム、非構造化データ処理方法およびプログラム
CN109800332A (zh) 处理字段名的方法、装置、计算机存储介质及终端
WO2019103775A1 (en) Method and apparatus for automated suggestion of additional sensors or inputs from equipment or systems
KR101273374B1 (ko) 플러그 인 기반의 시뮬레이션 워크플로우 실행 시스템 및 방법
CN112579925B (zh) 舆情数据可视化方法、装置、计算机设备及可读存储介质
US20170220339A1 (en) Device, method, and program for visualizing dependent portions of program

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170201

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170329

R150 Certificate of patent or registration of utility model

Ref document number: 6121558

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees