JP6310865B2 - Source code evaluation system and method - Google Patents
Source code evaluation system and method Download PDFInfo
- Publication number
- JP6310865B2 JP6310865B2 JP2015016323A JP2015016323A JP6310865B2 JP 6310865 B2 JP6310865 B2 JP 6310865B2 JP 2015016323 A JP2015016323 A JP 2015016323A JP 2015016323 A JP2015016323 A JP 2015016323A JP 6310865 B2 JP6310865 B2 JP 6310865B2
- Authority
- JP
- Japan
- Prior art keywords
- source code
- pattern
- metrics
- refactoring
- evaluation system
- 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
Landscapes
- Stored Programmes (AREA)
Description
本発明は、エンタープライズシステム(業務システム)の評価に関する。その中でも、アプリケーションの保守性向上のためのソースコード評価に関する。 The present invention relates to evaluation of enterprise systems (business systems). Among them, it relates to source code evaluation for improving maintainability of applications.
エンタープライズシステムのアプリケーションは場当たり的な機能追加によって時間経過と共にソースコードが複雑化することがある。複雑化するとシステムに機能追加・修正を行う際作業者は不良を入れ込みやすくなってしまう。この不良を入れ込みやすくなるソースコードの構造を「アンチパターン」という。アンチパターンはプログラミングの文法には問題なくコンパイルは通る。 Enterprise system applications may become complicated over time due to the addition of ad hoc functions. When it becomes complicated, it becomes easy for an operator to introduce defects when adding or correcting functions in the system. The structure of the source code that makes it easy to insert defects is called “anti-pattern”. The anti-pattern compiles without any problem in the programming grammar.
しかし、可読性・保守性が悪化し、作業者がソースコードに書かれている処理フローの理解を間違えたり、機能追加・修正の作業の抜け漏れを誘発するよう構造になっている。アンチパターンはすぐにはシステム障害を引き起こしはしないが、放置すると後のシステム障害の原因になりうる。 However, readability and maintainability deteriorate, and the structure is such that the operator may make a mistake in understanding the processing flow written in the source code, or induce omission of work for adding or correcting functions. Anti-patterns do not cause system failures immediately, but if left unchecked, they can cause system failures later.
アンチパターンには特徴によって知られているものだけでも数十種類存在する。例えば、「1メソッドが長すぎる」アンチパターンや、「引数が多すぎる」アンチパターンなどである。これら特徴に分類したアンチパターンそれぞれを「アンチパターン因子」と呼ぶ。 There are dozens of anti-patterns that are known only for their characteristics. For example, an anti-pattern “one method is too long” or an anti-pattern “too many arguments”. Each anti-pattern classified into these features is called an “anti-pattern factor”.
ソースコードに存在するアンチパターン因子を修正することをリファクタリングという。リファクタリング作業は大量のソースコードを読み、アンチパターン因子を抽出し、アンチパターン因子の特徴に合った方法でリファクタリングを行う。これは多大な工数がかかるだけでなく、リファクタリング作業者に高いスキルが必要である。 Modifying the anti-pattern factor that exists in the source code is called refactoring. In the refactoring work, a large amount of source code is read, anti-pattern factors are extracted, and refactoring is performed according to the characteristics of the anti-pattern factors. This not only takes a lot of man-hours, but also requires high skills for refactoring workers.
そこで、ソースコードに存在するアンチパターン因子の特徴を自動的に抽出し、少ない工数でアンチパターン抽出・リファクタリング作業を行う技術の研究がなされている。例えば特許文献1や2ではサイクロマティック複雑度やコード行数といった、ソースコードの複雑度を定量的に評価するメトリクスを利用し、その計測結果から複雑度の高いモジュールを抽出・提示している。さらにその複雑度の度合いや複雑性に起因するコストによってリファクタリングの優先度を提示する。
Therefore, research on a technique for automatically extracting features of anti-pattern factors existing in source code and performing anti-pattern extraction / refactoring operations with a small number of man-hours has been conducted. For example,
上記の特許文献においては、複雑化されたソースコードへの対応が困難な場合が多い。ここで、ソースコードが複雑な理由は大きく二つある。一つは処理フローそのものが複雑で、ソースコードの構造が複雑にならざるを得ないもの。もう一つは運用開始当初は単純な構造のソースコードであったが、場当たり的な機能追加を繰り返してきたため複雑な構造になったものがある。前者はリファクタリングの必要はなく、後者はリファクタリングの必要がある。 In the above patent documents, it is often difficult to deal with complicated source code. Here, there are two main reasons why the source code is complicated. One is that the processing flow itself is complicated and the structure of the source code must be complicated. The other was source code with a simple structure at the beginning of operation, but there was a complicated structure due to repeated addition of functions on an ad hoc basis. The former need not be refactored and the latter needs to be refactored.
上記特許文献1,2においてはソースコードの複雑性にのみ着目している。そのため、リファクタリングの必要がある複雑なソースコードだけでなく、リファクタリングが必要ない複雑なソースコードも抽出してしまい、リファクタリング作業の効率を向上できない。
The
上記の課題を解決するために、本発明では、リファクタリングの必要があるソースコード、言い換えると複雑な構造のソースコードを抽出するものである。さらに、抽出したソースコードのアンチパターン因子の特徴からリファクタリング手法を提案し、リファクタリングの効果やコストの観点からモジュールごとのリファクタリング優先度を提示するものである。また、システムのログなど複数の資源から複数種類のメトリクス・情報を取得し、それを組み合わせて種々のアンチパターン因子が存在しているか否かを評価することも本発明の一態様である。 In order to solve the above problems, the present invention extracts source code that needs to be refactored, in other words, source code having a complicated structure. Furthermore, a refactoring method is proposed based on the characteristics of the extracted anti-pattern factor of the source code, and the refactoring priority for each module is presented from the viewpoint of the refactoring effect and cost. It is also an aspect of the present invention to acquire a plurality of types of metrics / information from a plurality of resources such as system logs and to evaluate whether various anti-pattern factors exist by combining them.
さらに、本発明の望ましい態様においては、構成管理システムからソースコードの各モジュール(クラス)単位におけるメトリクス取得手段と、ソースコードの各バージョン間の差分を取得し、差分部についてのメトリクス取得手段と、構成管理システムログについてのメトリクス取得手段と、稼動ログについてのメトリクス計測手段と、取得したメトリクス値から各種アンチパターン因子に該当するか否かを評価する手段と、該当したアンチパターン因子の種類からリファクタリング手法を提案する手段と、リファクタリング優先度を算出する手段と、リファクタリング手段・優先度を画面に表示する。 Furthermore, in a desirable aspect of the present invention, metrics acquisition means in each module (class) unit of the source code from the configuration management system, a difference between each version of the source code, and metrics acquisition means for the difference unit, Metric acquisition means for configuration management system log, metrics measurement means for operation log, means for evaluating whether or not it corresponds to various anti-pattern factors from the obtained metric values, and refactoring from the types of applicable anti-pattern factors A means for proposing a method, a means for calculating refactoring priority, and a refactoring means / priority are displayed on the screen.
本発明によれば、大規模ソースコードに存在するアンチパターン因子を効率的により効率的に抽出可能になる。 According to the present invention, an anti-pattern factor existing in a large-scale source code can be extracted more efficiently and efficiently.
以下、本発明の一実施の形態について、図面を用いて説明する。まず、図1に本実施の形態によるソースコード評価システムの機能構成図を示す。計算機1はメモリ10と、HDD11と、CPU12と、表示装置13と、入力装置14とを備える。メモリ10は差分コードメトリクス取得部と、ソースコードメトリクス取得部と、構成管理ログメトリクス取得部と、稼動ログメトリクス取得部と、アンチパターン評価部と、リファクタリング方法提案部と、リファクタリング手法・優先度一覧画面表示部とを備える。これらは、すなわち、HDD11に格納された処理プログラムがメモリ10上に展開されたものであり、CPU12で演算が実行され、各機能が実現される。HDD11はソースコード格納部111と、稼動ログ格納部112と、差分コードメトリクス値テーブル格納部113と、ソースコードメトリクス値テーブル格納部114と、アンチパターン評価ロジック定義ファイル格納部115と、アンチパターン評価利用メトリクス閾値定義ファイル格納部116と、アンチパターン判断テーブル格納部117と、アンチパターンリファクタリング手順テーブル格納部118と、リファクタリング手法一覧テーブル格納部119とを備える。これらは、上述したメモリ10の各部、つまり、プログラムの各機能で用いる各種データがHDD11に保持されていることを示す。
Hereinafter, an embodiment of the present invention will be described with reference to the drawings. First, FIG. 1 shows a functional configuration diagram of a source code evaluation system according to the present embodiment. The
図2に本発明の実施の形態によるソースコード評価システムの機能ブロック図を示す。つまり、上述したプログラムの各機能の概要を説明する。
ソースコード格納部111は、ソフトウェア構成管理システムである。ソースコードのバージョン管理や変更の記録など行っている。差分コードメトリクス取得部101は、ソースコード格納部111からあるバージョンのソースコードのクラスと1つ前のバージョンのクラスを取得し、差分の有無を算出する。差分がある場合、コード行数やネスト数などのメトリクス計測を行い、その結果を差分コードメトリクス値テーブル格納部113に出力する。また、ソースコードメトリクス取得部102は、ソースコード格納部111から各バージョンの各クラスを取得し、メトリクス計測を行いその結果をソースコードメトリクス値テーブル格納部114へ出力する。構成管理ログメトリクス取得部103はソースコード修正日などの変更履歴に関連する情報取得を行い、その結果をソースコードメトリクス値テーブル格納部114へ出力する。
FIG. 2 shows a functional block diagram of the source code evaluation system according to the embodiment of the present invention. That is, an overview of each function of the above-described program will be described.
The source
稼動ログ格納部112は、システム資源の負荷の大きさやシステム障害などのシステムの稼動状況の履歴ログを格納する。稼働ログメトリクス取得部104は稼働ログ格納部112から稼働ログを取得し、障害発生日などの情報を抽出しその結果を出力する。
差分コードメトリクス取得部101と、ソースコードメトリクス取得部102と、構成管理ログメトリクス取得部103と、稼働ログメトリクス取得部104とはシステム資源からアンチパターン評価に必要な情報をとる機能であることから、まとめて「センサ部」と定義する。また各種メトリクス・情報を取得する個々の機能を「センサ」と呼ぶ。
The operation
The differential code
図3にセンサとセンサに必要なパラメータ、そしてセンサが出力する値の形式の一例を示す。センサの列には取得するメトリクス・情報の種類が記述されている。パラメータの列にはセンサを実行させる際必要なソースコードの情報の形式が記述されている。値の列はセンサ実行の結果出力される値の形式が記述されている。取得手段の列はセンサが101、102、103、104のうちどこの機能によるものなのかが記述されている。
FIG. 3 shows an example of a sensor, parameters necessary for the sensor, and a format of a value output from the sensor. The type of metrics and information to be acquired is described in the sensor column. The parameter column describes the information format of the source code necessary for executing the sensor. The value column describes the format of the value output as a result of sensor execution. The column of the acquisition means describes which function the
図4に、差分コードメトリクス取得部101で出力され差分コードメトリクス値テーブル格納部113に格納されるテーブルの形式の一例を示す。テーブルはソースコードの各クラスごとに作成される。あるクラスのテーブル内の”バージョン差分”行にはどのバージョンとどのバージョンのクラスの差分をとっているかが示されており、その差分部のメトリクス値が格納されている。
FIG. 4 shows an example of the format of a table output from the differential code
図5にソースコードメトリクス取得部102と、構成管理ログメトリクス取得部103と、稼働ログメトリクス取得部104とが出力し、ソースコードメトリクス値テーブル格納部114に格納されているテーブルの形式の一例を示す。テーブルはソースコードの各クラスごとに作成される。あるクラスのテーブル内の”バージョン”行にはバージョン番号が示されており、それぞれのバージョンでのメトリクス値が格納されている。
アンチパターン評価部105、は各クラスが各種アンチパターン因子に該当するか否かを評価する機能を備える。
FIG. 5 shows an example of a table format output from the source code
The
図6に、アンチパターン評価部105における処理フローを示す。ステップ1051から実行される。ステップ1051では、アンチパターン評価ロジック定義ファイル格納部115から評価したいアンチパターン因子に対応するアンチパターン評価ロジック定義ファイルを取得する。ステップ1052では、アンチパターン評価利用メトリクス閾値定義ファイル格納部116から評価したいアンチパターン因子に対応するアンチパターン評価利用メトリクス閾値定義ファイルを取得する。ステップ1053では、ステップ1051で取得したアンチパターン評価ロジック定義ファイルからアンチパターン評価に用いるメトリクス値を把握し、それを差分コードメトリクス値テーブル格納部113と、ソースコードメトリクス値テーブル格納部114から取得する。ステップ1054では、ステップ1051で取得したアンチパターン評価ロジック定義ファイルに記されたロジックに従い、各クラスがアンチパターン因子に該当するか否かを判断する。ステップ1055で、もしあるクラスがアンチパターン因子に該当すると判明したなら、ステップ1056で、アンチパターン判定テーブル格納部117の該当アンチパターン因子の欄に「○」を格納する。ステップ1055で、もしあるクラスがアンチパターン因子に該当しないと判明したなら、ステップ1056で、アンチパターン判定テーブル格納部117の該当アンチパターン因子の欄に「×」を格納する。
FIG. 6 shows a processing flow in the
次に、評価対象であるアンチパターン因子1に該当するか否かを評価する処理の具体例を図7乃至図9を用いて説明する。
まず、図7にアンチパターン因子1の特徴を示す。アンチパターン因子1は業務共通クラスに個々の業務処理を場当たり的にif文で追加し、巨大になったクラスである。よって処理フローを追うのが複雑になり可読性が悪化しているアンチパターンである。これはコード規模が大きく、新バージョンソースコードは旧バージョンソースコードと比べ新たな差分が加わり、その差分がif文節であり、同じクラスのバージョン間での差分発生回数が多く、結果現状ソースコードのネスト数が大きい、という特徴を有している。
上記からアンチパターン因子1は、「コード行数」が100以上、「コード比較」で差分が存在し、「分岐」で差分がif文節であり、if文節の差分が5回以上あり、現状版ソースコードのネスト数が5以上であれば該当するというロジックとする。
Next, a specific example of processing for evaluating whether or not the
First, FIG. 7 shows the characteristics of
From the above,
図8に、上記ロジックを記述言語で示す。図8はアンチパターン評価ロジック定義ファイル格納部115に格納されている。
図8で記述されているロジックは以下の内容である。
FIG. 8 shows the above logic in a description language. FIG. 8 is stored in the anti-pattern evaluation logic definition
The logic described in FIG. 8 is as follows.
まず、アンチパターン評価を行うソースコードのクラスを宣言(特定)し、センサ「過去コード」を利用し対象クラスの過去バージョンのコードを宣言する。ここでは、各クラス、コードについて、対象となるもののすべてを特定するようにしてもよい。センサ「コード比較」を利用し1つのクラスの各バージョンの差分をとり、センサ「分岐」を利用し各差分が分岐文であるか否かを判定する。分岐文であれば判定値1、分岐文であれば判定値0と判定され、各差分の分岐文判定値の総和を導出する。その上で分岐文判定値の総和がi以上、かつ、センサ「コード行数」を利用し導出した最新のソースコードのコード行数がj以上、かつ、センサ「ネスト」を利用し導出した最新のソースコードのネスト数がk以上であればアンチパターン因子1に該当する。なお、i、j、kに入る値は、アンチパターン評価利用メトリクス閾値定義ファイル格納部内116で設定される。その内容を、以下で説明する。
First, a source code class for anti-pattern evaluation is declared (specified), and a past version code of the target class is declared using a sensor “past code”. Here, for each class and code, all of the target may be specified. The sensor “code comparison” is used to take the difference between versions of one class, and the sensor “branch” is used to determine whether each difference is a branch sentence. If it is a branch sentence, the judgment value is 1 and if it is a branch sentence, the judgment value is 0, and the sum of the branch sentence judgment values of each difference is derived. On top of that, the sum of branch statement judgment values is i or more, the number of code lines of the latest source code derived using sensor “number of code lines” is more than j, and the latest derived using sensor “nesting” If the source code nesting number is greater than or equal to k, it corresponds to
図9は、上記ロジックで利用されているメトリクス閾値を定義したものである。図9はアンチパターン評価利用メトリクス閾値定義ファイル格納部116に格納されている。図8のロジック記述言語内で設定されたi、j、kのパラメータはそれぞれ分岐文の修正回数、上限行数、上限ネスト数である。アンチパターン因子1であると判定するための閾値はi、j、kそれぞれ5以上、100以上、4以上と設定されている。
FIG. 9 defines metrics thresholds used in the above logic. FIG. 9 is stored in the anti-pattern evaluation utilization metrics threshold value definition
さらに、アンチパターン因子2に該当するか否かを評価する処理の具体例を図10乃至図12を用いて説明する。
まず、図10にアンチパターン因子2の特徴を示す。アンチパターン因子2は機能追加の際、同じような処理を複数個所にif文で追加したものである。よって追加部を修正する際、他の同様の処理の箇所にも修正を行う必要があり、修正ミスの可能性があるアンチパターンである。これは、新バージョンソースコードは旧バージョンソースコードと比べ新たな差分が加わり、同じクラスのバージョン間での差分発生が複数回あり、その差分がif文節であり、その差分が他ソースコードとコードクローンである。
Further, a specific example of processing for evaluating whether or not the
First, FIG. 10 shows the characteristics of
上記からアンチパターン因子2は、「コード比較」で差分が存在し、「分岐」で差分はif文節が存在し、if文節の差分が2回以上あり、その差分がクローンであれば該当するというロジックとする。
From the above,
次に、図11に上記ロジックを記述言語で示す。図11はアンチパターン評価ロジック定義ファイル格納部115に格納されている。
図11で記述されているロジックは以下の内容である。
最初にアンチパターン評価を行うソースコードクラスを宣言し、センサ「過去コード」を利用し対象クラスの過去バージョンのコードを宣言する。ここでは、各クラス、コードについて、対象となるもののすべてを特定するようにしてもよい。
Next, FIG. 11 shows the above logic in a description language. FIG. 11 is stored in the anti-pattern evaluation logic definition
The logic described in FIG. 11 is as follows.
First, declare the source code class for anti-pattern evaluation, and declare the past version of the target class using the sensor “past code”. Here, for each class and code, all of the target may be specified.
まず、センサ「コード比較」を利用し1つのクラスの各バージョンの差分をとり、センサ「分岐」を利用し各差分が分岐文であるか否かを判定する。分岐文であれば判定値1、分岐文であれば判定値0と判定され、各差分の分岐文判定値の総和を導出する。さらに、センサ「クローン」を利用し各差分がコードクローンであるかを検査する。その上で、分岐文判定値の総和かm以上、かつ、差分がクローンであればアンチパターン因子2に該当する。なお、mに入る値は、アンチパターン評価利用メトリクス閾値定義ファイル格納部内116で設定される。これらについて、以下で説明する。
First, the difference between each version of one class is obtained using the sensor “code comparison”, and it is determined whether each difference is a branch sentence using the sensor “branch”. If it is a branch sentence, the judgment value is 1 and if it is a branch sentence, the judgment value is 0, and the sum of the branch sentence judgment values of each difference is derived. Further, it is checked whether each difference is a code clone using a sensor “clone”. In addition, if the sum of branch sentence determination values is m or more and the difference is a clone, it corresponds to
図12は、上記ロジックで利用されているメトリクス閾値を定義したものである。図12はアンチパターン評価利用メトリクス閾値定義ファイル格納部116に格納されている。図11のロジック記述言語内で設定されたmのパラメータはコード修正回数である。アンチパターン因子1であると判定するための閾値はmが2以上と設定されている。
図13に、アンチパターン評価部105から出力されアンチパターン判定テーブル格納部117に格納されるテーブルの例を示す。各クラスが各種アンチパターン因子に該当していれば「○」、該当していなければ「×」が格納されている。
FIG. 12 defines a metric threshold used in the logic. FIG. 12 is stored in the anti-pattern evaluation utilization metrics threshold definition
FIG. 13 shows an example of a table output from the
次に、図14に、アンチパターン因子ごとのリファクタリング手順と過去の実績から計算した1Kstepあたりのリファクタリング想定工数のテーブルの例を示す。このテーブルはアンチパターンリファクタリング手順テーブル格納部118に格納されている
ここで、リファクタリング方法提案部106は、アンチパターン判定テーブル格納部117から図13のテーブルと、アンチパターンリファクタリング手順テーブル格納部118から図14のテーブルと、ソースコードメトリクス値テーブル格納部114から各クラスの障害発生回数とを取得し、リファクタリング要素一覧テーブルを作成する。
Next, FIG. 14 shows an example of a table of a refactoring procedure for each anti-pattern factor and a refactoring estimated man-hour per 1 Kstep calculated from past results. This table is stored in the anti-pattern refactoring procedure
次に、図15にリファクタリング方法提案部106で作成され、リファクタリング要素一覧テーブル格納部に格納されたリファクタリング要素一覧テーブルの一例を示す。各クラスが各種アンチパターン因子に該当するか否を示す欄と、各クラスの1年あたりの障害発生回数を示す欄と、クラス各々に該当するアンチパターン因子の種類からどのようなリファクタリング手法をとるべきか提示する欄と、各クラスのリファクタリング想定工数を各クラスのステップ数にあわせて計算し示す欄とがある。
図16に、リファクタリング手法・優先度一覧画面表示部107で表示される内容の一例を示す。画面にはそのプロジェクトの運用予定期間を入力する欄と、そのプロジェクトにおいて1回の障害修正にかかるコストを入力する欄とがあり、さらに、リファクタリング優先度ランキング番号を示す欄と、クラス名を示す欄と、各クラスに存在するアンチパターン因子の種類を示す欄と、各クラスのとるべきリファクタリング手法を提示する欄と、リファクタリング優先度評価値を示す欄とを有するテーブルが表示されている。
リファクタリング優先度評価値は以下の式で導出する。
リファクタリング 優先度評価値=リファクタリング効果−リファクタリング工数
={年平均障害発生回数(回/365日)
×運用予定期間(日)
×1回の障害修正にかかるコスト(人月/回)}
− リファクタリング想定工数(人月)…(数1)
リファクタリング優先度ランキングは、リファクタリング工数に対してリファクタリング効果が大きいクラス、つまりリファクタリング優先度評価値が大きいクラスの優先度が高くなるように順位づけし、表示する。
Next, FIG. 15 shows an example of the refactoring element list table created by the refactoring
FIG. 16 shows an example of contents displayed on the refactoring technique / priority list
The refactoring priority evaluation value is derived by the following formula.
Refactoring Priority evaluation value = Refactoring effect-Refactoring man-hours
= {Number of annual average failures (times / 365 days)
× Operation period (days)
× Costs required for correcting one failure (person month / time)}
− Estimated man-hours for refactoring (person month)… (Equation 1)
In the refactoring priority ranking, a class having a large refactoring effect with respect to the refactoring man-hour, that is, a class having a large refactoring priority evaluation value is ranked and displayed so as to have a high priority.
図17に101、102、103、104のセンサ部の実行を効率的に行うための処理フローを示す。ステップ1001から実行される。ステップ1001では、アンチパターン評価ロジック定義ファイル格納部115からアンチパターン評価ロジック定義ファイルを読み込み、アンチパターン評価に必要なメトリクスの種類を取得する。ステップ1002ではアンチパターン評価利用メトリクス閾値定義ファイル格納部116からアンチパターン因子評価に必要なメトリクスの閾値の判定条件を取得する。ステップ1003では、取得したメトリクスの中で、102の機能のみでアンチパターンか否かを判断できるメトリクスを列挙する。ステップ1004では、各クラスの上記メトリクス計測を行う。ステップ1005では、ステップ1004で得られたメトリクス値に対して、ステップ1002で得られた閾値の判定条件を利用して閾値判定を行う。
FIG. 17 shows a processing flow for efficiently executing the
ステップ1006で、もし閾値判定の結果、判定条件に合致していれば、ステップ1007でそのクラスは以後メトリクス計測対象であると判定され、アンチパターン評価部105において計測対象となる。一方ステップ1006で、もし閾値判定の結果、判定条件に合致してなければ、ステップ1008でそのクラスは以後メトリクス計測対象外であると判定され、アンチパターン評価部105において計測対象とはならない。
なお、上記のセンサ実行の処理フローを用いることで、アンチパターン評価部105において対象となるクラスの数を絞り込むことができ、効率的である。
In
In addition, by using the above-described sensor execution process flow, the
以上、本発明の一実施形態によれば、アンチパターン因子の抽出を、少ない工数かつ高精度で抽出することが可能である。またアンチパターン因子抽出・リファクタリングの作業者が熟練者でなくても容易にそれを行うことができる。 As described above, according to an embodiment of the present invention, it is possible to extract an anti-pattern factor with a small number of steps and with high accuracy. Moreover, even if the operator of anti-pattern factor extraction / refactoring is not an expert, it can be performed easily.
1…計算機、10…メモリ、11…HDD、12…CPU、13…表示装置、14…入力装置、101…差分コードメトリクス取得部、102…ソースコードメトリクス取得部、103…構成管理ログメトリクス取得部、104…稼働ログメトリクス取得部、105…アンチパターン評価部、106…リファクタリング方法提案部、107…リファクタリング手法・優先度一覧画面表示部、111…ソースコード格納部、112…稼働ログ格納部、113…差分コードメトリクス値テーブル格納部、114…ソースコードメトリクス値テーブル格納部、115アンチパターン評価ロジック定義ファイル格納部、116…アンチパターン評価利用メトリクス閾値定義ファイル格納部、117…アンチパターン判定テーブル格納部、118…アンチパターンリファクタリング手順テーブル格納部、119…リファクタリング要素一覧テーブル格納部
DESCRIPTION OF
Claims (5)
前記システムのソースコードを含む稼働に関する情報からメトリクスを計測する手段と、
前記計測されたメトリクスを用いて、前記ソースコードがアンチパターンの該当可否をその複雑さ示す指標を用いて評価する手段と、
前記評価された結果について、前記ソースコードのリファクタリングの優先度を算出・提示する手段を有することを特徴とするソースコード評価システム In a source code evaluation system that analyzes a program used in the system and extracts an anti-pattern of the program,
Means for measuring metrics from information about operation including source code of the system;
Means for evaluating, using the measured metrics, an index indicating the complexity of whether or not the source code is an anti-pattern;
A source code evaluation system comprising means for calculating and presenting a priority of refactoring of the source code for the evaluated result
前記メトリクスの項目を要素とし、前記アンチパターンを記述する手段をさらに有することを特徴とするソースコード評価システム。 The source code evaluation system according to claim 1,
The source code evaluation system further comprising means for describing the anti-pattern using the metrics item as an element.
前記ソースコードの各バージョン間の差分を取得し、取得された差分についてのメトリクスを取得する手段と、
取得された前記差分を用いて、前記ソースコードがアンチパターンの該当可否を評価する手段をさらに有することを特徴とするソースコード評価システム。 The source code evaluation system according to claim 1,
Means for obtaining a difference between each version of the source code and obtaining a metric for the obtained difference;
The source code evaluation system further comprising means for evaluating whether or not the source code corresponds to an anti-pattern using the acquired difference.
リファクタリング実施による障害発生削減効果とリファクタリング実施の際の工数を見積もり、当該見積もり結果からリファクタリング優先度を掲示する手段をさらに有することを特徴とするソースコード評価システム。 The source code evaluation system according to claim 1,
A source code evaluation system further comprising means for estimating an effect of reducing the occurrence of failure by performing refactoring and man-hours for performing refactoring, and posting a refactoring priority from the estimated result.
前記ソースコードから計測した前記メトリクスに基づいて、特定条件を満たすメトリクスの絞込みを行い、絞り込まれた前記メトリクスに基づいて、他のメトリクスの取得可否を判定する手段をさらに有することを特徴とするソースコード評価システム。 The source code evaluation system according to claim 1,
The source further comprising means for narrowing down metrics satisfying a specific condition based on the metrics measured from the source code, and determining whether or not other metrics can be acquired based on the narrowed metrics. Code evaluation system.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015016323A JP6310865B2 (en) | 2015-01-30 | 2015-01-30 | Source code evaluation system and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015016323A JP6310865B2 (en) | 2015-01-30 | 2015-01-30 | Source code evaluation system and method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016143107A JP2016143107A (en) | 2016-08-08 |
JP6310865B2 true JP6310865B2 (en) | 2018-04-11 |
Family
ID=56570461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015016323A Active JP6310865B2 (en) | 2015-01-30 | 2015-01-30 | Source code evaluation system and method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6310865B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4099156A1 (en) * | 2021-06-04 | 2022-12-07 | Hitachi, Ltd. | Source code analysis apparatus and source code analysis method |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019219848A (en) * | 2018-06-19 | 2019-12-26 | クラリオン株式会社 | Source code analysis method and source code analysis device |
JP7116313B2 (en) | 2018-11-28 | 2022-08-10 | 富士通株式会社 | Correction candidate identification program |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5168279B2 (en) * | 2007-07-19 | 2013-03-21 | 富士通株式会社 | Application improvement support program, application improvement support method, and application improvement support apparatus |
JP5041986B2 (en) * | 2007-11-27 | 2012-10-03 | 株式会社日立製作所 | Component division support device, method and program thereof |
JP2012230512A (en) * | 2011-04-26 | 2012-11-22 | Hitachi Ltd | System for displaying correspondence table between change frequency in each function in source code and complexity |
-
2015
- 2015-01-30 JP JP2015016323A patent/JP6310865B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4099156A1 (en) * | 2021-06-04 | 2022-12-07 | Hitachi, Ltd. | Source code analysis apparatus and source code analysis method |
US12099836B2 (en) | 2021-06-04 | 2024-09-24 | Hitachi, Ltd. | Source code analysis apparatus and source code analysis method |
Also Published As
Publication number | Publication date |
---|---|
JP2016143107A (en) | 2016-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20150089478A1 (en) | Systems and methods for extracting cross language dependencies and estimating code change impact in software | |
US9235494B2 (en) | Automated code analyzer | |
US9621679B2 (en) | Operation task managing apparatus and method | |
US10671061B2 (en) | Devices, methods, and systems for a distributed rule based automated fault detection | |
JP2017091329A (en) | Database analysis device and database analysis method | |
US11347864B2 (en) | Ace: assurance, composed and explained | |
JP2016167259A (en) | Method and apparatus for analyzing availability of system, in particular of safety critical system | |
JP6310865B2 (en) | Source code evaluation system and method | |
Gitzel | Data Quality in Time Series Data: An Experience Report. | |
Kadry | A new proposed technique to improve software regression testing cost | |
JP2018147385A (en) | Maintenance work scheduling system, maintenance work scheduling method and program | |
US8589898B2 (en) | Method and apparatus for analyzing software including a calibrated value | |
CN110618926A (en) | Source code analysis method and source code analysis device | |
CN111773728A (en) | Data table testing method, device, equipment and storage medium | |
JP7190246B2 (en) | Software failure prediction device | |
US10387532B2 (en) | Manufacturing control system, manufacturing control method, and manufacturing control program | |
Bala et al. | Use of the multiple imputation strategy to deal with missing data in the ISBSG repository | |
US9600245B2 (en) | Computer-implemented method for generating control unit program code and message management environment relating thereto | |
JP6247777B2 (en) | Abnormality diagnosis apparatus and abnormality diagnosis method | |
JP7339063B2 (en) | Machine learning program and machine learning device for learning about work processes | |
JP6320269B2 (en) | Software test support apparatus and software test support program | |
JPWO2017212552A1 (en) | Data processing apparatus, data processing method, and data processing program | |
Staron et al. | Industrial self-healing measurement systems | |
JP6609216B2 (en) | Apparatus and method for analyzing static analysis result of source code | |
US20240004747A1 (en) | Processor System and Failure Diagnosis Method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20170110 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20170112 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170321 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180112 |
|
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: 20180220 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180319 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6310865 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |