JP6297919B2 - Method for supporting work planning in software development, and work planning support device - Google Patents
Method for supporting work planning in software development, and work planning support device Download PDFInfo
- Publication number
- JP6297919B2 JP6297919B2 JP2014103200A JP2014103200A JP6297919B2 JP 6297919 B2 JP6297919 B2 JP 6297919B2 JP 2014103200 A JP2014103200 A JP 2014103200A JP 2014103200 A JP2014103200 A JP 2014103200A JP 6297919 B2 JP6297919 B2 JP 6297919B2
- Authority
- JP
- Japan
- Prior art keywords
- work
- information
- planning
- code
- subset
- 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
Description
本発明は、ソフトウェア開発における作業計画の立案を支援する方法、及び作業計画立案支援装置に関する。 The present invention relates to a method for supporting work planning in software development, and a work plan planning support apparatus.
特許文献1には、ファイル間のクローンコードの検出処理及びソースコード評価において、クローンコードの過検出を防ぎ、クローンコードを効率的に正しく評価・分析すべく、クローンコード検出対象のファイルにおける所定の単位のデータ毎の区間情報を検出テーブルに登録し、クローンコード検出対象のファイルとの比較対象となるファイルにおける所定の単位のデータ毎の区間情報を検出テーブルに登録し、検出テーブルにおける所定の単位のデータ間の区間情報が所定の条件を満たす場合、検出テーブルにおける該当する区間情報をファイル毎に結合し、検出テーブル内の区間情報を抽出してクローンコードテーブルに登録し、クローンコードテーブルに登録された区間情報よりファイルの品質へ及ぼす影響度合いを評価することが記載されている。
In
特許文献2には、開発中のソフトウェアのソースコードを管理するソースコード管理システムに関し、 開発中のソフトウェアのソースコードをリポジトリに管理し、共通化されたソースコードだけをリポジトリに登録し、ソースコードに対する共通化実施方法を提示し、ソースコード中に含まれるコードクローンを検出して、当該ソースコードが共通化されているか否かを判定し、ユーザが共通化を実施したソースコードを、メトリクスから算出したソースコードの改善率を用いて評価し、最善の共通化実施結果を選出することが記載されている。
一般にソフトウェア開発において、投入可能な工数内で作業を完了することができ、かつ、効果が最大となるように適切な作業計画を立案することは容易ではない。その理由の一つとして、作業に係る制約の存在がある。上記制約として、異なる作業が何らかの理由で競合し、双方を同時に選択できない排他的な関係(競合関係)の存在がある。排他的な関係とは、複数の作業方針が存在し、それらを両立させることができない関係である。両立させることができない関係は、例えば、一つの案に従って作業を行うと他の案が成立しなくなる場合、時間やリソースの制約によって一方を実施することができない場合である。こうした作業間の排他的な関係を考慮しつつ適切に作業計画を立案しようとすれば、同時に実施可能な作業の組合せを選択した上で効果を算出する必要があり、実施する作業の追加や取り消しを行う度に排他的な関係を確認しつつ効果を検証する必要があり、煩雑かつ膨大な計算を行う必要がある。 In general, in software development, it is not easy to create an appropriate work plan so that work can be completed within man-hours that can be input and the effect is maximized. One of the reasons is the existence of work restrictions. As the above-mentioned restriction, there is an exclusive relationship (competition relationship) in which different tasks compete for some reason and both cannot be selected at the same time. An exclusive relationship is a relationship in which a plurality of work policies exist and cannot be made compatible. The relationship that cannot be made compatible is, for example, the case where one plan cannot be implemented due to time or resource constraints when the other plan cannot be established if work is performed according to one plan. If an appropriate work plan is planned in consideration of the exclusive relationship between these tasks, it is necessary to calculate the effect after selecting a combination of tasks that can be performed at the same time. It is necessary to verify the effect while confirming the exclusive relationship each time, and it is necessary to perform complicated and enormous calculation.
本発明では、効率よく適切に作業計画を立案することが可能な、ソフトウェア開発における作業計画の立案を支援する方法、及び作業計画立案支援装置を提供することを目的としている。 SUMMARY OF THE INVENTION An object of the present invention is to provide a method for supporting work planning in software development and a work plan planning support apparatus that can efficiently and appropriately create a work plan.
上記目的を達成するための本発明の一つは、ソフトウェア開発における作業計画の立案を支援する方法であって、情報処理装置が、ソフトウェア開発における複数の作業間の競合関係を制約条件とし、複数の前記作業を組み合わせることにより得られる作業群の効果を目的関数とする組合せ最適化問題を解くことにより、前記作業の部分集合を決定する。 One aspect of the present invention for achieving the above object is a method for supporting the creation of a work plan in software development, in which an information processing apparatus uses a plurality of work relationships in software development as a constraint, A subset of the tasks is determined by solving a combinatorial optimization problem with the effect of the task group obtained by combining the tasks as an objective function.
その他、本願が開示する課題、及びその解決方法は、発明を実施するための形態の欄、及び図面により明らかにされる。 In addition, the subject which this application discloses, and its solution method are clarified by the column of the form for inventing, and drawing.
本発明によれば、ソフトウェア開発に係る作業計画を効率よく適切に立案することができる。 According to the present invention, it is possible to efficiently and appropriately formulate a work plan related to software development.
以下、実施形態について図面とともに説明する。 Hereinafter, embodiments will be described with reference to the drawings.
図1に第1実施形態において説明する情報処理装置(コンピュータ)である作業計画立案支援装置10の概略的な構成を示している。作業計画立案支援装置10は、ソフトウェア開発における作業計画の立案を支援するための情報を生成する。作業計画立案支援装置10は、作業の効果を表す指標である作業期待値に基づく目的関数について、複数の作業の間の競合関係を制約条件とする組合せ最適化問題(組合せ計画問題)を解くことにより、複数の作業の中から目的関数が最大となる作業群(以下、これを作業部分集合とも称する。)を決定する。上記作業部分集合の決定において、作業計画立案支援装置10には、作業に関する情報(作業情報)、作業期待値を規定する作業期待値ポリシー、制約条件が記述される作業競合情報、及び作業の優先度に関する情報等が与えられる。また作業計画立案支援装置10は、上記作業部分集合の決定に際して作業間の排他的な関係に着目し、動的計画法、分枝限定法、遺伝的アルゴリズム等を随時適用することにより、一度解いた部分問題を重複して解かないように、もしくは不必要な部分問題を解かないようにすることにより、処理の煩雑さや負荷の軽減を図る。
FIG. 1 shows a schematic configuration of a work plan
図1に示すように、作業計画立案支援装置10は、プロセッサ11、記憶装置12、入力装置13、表示装置14、及び通信装置15を備える。これらはバス等の通信手段を介して通信可能に接続されている。
As illustrated in FIG. 1, the work
プロセッサ11は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)を用いて構成されている。プロセッサ11が記憶装置12に格納されているプログラムを読み出して実行することにより、作業計画立案支援装置10の様々な機能が実現される。記憶装置12(主記憶装置、補助記憶装置、外部記憶装置を含む)は、プログラムやデータを記憶する装置であり、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、NVRAM(Non Volatile RAM)、ハードディスクドライブ、SSD(Solid State Drive)、光学式記憶装置(CD−ROM、DVD−ROM等)である。
The
入力装置13は、ユーザから情報や指示の入力を受け付けるユーザインタフェースであり、例えば、キーボード、マウス、タッチパネルである。表示装置14は、ユーザに情報を提供するユーザインタフェースであり、例えば、液晶モニタ、LCD(Liquid Crystal Display)である。通信装置15は、通信ネットワーク5を介して外部装置2と通信する通信インタフェースであり、例えば、NIC(Network Interface Card)である。記憶装置12には、例えば、通信ネットワーク5を介して外部装置2からダウンロードされたプログラムやデータが格納される。
The
同図に示すように、記憶装置12は、作業期待値決定PG211及び作業部分集合決定PG212を記憶する。以下の説明において、これらのプログラムによって実現される機能のことを、順に、作業期待値決定部271、作業部分集合決定部272とも称する。作業期待値決定PG211及び作業部分集合決定PG212は、OS(Operating System)の配下で動作するものであってもよいし、そうでなくてもよい。また作業期待値決定PG211及び作業部分集合決定PG212は、仮想化ソフトウェアによって実現される仮想マシン上で実行されるものであってもよい。
As shown in the figure, the
同図に示すように、記憶装置12は、作業情報251、作業期待値ポリシー252、作業優先度情報253、作業競合情報254、作業期待値情報255、及び作業部分集合情報256を記憶する。
As shown in the figure, the
図2は作業計画立案支援装置10において行われる処理(以下、作業期待値決定処理S200とも称する。)の流れを説明するデータフロー図である。以下、同図とともに作業計画立案支援装置10が備える機能について説明する。
FIG. 2 is a data flow diagram for explaining the flow of processing (hereinafter also referred to as expected work value determination processing S200) performed in the work
作業期待値決定部271は、作業情報251、作業期待値ポリシー252、及び作業優先度情報253に基づき、作業情報251に記載されている各作業の期待値(以下、作業期待値とも称する。)を求め、各作業の作業期待値を記載した作業期待値情報255を生成する。
Based on the
図3に作業情報251の一例を示す。同図に示すように、作業情報251は、作業ID2511、対象ファイル2512、対象ファイル数2513、及び対象ステップ数2514の各項目からなる複数のレコードで構成されている。このうち作業ID2511には、作業ごとに付与される識別子(以下、作業IDとも称する。)が設定される。対象ファイル2512には、作業の対象となるファイル(以下、対象ファイルとも称する。)の識別子(以下、ファイルIDとも称する。)が設定される。対象ファイル数2513には、その作業の対象ファイルの数が設定される。対象ステップ数2514には、対象ファイルに記述されているプログラムのステップ数が設定される。尚、本実施形態では、作業の対象がファイルである場合を例示するが、作業の対象はモジュール等の他の種類のものであってもよい。
FIG. 3 shows an example of the
図4に作業期待値ポリシー252の一例を示す。この作業期待値ポリシー252は、どの程度の量の成果物を作業対象として処理することができたかという視点で作業の効果を判断する場合の一例であり、成果物の量をソースコードのステップ数等で把握している。作業期待値ポリシー252には、作業情報251に記載されている各作業の作業期待値を求めるための情報が含まれている。同図に示す作業期待値ポリシー252には、「c」を作業ID、「F」をファイル数、「S」をステップ数(例えばファイル1件あたりのステップ数)、「P」を優先度に応じた値をとる計数(以下、優先度計数とも称する。)とした場合に次式から求められる値「value(c)」を、各作業の作業期待値を求めるための関数とすることが規定されている。
value(c)=P×F×S ・・・式1
FIG. 4 shows an example of the work expected
value (c) = P × F ×
尚、作業期待値ポリシー252には、優先度(ランクA〜D)と優先度計数Pとの対応を示す情報(優先度のランクA〜Dに対応して優先度計数Pを順に「3.0」、「2.0」、「1.0」、「0.5」とする旨の情報)も記述されている。
The work
図5に作業優先度情報253の一例を示す。同図に示すように、作業優先度情報253には、各作業(作業ID2531)について設定される作業優先度2532を示す情報が含まれている。ユーザ等は作業優先度情報253に適切に各作業の優先度を設定することで目的関数に各作業の優先度を反映させることができ、作業計画立案支援装置10による作業部分集合の決定に各作業の優先度を反映させることができる。
FIG. 5 shows an example of the
図6に作業期待値情報255の一例を示す。同図に示すように、作業期待値情報255には、各作業(作業ID2551)の作業期待値2552が記載されている。尚、同図に示す作業期待値情報255は、図3の作業情報251、図4の作業期待値ポリシー252、及び図5の作業優先度情報253に基づき生成されている。例えば、図3の作業情報251の作業IDが「1」の作業については、図5の作業優先度情報253から作業優先度2532が「B」と特定され、図4の作業期待値ポリシー252から優先度係数Pが2.0と特定される。そして図3の作業情報251から、作業IDが「1」の作業のファイル数は「3」、ステップ数は「12」であるので、作業期待値ポリシー252から、作業IDが「1」の作業の作業期待値は、
value(c)=P×F×S=2.0×3.0×12=72
と求まり、図6の作業期待値情報255には、作業IDが「1」の作業について作業期待値「72」が設定されている。
FIG. 6 shows an example of the expected
value (c) = P × F × S = 2.0 × 3.0 × 12 = 72
In the expected
図2に戻り、作業部分集合決定部272は、作業期待値決定部271が生成した作業期待値情報255と作業競合情報254とに基づき組合せ最適化計算を行い、目的関数(例えば実施する作業の組合せにおけるvalue(c)の総和(=Σvalue(c)))を最大にする作業部分集合を決定し、決定した作業部分集合を記載した作業部分集合情報256を生成する。
Returning to FIG. 2, the work
図7に作業競合情報254の一例を示す。作業競合情報254には、競合関係にある作業(作業ID)の組合せが記載されている。同図において、例えば「(1,2)」は、作業IDが「1」の作業と作業IDが「2」の作業が競合関係にあることを示している。例えば、作業がコードクローンの修正(除去)作業であり、作業IDが「1」の作業がコードクローンAの修正作業、作業IDが「2」の作業がコードクローンBの修正作業である場合、コードクローンAの修正作業とコードクローンBの修正作業とが競合関係にあることを示している(コードクローンA及びコードクローンBが同じ一つのファイル(もしくはモジュール)に含まれており、同時に共通化することが難しい場合等)。尚、競合する作業の表現の態様は同図に示すものに限定されない。例えば、検証を同時に行うことが難しい(競合関係にある)モジュールの識別子の組合せや、検証を同時に行うことが難しい(競合関係にある)ドキュメントの識別子(例えば、章や節の番号、ページ番号)の組合せ等であってもよい。
FIG. 7 shows an example of the
図8に作業部分集合情報256の一例を示す。作業部分集合情報256には、作業部分集合の構成要素(作業)を示す情報が記載されている。同図に示す作業部分集合情報256は、競合関係にない、作業IDが「2,3,6,10,13,24,27,35」の作業が作業部分集合であることを示している。
FIG. 8 shows an example of the
図9は、作業部分集合の決定に際して作業計画立案支援装置10が行う処理(以下、作業部分集合決定処理S900とも称する。)を説明するフローチャートである。
FIG. 9 is a flowchart for explaining a process (hereinafter also referred to as a work subset determination process S900) performed by the work
まず作業計画立案支援装置10は、作業情報251、作業期待値ポリシー252、作業優先度情報253、及び作業競合情報254を取得し、これらを記憶装置12に記憶する(S911)。これらの情報は、例えば、ユーザ等が予め設定して作業計画立案支援装置10に入力してもよいし、作業計画立案支援装置10が通信ネットワーク5を介して外部装置2から取得してもよい。
First, the work
続いて、作業計画立案支援装置10は、作業情報251、作業期待値ポリシー252、及び作業優先度情報253に基づき、作業情報251の各作業の作業期待値を決定し、その結果を記載した作業期待値情報255を生成する(S912)。
Subsequently, the work
続いて、作業計画立案支援装置10は、作業競合情報254、及びS912で生成した作業期待値情報255に基づき、組合せ最適化計算を行う(S913)。この処理の詳細については後述する。
Subsequently, the work
続いて、作業計画立案支援装置10は、作業期待値情報255に記載されている作業の作業期待値に基づく目的関数を最大化する作業部分集合情報を決定する(S914)。
Subsequently, the work
続いて、作業計画立案支援装置10は、決定した作業部分集合情報256を表示装置14に表示する(S915)。
Subsequently, the work
次に、図9の組合せ最適化計算S913及び作業部分集合の決定S914について詳細に説明する。組合せ最適化計算は、組合せ計画問題における手法を最適化したものである。 Next, the combination optimization calculation S913 and the work subset determination S914 in FIG. 9 will be described in detail. The combinatorial optimization calculation is an optimization of the method in the combinatorial planning problem.
作業計画立案支援装置10は、例えば次の定義に基づき組合せ最適化計算S913を行う。
「定義:
作業の全集合をTasks、各作業c∈Tasksで得られる効果(利得)をvalue(c)として抽象化する。このとき作業の集合Tasksから次のような部分集合ChosenTasksを選び出す.そして、制約を満たす範囲で、部分集合ChosenTasksにおけるvalue(c)の総和(=Σvalue(c))が最大になるものを作業部分集合として抽出する。
maximize Σvalue(c)
c ∈ChosenTasks⊆Tasks
但し、∀c1、 c2(c1≠c2) ∈ChosenTasks ;c1とc2の作業が競合しない
尚、∀x ∈ S; P(x) は、集合 S の任意の元 x に対して命題 P(x) が成立することを表す。」
The work plan planning
“Definition:
The whole set of tasks is abstracted as Tasks, and the effect (gain) obtained by each task c∈Tasks is abstracted as value (c). At this time, the following subset ChosenTasks is selected from the task set Tasks. Then, in the range that satisfies the constraints, the one that maximizes the sum (= Σvalue (c)) of value (c) in the subset ChosenTasks is extracted as a work subset.
maximize Σvalue (c)
c ∈ ChosenTasks⊆Tasks
However, ∀c1, c2 (c1 ≠ c2) ∈ChosenTasks; the work of c1 and c2 does not compete. Note that ∀x ∈ S; P (x) is a proposition P (x) for any element x of set S Is established. "
ここでこの定義は、以下に示す等価な計算式に変換することができる。
まず作業ci(i=1,2,・・・,n)の選択有無の操作を次のように表現する。
ci∈{0,1} (i=1,2,・・・,n) ・・・式2
Here, this definition can be converted into the following equivalent calculation formula.
First, the operation of whether or not the work ci (i = 1, 2,..., N) is selected is expressed as follows.
ci∈ {0,1} (i = 1,2, ..., n) ...
また作業期待値情報255(ここでは一例として図6に示す作業期待値情報255)から、目的関数は、
Σvalue(c)=72×c1+50×c2+48×c3+14×c4+20×c5+36×c6 ・・・式3
となる。
Further, from the expected work value information 255 (here, expected
Σvalue (c) = 72 × c1 + 50 × c2 + 48 × c3 + 14 × c4 + 20 × c5 + 36 ×
It becomes.
ここで作業ciを選択する場合は「ci=1」、作業ciを選択しない場合は「ci=0」となり、例えば、作業1〜4を選択する場合、c1〜c4は「1」、c5とc6は「0」となり、式3は、
Σvalue(c)=72*1+50*1+48*1+14*1+20*0+36*0
となる。また例えば作業1,4のみを選択する場合、c1とc4は「1」、他は「0」となり、
Σvalue(c)=72*1+50*0+48*0+14*1+20*0+36*0 = 72*1+14*1
となる。
Here, “ci = 1” is selected when the work ci is selected, and “ci = 0” is selected when the work ci is not selected. For example, when the
Σvalue (c) = 72 * 1 + 50 * 1 + 48 * 1 + 14 * 1 + 20 * 0 + 36 * 0
It becomes. For example, when
Σvalue (c) = 72 * 1 + 50 * 0 + 48 * 0 + 14 * 1 + 20 * 0 + 36 * 0 = 72 * 1 + 14 * 1
It becomes.
上記定義のうち「∀c1、 c2(c1≠c2) ∈ChosenTasks に対しc1とc2の作業が競合しない」については、式2から次のように表わすことができる:
ci+cj ∈{0,1} (i≒j) ・・・式5
式5はciとcjの両方を選択する(ci=1かつcj=1)場合、即ちci+cj=2を排除することを意味しており、例えば図7に示した作業競合情報254であれば次のように表すことができる。
c1+c2∈{0、1}
c2+c3∈{0、1}
c2+c4∈{0、1}
c3+c4∈{0、1}
c1+c5∈{0、1}
Among the above definitions, “the work of c1 and c2 does not compete for ∀c1, c2 (c1 ≠ c2) ∈ ChosenTasks” can be expressed as follows from Equation 2:
ci + cj ∈ {0,1} (i ≒ j) ・ ・ ・
c1 + c2∈ {0, 1}
c2 + c3∈ {0, 1}
c2 + c4∈ {0, 1}
c3 + c4∈ {0, 1}
c1 + c5∈ {0, 1}
図10は、図6に示した作業期待値情報255における作業IDが「1」〜「6」の6つの作業(以下、C1〜C6とする。)の夫々について{作業を行う、 作業を行わない}の全ての組合せ、即ち異なる6つのものからr個(r=1、2、・・・6)を選ぶ全ての組合せを列挙したものである。同図において、表中の数字「1」は、その作業(C1、C2・・・C6のいずれか)を選択することを、「0」はその作業を選択しないことを意味している。例えば、No.40の行は「(C1、C2、C3、C4、C5、C6)=(0、0、1、1、0、1)」となっているが、これは「C1=0(選択しない)かつC2=0(選択しない)かつC3=1(選択する)かつC4=1(選択する)かつC5=0(選択しない)かつC6=1(選択する)」の意味である。
FIG. 10 is a diagram illustrating the operation of each of the six operations (hereinafter referred to as C1 to C6) having the operation IDs “1” to “6” in the operation expected
ここで作業競合情報254が図7の内容である場合、「∀c3、c4 ∈ChosenTasks」 に対しc3とc4の2つの作業は競合しない」、即ち「c3+c4∈{0、1}」であるが、No.40のケースでは、「c3+c4=2」となるのでこの条件を満たさない、即ちNo.40の行の組合せは選択できず、No.40の「可否」には、この組合せが選択できないことを意味する「×」が設定されている。一方、作業が競合しない組合せについては「可否」に「○」が設定される。同図の場合は22個の行の「可否」に「○」が設定されており、作業計画立案支援装置10は、これらの行に対応する作業の組合せを作業部分集合として決定する。
Here, when the
図11は、図10の一部の行を抜粋し、「期待値」の列を追加したものである。この「期待値」の列には、式3に従って計算したΣvalue(c)の値が設定されている。
FIG. 11 is an excerpt of a part of the rows in FIG. 10 and an “expected value” column is added. In the “expected value” column, the value of Σvalue (c) calculated according to
ここで「可否」に「○」が設定されている行のうち、Σvalue(c)が最大(maximize Σvalue(c))のものはNo.31の行((C1、C2、C3、C4、C5、C6)=(1、0、0、1、0、1),Σvalue(c)=158)であり、作業計画立案支援装置10は図9のS914において作業部分集合{c1、c4、c6}を生成する。
Of the rows where “Yes” is set in “Yes / No”, the row with the maximum Σvalue (c) (maximize Σvalue (c)) is the No. 31 row ((C1, C2, C3, C4, C5 , C6) = (1, 0, 0, 1, 0, 1), Σvalue (c) = 158), and the work
尚、一般的な組合せ計画問題の手法において、作業間の排他的な関係(競合関係)を考慮しつつ最適化の精度を向上させるには、同時に実施可能な作業の組合せを適切に選択した上で効果を算出する必要があり、作業の追加や取り消しを行う度に排他的な関係を確認する必要があり煩雑かつ膨大な計算を行う必要がある。例えば、コードクローンの数が1000個である場合、{修正する、修正しない}の2通りの全ての組合せの数は2^1000通りとなり、現実的な時間内で探索を完了することが難しくなる。 In order to improve the optimization accuracy in consideration of the exclusive relationship (competitive relationship) between tasks in the general combination planning problem method, a combination of tasks that can be performed simultaneously is selected appropriately. Therefore, it is necessary to check the exclusive relationship every time an operation is added or canceled, and it is necessary to perform a complicated and enormous calculation. For example, if the number of code clones is 1000, the number of all combinations of {correct and not correct} is 2 ^ 1000, making it difficult to complete the search within a realistic time. .
そこで組合せの数が膨大な場合は、例えば、動的計画法、分枝限定法、遺伝的アルゴリズム等を適用して処理の煩雑さや負荷の軽減を図るようにしてもよい。この場合、分枝した部分問題に対する探索を省略する方法として作業間の排他関係を利用し、一度解いた部分問題を重複して解かないようにもしくは不必要な部分問題を解かないようにする。例えば、図10に示した64通りの組合せのうち「可否」に「×」が付与されている42通りについては処理を省略することができる。 Therefore, when the number of combinations is enormous, for example, dynamic programming, branch and bound methods, genetic algorithms, and the like may be applied to reduce the complexity of processing and the load. In this case, an exclusive relationship between operations is used as a method for omitting the search for the branched subproblem, so that the subproblems solved once are not solved redundantly or unnecessary subproblems are not solved. For example, among the 64 combinations shown in FIG. 10, the processing can be omitted for 42 combinations in which “x” is given to “possibility”.
一例として分枝限定法を適用する場合を示す。分枝限定法とは、ある部分問題が実行不能であるあるいは最適解が得られないと判断される場合に、その部分問題を無視する(限定操作を行う)探索手法である。具体的には次のようになる。
(1)作業ciを含むペアと含まないペアの部分集合に分けて総期待値を各々評価する。
(2)最大の評価値を得る部分集合を採択する。
As an example, a case where the branch and bound method is applied will be described. The branch and bound method is a search method that ignores a partial problem (performs a limited operation) when it is determined that the partial problem cannot be executed or an optimal solution cannot be obtained. Specifically:
(1) The total expected value is evaluated by dividing into a subset of pairs including and not including work ci.
(2) A subset that obtains the maximum evaluation value is adopted.
(1)では次の(1−a),(1−b)のように分枝と評価を繰り返していく。
(1−a) 作業ciを含む組合せの中でもっとも期待値が大きいペアを見つける。
→以下、再帰的に注目するファイルを順次変えていき「含む組合せ」と「含まない組合せ」に分けて同様に評価する。
(1−b) 作業ciを含まない組合せの中でもっとも期待値が大きいペアを見つける。
→ 以下、再帰的に注目するファイルを順次変えていき「作業ciを含む組合せ」と「作業ciを含まない組合せ」に分けて同様に評価する。
In (1), branching and evaluation are repeated as in the following (1-a) and (1-b).
(1-a) Find the pair with the largest expected value among the combinations including the work ci.
→ Hereafter, the files to be recursively changed sequentially and divided into “including combinations” and “not including combinations” and evaluated in the same manner.
(1-b) Find the pair with the largest expected value among the combinations not including the work ci.
→ Hereinafter, the files to be recursively changed sequentially, and divided into “combination including work ci” and “combination not including work ci” and evaluated in the same manner.
分枝限定法では、一度解いた部分問題や不必要な部分問題を解かないことにより無駄な探索を省略して計算量を削減する。具体的には、上記(1−a)、(1−b)の評価に際し、作業間の排他的な関係を制約として活用する。例えば、コードクローンAの修正作業とコードクローンBの修正作業との間に競合関係(排他関係)があり、コードクローンAを修正する作業を選択するとコードクローンBを修正する作業は選択できないとすれば、コードクローンAを修正する作業とコードクローンBを修正する作業の組合せについては探索の対象から除外する。 In the branch and bound method, unnecessary problems are not solved by solving partial problems that have been solved once or unnecessary partial problems, thereby reducing the amount of calculation. Specifically, in the evaluation of the above (1-a) and (1-b), an exclusive relationship between operations is used as a constraint. For example, there is a competitive relationship (exclusive relationship) between the correction work of code clone A and the correction work of code clone B, and if the work for correcting code clone A is selected, the work for correcting code clone B cannot be selected. For example, the combination of the work of correcting the code clone A and the work of correcting the code clone B is excluded from the search target.
以上に説明したように、本実施形態においては、作業間の排他的な関係に基づく制約条件の下で複数の作業の中から目的関数が最大となるように選択した作業を作業部分集合として決定するので、ソフトウェア開発に係る作業計画の立案に際して有用な情報をユーザ等に提供することができる。このため、ソフトウェア開発において効率よく適切に作業計画を立案することができる。また作業間の排他的な関係に着目し、動的計画法、分枝限定法、遺伝的アルゴリズム等を随時適用するので、処理の煩雑さや負荷の軽減を図ることができる。 As described above, in the present embodiment, the work selected so that the objective function is maximized from a plurality of works under the constraint based on the exclusive relationship between the works is determined as a work subset. Therefore, it is possible to provide useful information to the user or the like when making a work plan related to software development. Therefore, a work plan can be made efficiently and appropriately in software development. In addition, paying attention to the exclusive relationship between tasks, the dynamic programming method, the branch and bound method, the genetic algorithm, etc. are applied as needed, so that the complexity of processing and the load can be reduced.
尚、以上では、複数の作業の中から目的関数が最大となる作業群を作業部分集合として決定したが、例えば、目的関数が所定の閾値を超える作業群を作業部分集合として決定するようにしてもよい。 In the above description, a work group having the maximum objective function is determined as a work subset from a plurality of works. For example, a work group whose objective function exceeds a predetermined threshold is determined as a work subset. Also good.
第1実施形態では、作業情報251、作業優先度情報253、及び作業競合情報254を外部から作業計画立案支援装置10に与えているが、第2実施形態ではこれらを作業計画立案支援装置10が生成する。また第2実施形態では、ソフトウェア開発における作業としてコードクローンの除去に関する作業を取り上げる。例えば、公知のコードクローン解析ツールに大規模のソースコードを入力すると数千から数万個のコードクローンが出力される場合もあるが、修正作業にかけられる工数には限りがあるため、これらのうちどのコードクローンを修正するかを決定(選択)する必要がある。第2実施形態では、作業計画立案支援装置10が、コードクローンの修正作業を最適化(制約条件の下で効果を最大化)する情報を生成する構成を例として説明する。以下、第1実施形態との差異点を中心として説明する。
In the first embodiment, the
図12に第2実施形態の作業計画立案支援装置10の概略的な構成を示している。第2実施形態の作業計画立案支援装置10は、第1実施形態の作業計画立案支援装置10と同様の構成を備える。また第2実施形態の作業計画立案支援装置10は、記憶装置12に、作業分析PG220(コードクローン検出PG221、コードクローン分布解析PG222、コードクローン修正優先度決定PG223、及び作業競合情報生成PG224を含む。)、対象ソフトウェア261、構成要素情報262、修正優先度ポリシー263、コードクローン検出結果264、及びコードクローン分布情報265を記憶している点において第1実施形態の作業計画立案支援装置10と構成が異なる。
FIG. 12 shows a schematic configuration of the work plan planning
以下の説明において、作業分析PG220によって実現される機能のことを作業分析部280と、また、コードクローン検出PG221、コードクローン分布解析PG222、コードクローン修正優先度決定PG223、及び作業競合情報生成PG224の夫々によって実現される機能のことを、順に、コードクローン検出部281、コードクローン分布解析部282、コードクローン修正優先度決定部283、及び作業競合情報生成部284とも称する。
In the following description, the functions realized by the
第2実施形態では、第1実施形態における組合せ計画問題における「作業が競合しない」状況を、次のように表現する。
「作業が夫々、修正対象となるコードクローンの一つに対応づけられているものとしてコードクローンの修正にかかる作業(コードクローンの共通化等)の全集合を Clones、各コードクローンの修正作業c∈Clonesにおける各コードクローンが含まれているファイルの集合をFiles(c)とし、
∀c1、 c2 ∈ChosenTasks に対しFiles(c1)∩Files(c2)=φ」
尚、上記表現は、例えば、コードクローンAとコードクローンBとが同一のモジュール(ファイル)に存在し、コードクローンAを修正することによりファイルの内容が変更されてファイルのコードクローンBが消失してしまう等の理由によりコードクローンBの修正が行えないといった状況を想定している。例えば、コードクローンAがソースコード(ファイル)の10行目から20行目までを含み、コードクローンBが同じソースコード(ファイル)の15行目から30行目までを含んでいる場合である。第2実施形態における作業競合情報254は、このような想定に基づき、1度選択したモジュール(ファイル)に関わるコードクローンの修正作業を2度は選択することができない(2つの修正作業が競合している(排他的な関係にある))という関係をコードクローンの識別子(以下、クローンIDとも称する。)のペアとして表現している。
In the second embodiment, the “work does not compete” situation in the combination planning problem in the first embodiment is expressed as follows.
“Clones is the complete set of work related to code clone modification (such as standardization of code clones) as if each work is associated with one of the code clones to be modified. A set of files containing each code clone in ∈ Clones is Files (c).
に 対 し Files (c1) ∩ Files (c2) = φ for c1, c2 ∈ ChosenTasks ''
In the above expression, for example, code clone A and code clone B exist in the same module (file), and by modifying code clone A, the contents of the file are changed and code clone B of the file is lost. It is assumed that the code clone B cannot be corrected due to reasons such as. For example, the code clone A includes the 10th to 20th lines of the source code (file), and the code clone B includes the 15th to 30th lines of the same source code (file). The
図13は、以下の説明に用いる、作業分析部280が作業分析の対象とするソフトウェア(以下、対象ソフトウェア261とも称する。)の構成を説明する図である。対象ソフトウェア261は、複数の構成要素(モジュール)を含んで構成されている。ここではこのように対象ソフトウェア261の構成要素がモジュールである場合を例として説明するが、構成要素は、例えばファイルや関数等であってもよい。
FIG. 13 is a diagram illustrating a configuration of software (hereinafter, also referred to as target software 261) that is a target of work analysis performed by the
同図に示すように、対象ソフトウェア261は、モジュールm1,m2,・・・,m5を含む。また対象ソフトウェア261には、複数のコードクローン(クローンIDが夫々「1」、「2」、「3」、「4」、「5」の5つのコードクローン)が存在する。例えば、モジュールm1には、クローンIDが夫々「1」、「2」の2つのコードクローンが存在する。
As shown in the figure, the
図14は、作業計画立案支援装置10が、コードクローンの分布解析に際して行う処理(以下、コードクローン分布解析処理S1400とも称する。)の流れを説明するデータフロー図である。
FIG. 14 is a data flow diagram for explaining the flow of processing (hereinafter also referred to as code clone distribution analysis processing S1400) performed by the work plan planning
コードクローン検出部281は、対象ソフトウェア261に対して、例えば、公知のコードクローン検出ツール(例えば「CCFinderX」)を実行することにより、対象ソフトウェア261のソースコード内のコードクローンを検出する。
The code
コードクローン分布解析部282は、対象ソフトウェア261の構成要素情報262、及びコードクローン検出結果264に基づき、対象ソフトウェア261におけるコードクローンの分布解析を行い、対象ソフトウェア261におけるコードクローンの分布が記載されたコードクローン分布情報265を生成する。
The code clone
図15に構成要素情報262の一例を示す。同図に示すように、構成要素情報262には、ファイル(ファイル名)とモジュール(モジュール名)との対応を示す情報が記載されている。
FIG. 15 shows an example of the
図16にコードクローン検出結果264の一例を示す。同図に示すように、コードクローン検出結果264には、コードクローン検出ツールにより検出されたコードクローン(クローンID)とそのコードクローンを含むファイル(ファイル名)との対応を示す情報が記載されている。
FIG. 16 shows an example of the code
図17にコードクローン分布情報265の一例を示す。同図に示すように、コードクローン分布情報265には、コードクローン(クローンID)とモジュール(モジュール名)との対応を示す情報が含まれている。
FIG. 17 shows an example of the code
図14に戻り、コードクローン修正優先度決定部283は、コードクローン分布情報265及び修正優先度ポリシー263に基づきコードクローンの修正優先度を決定し、決定した修正優先度を記載した作業優先度情報253を生成する。修正優先度ポリシー263及び作業優先度情報253の詳細については後述する。
Returning to FIG. 14, the code clone modification priority determining unit 283 determines the modification priority of the code clone based on the code
作業競合情報生成部284は、コードクローン分布情報265及び構成要素情報262に基づき作業競合情報254(作業競合情報(辺リスト形式)254A及び作業競合情報(マトリクス形式)254B)を生成する。
The work conflict
このように第2実施形態においては、作業計画立案支援装置10が、作業情報251、作業優先度情報253、及び作業競合情報254を自動的に生成するので、ユーザ等は外部から作業計画立案支援装置10にこれらの情報を与えることなく、作業計画の立案を支援するための情報を得ることができる。
As described above, in the second embodiment, the work
図18は、作業計画立案支援装置10の作業分析部280が、対象ソフトウェア261を分析して作業競合情報254を生成する際に行う処理(以下、作業競合情報生成処理S1800とも称する。)を説明するフローチャートである。
FIG. 18 illustrates a process (hereinafter also referred to as a work conflict information generation process S1800) performed when the
まず作業計画立案支援装置10は、対象ソフトウェア261及び構成要素情報262を取得して記憶装置12に記憶する(S1811)。
First, the work
続いて、作業計画立案支援装置10は、コードクローン検出ツールを実行し、対象ソフトウェア261に含まれているコードクローンを検出し、コードクローン検出結果264を生成する(S1812)。
Subsequently, the work
続いて、作業計画立案支援装置10は、構成要素情報262とコードクローン検出結果264とに基づきコードクローンの分布を解析してコードクローン分布情報265を生成する(S1813)。この処理(以下、コードクローン分布解析処理S1813とも称する。)の詳細については後述する。
Subsequently, the work
続いて、作業計画立案支援装置10は、修正優先度ポリシー263に従い、コードクローン分布情報265に含まれている各コードクローンの修正優先度を決定する(S1814)。
Subsequently, the work
続いて、作業計画立案支援装置10は、構成要素情報262とコードクローン分布情報265に基づき作業競合情報254を生成する(S1815)。この処理(以下、作業競合情報生成処理S1815とも称する。)については後述する。
Subsequently, the work
続いて、作業計画立案支援装置10は、S1815で生成した作業競合情報254を表示装置14に表示する(S1816)。
Subsequently, the work
図19は、図18のコードクローン分布解析処理S1813の詳細を説明するフローチャートである。 FIG. 19 is a flowchart for explaining the details of the code clone distribution analysis processing S1813 of FIG.
まず作業計画立案支援装置10は、変数Nに1を設定する(S18131)。
First, the work
次に作業計画立案支援装置10は、コードクローン検出結果264のN行目の内容を取り出し、クローンIDの列の値を変数CID、ファイル名の列の値を変数FILEに代入する(S18132)。
Next, the work
次に作業計画立案支援装置10は、構成要素情報262から、ファイル名の列が変数FILEの値と一致する行を検索し、見つかった行のモジュール名の列の値を変数MODULEに代入する(S18133)。
Next, the work
次に作業計画立案支援装置10は、コードクローン分布情報265のN行目のクローンIDの列に変数CIDの値、モジュール名の列に変数MODULEの値を入力する(S18134)。
Next, the work
次に作業計画立案支援装置10は、N行目がコードクローン検出結果264の最終行であるか否かを判定する(S18135)。N行目がコードクローン検出結果264の最終行であれば(S18135:YES)、作業計画立案支援装置10は、コードクローン分布解析処理S1813を終了する。N行目がコードクローン検出結果264の最終行でなければ(S18135:NO)、作業計画立案支援装置10は、N=N+1(S18136)とし、その後、処理はS18132に戻る。
Next, the work
図20は、図18の作業競合情報生成処理S1815を説明するデータフロー図である。同図に示すように、作業競合情報生成部284は、テーブル生成部2841、競合判定部2842、及びマトリクス要素入力部2843を含む。
FIG. 20 is a data flow diagram illustrating the work conflict information generation process S1815 of FIG. As shown in the figure, the work conflict
テーブル生成部2841は、コードクローン分布情報265に基づき、コードクローンのクローンIDを行及び列とするテーブル2000を生成する。
Based on the code
図21にテーブル2000の一例を示す。同図に示すように、テーブル2000の行及び列には、コードクローン検出処理で検出された各コードクローンのクローンID(この例では「1,2,3,4,5」)が列挙されている。 FIG. 21 shows an example of the table 2000. As shown in the figure, the rows and columns of the table 2000 list the clone IDs (in this example, “1, 2, 3, 4, 5”) of the code clones detected by the code clone detection process. Yes.
図20に戻り、競合判定部2842は、コードクローン分布情報265に基づき、コードクローンの組合せについて修正が競合するかどうかを判定し、判定した結果を作業競合情報(辺リスト形式)254Aとして出力する。一方、マトリクス要素入力部2843は、作業競合情報(辺リスト形式)254Aに基づき、テーブル生成部2841が生成したテーブル2000にデータを入力して作業競合情報(マトリクス形式)254Bを生成する。
Returning to FIG. 20, the
図22に作業競合情報(辺リスト形式)254Aの一例を示す。同図において、例えば「(1,2)」は、クローンIDが「1」のコードクローンの修正とクローンIDが「2」のコードクローンの修正が競合関係にあることを表している。 FIG. 22 shows an example of work conflict information (side list format) 254A. In the figure, for example, “(1, 2)” indicates that there is a competitive relationship between the modification of the code clone with the clone ID “1” and the modification of the code clone with the clone ID “2”.
図23に作業競合情報(マトリクス形式)254Bの一例を示す。作業競合情報(マトリクス形式)254Bは、コードクローン間の修正作業の競合関係をマトリクス形式で表したものである。コードクローン間に修正作業の競合関係がある場合は対応するセルに「×」が入力される。同図において、例えば、1行2列のセルに「×」が入力されている。これはクローンIDが「1」のコードクローンとクローンIDが「2」のコードクローンとの間に競合関係があることを示している。 FIG. 23 shows an example of work conflict information (matrix format) 254B. The work conflict information (matrix format) 254B represents the competitive relationship of correction work between code clones in a matrix format. If there is a competitive relationship between the code clones, “x” is entered in the corresponding cell. In the figure, for example, “x” is input to a cell in one row and two columns. This indicates that there is a competitive relationship between the code clone with the clone ID “1” and the code clone with the clone ID “2”.
図24は、図18における作業競合情報生成処理S1815の詳細を説明するフローチャートである。以下、同図とともに説明する。 FIG. 24 is a flowchart for explaining details of the work conflict information generation processing S1815 in FIG. Hereinafter, it will be described with reference to FIG.
まず作業計画立案支援装置10は、コードクローン分布情報265に基づきテーブル2000を生成する(S18151)。
First, the work
続いて、作業計画立案支援装置10は、コードクローン分布情報265に基づき、夫々のコードクローンの組に対して修正作業が競合するかどうかを判定し、結果を作業競合情報254として出力する(S18152)。例えば、図17に示したコードクローン分布情報265においては、モジュール名が「m1」の行が2つ(クローンIDが「1」の行とクローンIDが「2」の行)含まれているが、この場合、作業計画立案支援装置10は、コードクローンの組(1,2)は「競合する」と判定する。
Subsequently, the work
続いて、作業計画立案支援装置10は、作業競合情報254を参照し、テーブル2000の対応する箇所に「×」を入力する。そして作業競合情報254の全ての内容についてテーブル2000への入力が完了すると、作業計画立案支援装置10は、テーブル2000を作業競合情報(マトリクス)254Bとして出力する(S18153)。
Subsequently, the work
続いて、図14において、作業計画立案支援装置10のコードクローン優先度決定部283が、修正優先度ポリシー263及びコードクローン分布情報265に基づき作業優先度情報253を生成する処理について説明する。
Next, a process in which the code clone priority determination unit 283 of the work plan planning
作業計画立案支援装置10は、例えば、コードクローンの規模の大きさ、修正の容易さ、チーム担当範囲を跨ぐか否か等を基準として修正作業の優先度を決定する。例えば、規模の大きいコードクローンほど修正による改善効果が大きいことから、作業計画立案支援装置10は、規模の大きいコードクローンほど修正作業の優先度を高く設定する。また例えば、修正が容易なコードクローンほど少ない工数で修正を完了できることから、作業計画立案支援装置10は、修正が容易なコードクローンほど修正作業の優先度を高く設定する。また例えば、チーム担当範囲を跨ぐようなコードクローンは保守困難化の原因となることから、作業計画立案支援装置10は、そのようなコードクローン程、修正作業の優先度を高く設定する。
The work
図14に示した修正優先度ポリシー263には、このような優先度を決定する際の指針となる情報が設定される。例えば「規模が大きいコードクローンほど優先度が高い」という指針であれば、例えば「30行以上のコードクローンならば優先度A、10行以上29行以下のコードクローンならば優先度B、9行以下のコードクローンならば優先度Cとする」といった内容が修正優先度ポリシー263に設定される。
In the
尚、複数の指針によって優先度を決定するようにしてもよい。例えば、コードクローンの規模と修正の容易さの2つの指針によって優先度を決定するようにしてもよい。一例として、コードクローンの規模により第1優先度A、B、Cを決定し、続いて、修正の容易さにより第2優先度a、b、cを決定し、これらの第1及び第2優先度の組合せ((A、a)、(A、b)、(A、c)、(B、a)、(B、b)、(B、c)、(C、a)、(C、b)、(C、c)等)について優先度を設定するようにする。優先度としては、例えば、各組合せに辞書式に優先度を設定する方法、第1及び第2優先度が共に高い(又は低い)場合に高い(又は低い)優先度を設定し、その他の場合は複合優先度が等しいと判定する方法等が考えられる。コードクローン修正優先度決定部283は、このようにして設定された修正優先度ポリシー263に従ってコードクローン分布情報265に含まれる各コードクローンの修正優先度を決定する。
The priority may be determined by a plurality of guidelines. For example, the priority may be determined based on two guidelines of code clone size and ease of correction. As an example, the first priorities A, B, and C are determined based on the size of the code clone, and then the second priorities a, b, and c are determined based on the ease of correction, and these first and second priorities are determined. Combination of degrees ((A, a), (A, b), (A, c), (B, a), (B, b), (B, c), (C, a), (C, b ), (C, c), etc.). As a priority, for example, a method of setting a priority lexicographically for each combination, a high (or low) priority is set when both the first and second priorities are high (or low), and other cases For example, a method of determining that the composite priorities are equal can be considered. The code clone modification priority determining unit 283 determines the modification priority of each code clone included in the code
第1実施形態及び第2実施形態では、作業計画立案支援装置10が作業部分集合を決定するにあたり制約条件として作業競合情報254(複数の作業の間の競合関係)を課していたが、第3実施形態では、制約条件としてさらに作業の投入量に関する条件(時間制約等)を課す。例えば、アジャイルソフトウェア開発(agile software development)においては、リスクの最小化等を目的として、所定の短い周期(例えば1〜4週間)で 計画、要求分析、設計、実装(コーディング)、テスト、文書化等の作業が繰り返し発生する。このような開発手法においては作業計画の立案に際して周期的な反復時間単位(イテレーション等)内に同程度の作業量(作業時間あるいは工数)が配分されるようにすることが望ましい。そこで第3実施形態の作業計画立案支援装置10は、所定時間において最大の効果が得られるように作業部分集合を選択する。
In the first embodiment and the second embodiment, the work plan planning
ここで第1実施形態の作業の選択問題に作業の投入量に関する条件([制約条件2])を課して定義し直すと次のようになる。
「定義:
maximize Σvalue(c)
c ∈ChosenTasks⊆Tasks
但し、
c1、 c2(c1≠c2) ∈ChosenTasks に対しc1とc2の作業が競合しない
・・・[制約条件1]
Σcost(c) ≦投入可能な工数や作業時間
・・・[制約条件2]」
Here, when the work selection problem of the first embodiment is redefined by imposing a condition ([constraint condition 2]) regarding the work input amount, it is as follows.
“Definition:
maximize Σvalue (c)
c ∈ ChosenTasks⊆Tasks
However,
c1 and c2 (c1 ≠ c2) ∈ChosenTasks does not compete with c1 and c2
... [Constraint 1]
Σcost (c) ≤ available man-hours and work time
... [Constraint 2]
また第2実施形態のコードクローンの検出結果に基づく修正作業の選択問題について作業の投入量に関する条件([制約条件2])を課して定義し直すと次のようになる。
「定義:
maximize Σvalue(c)
c ∈ChosenClones⊆Clones
但し、
∀c1、 c2 ∈ChosenClones に対しFiles(c1)∩Files(c2)=φ
・・・[制約条件1]
Σcost(c) ≦投入可能な工数や作業時間
・・・[制約条件2]」
Further, the problem of selecting a correction work based on the detection result of the code clone of the second embodiment is redefined by imposing a condition ([constraint condition 2]) on the input amount of work.
“Definition:
maximize Σvalue (c)
c ∈ ChosenClones⊆Clones
However,
Files (c1) ∩Files (c2) = φ for ∀c1, c2 ∈ ChosenClones
... [Constraint 1]
Σcost (c) ≤ available man-hours and work time
... [Constraint 2]
尚、以上の各定義においては、クローン解析ツールが出力したクローンの全集合を Clones、クローンc∈Clonesに属するファイルの集合をFiles(c)、それを共通化して得られる共通ソフトウェアの価値(利得)をvalue(c)とし、そのコスト(共通化の工数等)をcost(c)としている。 In each definition above, Clones is the entire set of clones output by the clone analysis tool, Files (c) is the set of files belonging to the clone c∈Clones, and the value (gain) of the common software obtained by sharing them ) Is value (c), and its cost (man-hours for sharing, etc.) is cost (c).
図25は、第3実施形態の作業計画立案支援装置10が行う処理(以下、作業期待値決定処理S2500とも称する。)の概略を説明するデータフロー図である。図2の作業期待値決定処理S200との差異は、作業計画立案支援装置10の作業部分集合決定部272が作業部分集合情報256を生成する際に上記[制約条件2]として量的制約ポリシー258を参照する点である。
FIG. 25 is a data flow diagram for explaining the outline of the process (hereinafter also referred to as an expected work value determination process S2500) performed by the work plan planning
図26に量的制約ポリシーの例(量的制約ポリシー258A,258B)を示す。量的制約ポリシー258Aには、上記[制約条件2]として投入資源量上限工数2581(例えば、イテレーション周期の指定)が指定されている。一方、量的制約ポリシー258Bは、作業(修正)の容易性等の基準に基づき複数段階にカテゴライズして量的制約ポリシーを指定する形態となっている。 FIG. 26 shows examples of quantitative constraint policies (quantitative constraint policies 258A and 258B). In the quantitative constraint policy 258A, the input resource amount upper limit man-hour 2581 (for example, designation of an iteration period) is designated as the [constraint condition 2]. On the other hand, the quantitative constraint policy 258B has a form in which a quantitative constraint policy is designated by categorizing into a plurality of stages based on criteria such as ease of work (correction).
以下、第2実施形態の作業計画立案支援装置10の構成において[制約条件2]を課した場合を例として、第3実施形態における作業計画立案支援装置10の機能について説明する。尚、第2実施形態では、作業が対象ソフトウェア261のソースコードに含まれているコードクローンの修正作業である場合を例として説明したが、第3実施形態では、作業が対象ソフトウェア261のテストである場合を例として説明する。第3実施形態の作業計画立案支援装置10の基本的な機能については、クローンIDをテスト項目と読み替えた場合における第2実施形態の作業計画立案支援装置10の機能と同様である。第3実施形態では、図7における作業競合情報254はテスト項目の競合関係を示すものであり、例えば、図7の(1,2)は、テスト項目1とテスト項目2とが排他関係にあることを示す。また第3実施形態では図9の組合せ最適化計算処理S913に[制約条件2]に関する処理が含まれる。以下、第2実施形態の作業計画立案支援装置10との差異を中心として説明する。
Hereinafter, the function of the work plan planning
図27は、図11の表に「所要時間」の列と「全体可否」の列を追加したものである。「所用時間」の欄には、当該行の図27の量的制約ポリシー258Bのcost(c)の総和(Σcost(c))が50以上であれば「2」が、総和(Σcost(c))が50未満であれば「1」が設定される。「可否」の欄には[制約条件1]成否(成立する場合は「○」、成立しない場合は「×」)が、「全体可否」の欄には[制約条件1]及び[制約条件2]の双方が成立するか否か(双方がともに成立する場合は「○」、それ以外は「×」)が設定される。図27は[制約条件2]として「所要時間の上限が3以下」が課されている場合である。 FIG. 27 is obtained by adding a column of “required time” and a column of “total availability” to the table of FIG. In the column “required time”, “2” is added to the total (Σcost (c)) if the total (Σcost (c)) of cost (c) of the quantitative constraint policy 258B in FIG. ) Is less than 50, “1” is set. [Constrained condition 1] success / failure (“O” when satisfied, “×” when not satisfied) is displayed in the “Availability” column, and [Restriction condition 1] and [Restriction condition 2] are displayed in the “Overall availability” field. ] Is established (“○” if both are established, “x” otherwise). FIG. 27 shows the case where “the upper limit of the required time is 3 or less” is imposed as [Constraint 2].
前述した定義における「maximize Σvalue(c)」は、全体可否が「○」の行の「期待値」である。この例では、No.12の「期待値」である「108」がmaximize Σvalue(c)となり、作業計画立案支援装置10は、図9のS914において作業部分集合情報256として{c1、c6}を決定する。尚、図9の組合せ最適化計算処理S913において分枝限定法を適用する場合は、例えば[制約条件1]に加えて[制約条件2]に係るΣcost(c)の上限(例えば、総許容工数)以降の枝を除外することになる。
“Maximize Σvalue (c)” in the above-described definition is an “expected value” of a row whose overall availability is “◯”. In this example, “108” that is the “expected value” of No. 12 is maximized Σvalue (c), and the work
ところで、作業部分集合情報256として、作業計画立案支援装置10が、最適解(目的関数を最大化する解)だけでなく、次善の作業部分集合や近似解を併せて生成出力する形態であってもよい。例えば、作業部分集合情報256として、
(i)所要時間の上限を「3」から「4」に増やした状態(即ち少しだけ制約を緩和した状態)でmaximize Σvalue(c)を得るような作業部分集合、及びその場合のmaximize Σvalue(c)の変化量、
(ii)イテレーションの周期の長さが所要時間上限として指定されている場合、その周期の倍数に相当する時間(例えば、所要時間の上限が「6」(=現在の「3」の2倍))でmaximize Σvalue(c)を得る作業部分集合、及びその場合のmaximize Σvalue(c)の変化量を最適解とともに生成出力するようにしてもよい。この場合、例えば、制約の微小な緩和等の操作によるmaximize Σvalue(c)の変化量が大きい場合は作業計画において[制約条件2]の変更を容認する判断を促しうる。上記(ii)は例えば複数のチーム間でイテレーション終了のタイミングで同期を取りつつ作業を進める開発形態での利用が想定される。例えば、他のチームがイテレーションの周期の倍数に相当する終了タイミングで作業を完了させるようにすれば、maximize Σvalue(c)の値を踏まえつつチーム間で作業の同期を取るタイミングを確保しつつ作業を進めるといった計画を立案することができる。
By the way, as the
(I) A working subset that obtains maximized Σvalue (c) in a state where the upper limit of the required time is increased from “3” to “4” (that is, a state in which the constraints are slightly relaxed), and maximized Σvalue ( c) variation,
(Ii) When the length of the iteration period is specified as the upper limit of the required time, the time corresponding to a multiple of the period (for example, the upper limit of the required time is “6” (= twice the current “3”) ) And the change amount of the maximized Σvalue (c) in that case, together with the optimal solution, may be generated and output. In this case, for example, when the amount of change in maximize Σvalue (c) due to an operation such as minute relaxation of the constraint is large, it is possible to prompt the determination to accept the change of [Constraint 2] in the work plan. For example, (ii) is assumed to be used in a development mode in which a plurality of teams work while synchronizing at the end of iteration. For example, if other teams complete their work at an end timing equivalent to a multiple of the iteration period, work can be done while ensuring work synchronization timing between teams based on the value of maximize Σvalue (c). You can make a plan to proceed.
尚、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。 In addition, this invention is not limited to above-described embodiment, Various modifications are included. For example, the above-described embodiment has been described in detail for easy understanding of the present invention, and is not necessarily limited to one having all the configurations described. Further, a part of the configuration of an embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of an embodiment. In addition, it is possible to add, delete, and replace other configurations for a part of the configuration of each embodiment.
上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウエアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD等の記録装置や、ICカード、SDカード、DVD等の記録媒体に置くことができる。 Each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit. Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor. Information such as programs, tables, and files for realizing each function can be stored in a recording device such as a memory, a hard disk, or an SSD, or a recording medium such as an IC card, an SD card, or a DVD.
制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。 The control lines and information lines indicate what is considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. Actually, it may be considered that almost all the components are connected to each other.
以上の実施形態では、対象ソフトウェア261のソースコードの管理(コードクローンの除去)に関する作業について作業部分集合を決定する場合を一例として説明したが、本発明は、例えば、対象ソフトウェア261のドキュメント類の管理に関する作業について作業部分集合を決定する場合にも適用することができる。
In the above embodiment, the case where the working subset is determined for the work related to the management of the source code (removal of the code clone) of the
また本発明は、ソフトウェアが正しく動作するか確認するためのコードであるテストコードの管理に関する作業について拡張して適用することができる。テストコードの管理に関する制約条件としては、例えば、複数のチームでテストを分担して作業を進める場合に、あるチームの修正作業が他のチームに影響してチーム間の調整作業や他のチームの作業待ちが発生しうる関係にある複数のテスト項目を複数チームに跨がって分担させないように(例えば、あるテスト項目をあるチームが選択した場合に、同一のイテレーションの期間内に他のテスト項目を他のチームが選択しないように)するといったものが考えられる。このような制約を課すことで、作業待ち時間の発生等、開発の迅速性が損なわれるリスクを回避することができる。 The present invention can be extended and applied to work related to test code management, which is a code for confirming whether software operates correctly. As a restriction condition regarding test code management, for example, when a test is shared by a plurality of teams, the correction work of one team affects other teams and the adjustment work between the teams or the other teams Don't share multiple test items that may be waiting for work across multiple teams (for example, if a certain test item is selected by a team, other tests will be performed within the same iteration period) For example, the item may not be selected by another team. By imposing such restrictions, it is possible to avoid the risk of impairing the speed of development, such as the occurrence of work waiting time.
10 作業計画立案支援装置、251 作業情報、252 作業期待値ポリシー、253 作業優先度情報、254 作業競合情報、255 作業期待値情報、256 作業部分集合情報、261 対象ソフトウェア、262 構成要素情報、263 修正優先度ポリシー、264 コードクローン検出結果、265 コードクローン分布情報、280 作業分析部、281 コードクローン検出部、282 コードクローン分布解析部、283 コードクローン修正優先度決定部、284 作業競合情報生成部、271 作業期待値決定部、272 作業部分集合決定部、S200 作業期待値決定処理、S900 作業部分集合決定処理、S1400 コードクローン分布解析処理、S1800 作業競合情報生成処理、S1813 コードクローン分布解析処理、S1815 作業競合情報生成処理
10 work planning support device, 251 work information, 252 work expected value policy, 253 work priority information, 254 work conflict information, 255 work expected value information, 256 work subset information, 261 target software, 262 component information, 263 Modification priority policy, 264 code clone detection result, 265 code clone distribution information, 280 work analysis section, 281 code clone detection section, 282 code clone distribution analysis section, 283 code clone modification priority determination section, 284 work conflict
Claims (13)
情報処理装置が、
ソフトウェア開発における複数の作業間の競合関係を制約条件とし、複数の前記作業を組み合わせることにより得られる作業群の効果を目的関数とする組合せ最適化問題を解くことにより、前記作業の部分集合を決定し、
ソフトウェア開発における、ソースコード又はドキュメントを分析することにより、前記作業の間の競合関係に関する情報である作業競合情報を生成し、
前記作業競合情報に基づく競合関係を前記制約条件として用いる、
作業計画の立案を支援する方法。 A method of supporting work planning in software development,
Information processing device
Determine a subset of the work by solving a combinatorial optimization problem with the objective function as the effect of the work group obtained by combining multiple works, with the competitive relationship between multiple works in software development as a constraint. And
Analyzing the source code or document in software development to generate work conflict information that is information about the conflict relationship between the tasks,
Using a competition relationship based on the work competition information as the constraint condition,
A method to support the planning of work plans.
前記情報処理装置が、前記組合せ最適化問題を解くことにより、前記目的関数が最大となるもしくは所定の閾値を超える前記作業群を作業部分集合として決定する、
作業計画の立案を支援する方法。 A method for supporting the drafting of a work plan according to claim 1,
The information processing apparatus determines the work group that maximizes the objective function or exceeds a predetermined threshold as a work subset by solving the combination optimization problem.
A method to support the planning of work plans.
前記目的関数は、前記作業群を構成する前記作業ごとの効果を表わす指標である作業期待値の総和を算出する関数である、
作業計画の立案を支援する方法。 A method for supporting the creation of a work plan according to claim 1 or 2,
The objective function is a function for calculating a sum of expected work values, which is an index representing an effect for each work constituting the work group.
A method to support the planning of work plans.
前記情報処理装置が、前記作業の量を示す情報と、前記作業の夫々について設定される優先度とに基づき、前記作業期待値を算出する、
作業計画の立案を支援する方法。 A method for supporting the drafting of a work plan according to claim 3,
The information processing device calculates the expected work value based on information indicating the amount of the work and a priority set for each of the work;
A method to support the planning of work plans.
前記情報処理装置が、前記作業の工数、前記作業に要する時間、前記作業の量のうちの少なくともいずれかに関する制約条件をさらに課す、
作業計画の立案を支援する方法。 A method for supporting the creation of a work plan according to claim 1 or 2,
The information processing apparatus further imposes a constraint on at least one of the number of man-hours for the work, the time required for the work, and the amount of the work;
A method to support the planning of work plans.
前記情報処理装置は、前記作業の工数及び前記作業に要する時間を制約条件とする
作業計画の立案を支援する方法。 A method for supporting the drafting of a work plan according to claim 5 ,
The information processing apparatus is a method for supporting the creation of a work plan with the man-hour of the work and the time required for the work as constraints.
前記作業に要する時間の制約条件が、反復型開発における反復周期の倍数のタイミングで前記作業を完了させるものである
作業計画の立案を支援する方法。 A method for supporting the drafting of a work plan according to claim 6 ,
A method for supporting the creation of a work plan, wherein the time constraint for the work is such that the work is completed at a timing that is a multiple of the iteration period in iterative development.
前記情報処理装置は、動的計画法、分枝限定法、遺伝的アルゴリズムのうちの少なくともいずれかにより組合せ最適化問題を解く
作業計画の立案を支援する方法。 A method for supporting the drafting of a work plan according to claim 6 ,
The information processing apparatus is a method for supporting the planning of a work plan that solves a combinatorial optimization problem by at least one of a dynamic programming method, a branch and bound method, and a genetic algorithm.
ソフトウェア開発における複数の作業間の競合関係を制約条件とし、複数の前記作業を組み合わせることにより得られる作業群の効果を目的関数とする組合せ最適化問題を解くことにより、前記作業の部分集合を決定する作業部分集合決定部、及び、
ソフトウェア開発における、ソースコード又はドキュメントを分析することにより、前記作業の間の競合関係に関する情報である作業競合情報を生成する作業分析部、
を備え、
前記作業部分集合決定部は、前記作業競合情報に基づく競合関係を前記制約条件として用いる、
作業計画立案支援装置。 An information processing apparatus that supports work planning in software development,
Determine a subset of the work by solving a combinatorial optimization problem with the objective function as the effect of the work group obtained by combining multiple works, with the competitive relationship between multiple works in software development as a constraint. A working subset determination unit, and
A work analysis unit that generates work conflict information, which is information related to a competitive relationship between the tasks, by analyzing a source code or a document in software development;
With
The work subset determination unit uses a competition relationship based on the work competition information as the constraint condition.
Work planning support device.
前記作業部分集合決定部は、前記組合せ最適化問題を解くことにより、前記目的関数が最大となるもしくは所定の閾値を超える前記作業群を作業部分集合として決定する、
作業計画立案支援装置。 The work planning support device according to claim 9 ,
The working subset determination unit determines the working group that maximizes the objective function or exceeds a predetermined threshold as a working subset by solving the combination optimization problem.
Work planning support device.
前記目的関数は、前記作業群を構成する前記作業ごとの効果を表わす指標である作業期待値の総和を算出する関数である、
作業計画立案支援装置。 The work planning support device according to claim 9 ,
The objective function is a function for calculating a sum of expected work values, which is an index representing an effect for each work constituting the work group.
Work planning support device.
前記作業の量を示す情報と、前記作業の夫々について設定される優先度とに基づき、前記作業期待値を算出する作業期待値決定部を備える、
作業計画立案支援装置。 The work planning support device according to claim 11 ,
A work expected value determination unit that calculates the work expected value based on information indicating the amount of work and a priority set for each of the work;
Work planning support device.
前記作業部分集合決定部は、前記作業の工数、前記作業に要する時間、前記作業の量のうちの少なくともいずれかに関する制約条件をさらに課す、
作業計画立案支援装置。 The work planning support device according to claim 9 ,
The work subset determination unit further imposes a constraint on at least one of the number of steps of the work, the time required for the work, and the amount of the work.
Work planning support device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014103200A JP6297919B2 (en) | 2014-05-19 | 2014-05-19 | Method for supporting work planning in software development, and work planning support device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014103200A JP6297919B2 (en) | 2014-05-19 | 2014-05-19 | Method for supporting work planning in software development, and work planning support device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015219747A JP2015219747A (en) | 2015-12-07 |
JP6297919B2 true JP6297919B2 (en) | 2018-03-20 |
Family
ID=54779058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014103200A Active JP6297919B2 (en) | 2014-05-19 | 2014-05-19 | Method for supporting work planning in software development, and work planning support device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6297919B2 (en) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5093990B2 (en) * | 2005-03-28 | 2012-12-12 | Necエンジニアリング株式会社 | Bug management system |
JP5443945B2 (en) * | 2009-10-28 | 2014-03-19 | 株式会社ビーイング | Project planning device and project planning program |
-
2014
- 2014-05-19 JP JP2014103200A patent/JP6297919B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2015219747A (en) | 2015-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9195952B2 (en) | Systems and methods for contextual mapping utilized in business process controls | |
US20170235661A1 (en) | Integration of Software Systems via Incremental Verification | |
US20160004757A1 (en) | Data management method, data management device and storage medium | |
US9658834B2 (en) | Program visualization device, program visualization method, and program visualization program | |
US11042823B2 (en) | Business management system | |
US20110154127A1 (en) | Test support system, method and computer program product, which optimize test scenarios to minimize total test time | |
US11347864B2 (en) | Ace: assurance, composed and explained | |
US20150081263A1 (en) | Production simulation apparatus and production simulation method | |
JP2021064049A (en) | Calculator system and mathematical model generation support method | |
CN110618926A (en) | Source code analysis method and source code analysis device | |
US8255846B2 (en) | Development tool for comparing netlists | |
JP6692281B2 (en) | Test case generation device and test case generation method | |
JP2005032079A (en) | Project pre-evaluation method | |
JP6297919B2 (en) | Method for supporting work planning in software development, and work planning support device | |
US20160357655A1 (en) | Performance information generating method, information processing apparatus and computer-readable storage medium storing performance information generation program | |
US20160155078A1 (en) | Method for determining condition of category division of key performance indicator, and computer and computer program therefor | |
CN111143390A (en) | Method and device for updating metadata | |
JP6737063B2 (en) | Software asset management device, software asset management method, and software asset management program | |
JP6665576B2 (en) | Support device, support method, and program | |
US8255881B2 (en) | System and method for calculating software certification risks | |
JP6869082B2 (en) | Computer for selecting test cases and test case selection method | |
US20220335364A1 (en) | Personnel arrangement apparatus, and arrangement method, and program | |
US20170185397A1 (en) | Associated information generation device, associated information generation method, and recording medium storing associated information generation program | |
JP5678729B2 (en) | Information processing apparatus, work importance calculation method, and work importance calculation program | |
JP6609216B2 (en) | Apparatus and method for analyzing static analysis result of source code |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170203 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171020 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20171031 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171227 |
|
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: 20180130 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180222 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6297919 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |