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 PDF

Info

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
Application number
JP2014103200A
Other languages
Japanese (ja)
Other versions
JP2015219747A (en
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
Priority to JP2014103200A priority Critical patent/JP6297919B2/en
Publication of JP2015219747A publication Critical patent/JP2015219747A/en
Application granted granted Critical
Publication of JP6297919B2 publication Critical patent/JP6297919B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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 Patent Document 1, in order to prevent over-detection of clone code in clone code detection processing and source code evaluation between files and to evaluate and analyze clone code efficiently and correctly, a predetermined code in a clone code detection target file is disclosed. Registers section information for each unit data in the detection table, registers section information for each predetermined unit data in the file to be compared with the clone code detection target file in the detection table, and stores the predetermined unit in the detection table. If the section information between the two data satisfies the predetermined condition, the corresponding section information in the detection table is combined for each file, the section information in the detection table is extracted, registered in the clone code table, and registered in the clone code table The degree of influence on file quality from the recorded section information It has been described.

特許文献2には、開発中のソフトウェアのソースコードを管理するソースコード管理システムに関し、 開発中のソフトウェアのソースコードをリポジトリに管理し、共通化されたソースコードだけをリポジトリに登録し、ソースコードに対する共通化実施方法を提示し、ソースコード中に含まれるコードクローンを検出して、当該ソースコードが共通化されているか否かを判定し、ユーザが共通化を実施したソースコードを、メトリクスから算出したソースコードの改善率を用いて評価し、最善の共通化実施結果を選出することが記載されている。   Patent Document 2 relates to a source code management system for managing source code of software under development, manages the source code of software under development in the repository, registers only the common source code in the repository, and the source code The common code implementation method is presented, the code clone included in the source code is detected, it is determined whether the source code is standardized, and the source code that the user standardized is obtained from the metrics. It is described that evaluation is performed using the calculated improvement rate of the source code and the best common implementation result is selected.

特開2011−48639号公報JP 2011-48639 A 特開2009−86814号公報JP 2009-86814 A

一般にソフトウェア開発において、投入可能な工数内で作業を完了することができ、かつ、効果が最大となるように適切な作業計画を立案することは容易ではない。その理由の一つとして、作業に係る制約の存在がある。上記制約として、異なる作業が何らかの理由で競合し、双方を同時に選択できない排他的な関係(競合関係)の存在がある。排他的な関係とは、複数の作業方針が存在し、それらを両立させることができない関係である。両立させることができない関係は、例えば、一つの案に従って作業を行うと他の案が成立しなくなる場合、時間やリソースの制約によって一方を実施することができない場合である。こうした作業間の排他的な関係を考慮しつつ適切に作業計画を立案しようとすれば、同時に実施可能な作業の組合せを選択した上で効果を算出する必要があり、実施する作業の追加や取り消しを行う度に排他的な関係を確認しつつ効果を検証する必要があり、煩雑かつ膨大な計算を行う必要がある。   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.

作業計画立案支援装置10の概略的な構成を示す図である。1 is a diagram showing a schematic configuration of a work plan planning support apparatus 10. FIG. 作業期待値決定処理S200を説明するデータフロー図である。It is a data flow figure explaining work expected value determination processing S200. 作業情報251の一例である。It is an example of the work information 251. 作業期待値ポリシー252の一例である。It is an example of a work expected value policy 252. 作業優先度情報253の一例である。4 is an example of work priority information 253; 作業期待値情報255の一例である。It is an example of work expected value information 255. 作業競合情報254の一例である。It is an example of work competition information 254. 作業部分集合情報256の一例である。4 is an example of work subset information 256; 作業部分集合決定処理S900を説明するフローチャートである。It is a flowchart explaining work subset determination processing S900. 作業の組合せと制約条件を満たすか否かの関係を示す表である。It is a table | surface which shows the relationship of whether the combination of work | work and a constraint condition are satisfied. 図10の一部の行を抜粋した図である。It is the figure which extracted a part of line of FIG. 第2実施形態の作業計画立案支援装置10の概略的な構成を示す図である。It is a figure which shows schematic structure of the work plan planning assistance apparatus 10 of 2nd Embodiment. 対象ソフトウェアの構成を説明する図である。It is a figure explaining the structure of object software. コードクローン分布解析処理S1400を説明するデータフロー図である。It is a data flow figure explaining code clone distribution analysis processing S1400. 構成要素情報262の一例である。It is an example of the component element information 262. コードクローン検出結果264の一例である。It is an example of a code clone detection result 264. コードクローン分布情報265の一例である。It is an example of the code clone distribution information 265. 作業分析処理S1800を説明するフローチャートである。It is a flowchart explaining work analysis processing S1800. コードクローン分布解析処理1813を説明するフローチャートである。It is a flowchart explaining a code clone distribution analysis process 1813. 作業競合情報生成処理S1815を説明するデータフロー図である。It is a data flow figure explaining work competition information generation processing S1815. テーブル2000の一例である。It is an example of a table 2000. 作業競合情報(辺リスト形式)254Aの一例である。It is an example of work competition information (side list format) 254A. 作業競合情報(マトリクス形式)254Bの一例である。It is an example of work competition information (matrix format) 254B. 作業競合情報生成処理S1815を説明するフローチャートである。It is a flowchart explaining work competition information generation processing S1815. 作業期待値決定処理S2500を説明するデータフロー図である。It is a data flow figure explaining work expected value determination processing S2500. 量的制約ポリシー258の一例である。It is an example of a quantitative constraint policy 258. 作業部分集合、所要時間、及び期待値の関係を列挙した表である。It is the table | surface which enumerated the relationship between a work subset, required time, and an expected value.

以下、実施形態について図面とともに説明する。   Hereinafter, embodiments will be described with reference to the drawings.

第1実施形態First embodiment

図1に第1実施形態において説明する情報処理装置(コンピュータ)である作業計画立案支援装置10の概略的な構成を示している。作業計画立案支援装置10は、ソフトウェア開発における作業計画の立案を支援するための情報を生成する。作業計画立案支援装置10は、作業の効果を表す指標である作業期待値に基づく目的関数について、複数の作業の間の競合関係を制約条件とする組合せ最適化問題(組合せ計画問題)を解くことにより、複数の作業の中から目的関数が最大となる作業群(以下、これを作業部分集合とも称する。)を決定する。上記作業部分集合の決定において、作業計画立案支援装置10には、作業に関する情報(作業情報)、作業期待値を規定する作業期待値ポリシー、制約条件が記述される作業競合情報、及び作業の優先度に関する情報等が与えられる。また作業計画立案支援装置10は、上記作業部分集合の決定に際して作業間の排他的な関係に着目し、動的計画法、分枝限定法、遺伝的アルゴリズム等を随時適用することにより、一度解いた部分問題を重複して解かないように、もしくは不必要な部分問題を解かないようにすることにより、処理の煩雑さや負荷の軽減を図る。   FIG. 1 shows a schematic configuration of a work plan planning support apparatus 10 that is an information processing apparatus (computer) described in the first embodiment. The work plan planning support apparatus 10 generates information for supporting the planning of a work plan in software development. The work planning support apparatus 10 solves a combinatorial optimization problem (combination planning problem) that uses a competitive relationship between a plurality of works as a constraint for an objective function based on a work expectation value that is an index representing work effects. Thus, a work group (hereinafter also referred to as a work subset) having the maximum objective function is determined from a plurality of work. In the determination of the work subset, the work planning support apparatus 10 includes information related to work (work information), work expectation value policy that defines work expectation values, work conflict information describing constraint conditions, and work priority. Information about the degree is given. In addition, the work planning support device 10 pays attention to the exclusive relationship between the work when determining the work subset, and applies the dynamic programming method, the branch and bound method, the genetic algorithm, etc. as needed to solve the problem once. The complexity of processing and the load are reduced by avoiding solving the partial problems that have been duplicated or not solving the unnecessary partial problems.

図1に示すように、作業計画立案支援装置10は、プロセッサ11、記憶装置12、入力装置13、表示装置14、及び通信装置15を備える。これらはバス等の通信手段を介して通信可能に接続されている。   As illustrated in FIG. 1, the work planning support device 10 includes a processor 11, a storage device 12, an input device 13, a display device 14, and a communication device 15. These are connected to be communicable via a communication means such as a bus.

プロセッサ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 processor 11 is configured using, for example, a CPU (Central Processing Unit) and an MPU (Micro Processing Unit). The processor 11 reads out and executes the program stored in the storage device 12, thereby realizing various functions of the work planning support device 10. The storage device 12 (including a main storage device, an auxiliary storage device, and an external storage device) is a device that stores programs and data. For example, a ROM (Read Only Memory), a RAM (Random Access Memory), and an NVRAM (Non Volatile). RAM), hard disk drive, SSD (Solid State Drive), optical storage device (CD-ROM, DVD-ROM, etc.).

入力装置13は、ユーザから情報や指示の入力を受け付けるユーザインタフェースであり、例えば、キーボード、マウス、タッチパネルである。表示装置14は、ユーザに情報を提供するユーザインタフェースであり、例えば、液晶モニタ、LCD(Liquid Crystal Display)である。通信装置15は、通信ネットワーク5を介して外部装置2と通信する通信インタフェースであり、例えば、NIC(Network Interface Card)である。記憶装置12には、例えば、通信ネットワーク5を介して外部装置2からダウンロードされたプログラムやデータが格納される。   The input device 13 is a user interface that receives input of information and instructions from the user, and is, for example, a keyboard, a mouse, or a touch panel. The display device 14 is a user interface that provides information to the user, and is, for example, a liquid crystal monitor or an LCD (Liquid Crystal Display). The communication device 15 is a communication interface that communicates with the external device 2 via the communication network 5, and is, for example, a NIC (Network Interface Card). The storage device 12 stores, for example, programs and data downloaded from the external device 2 via the communication network 5.

同図に示すように、記憶装置12は、作業期待値決定PG211及び作業部分集合決定PG212を記憶する。以下の説明において、これらのプログラムによって実現される機能のことを、順に、作業期待値決定部271、作業部分集合決定部272とも称する。作業期待値決定PG211及び作業部分集合決定PG212は、OS(Operating System)の配下で動作するものであってもよいし、そうでなくてもよい。また作業期待値決定PG211及び作業部分集合決定PG212は、仮想化ソフトウェアによって実現される仮想マシン上で実行されるものであってもよい。   As shown in the figure, the storage device 12 stores an expected work value determination PG 211 and a work subset determination PG 212. In the following description, the functions realized by these programs are also referred to as a work expected value determination unit 271 and a work subset determination unit 272, respectively. The work expected value determination PG 211 and the work subset determination PG 212 may or may not operate under the OS (Operating System). The work expected value determination PG 211 and the work subset determination PG 212 may be executed on a virtual machine realized by virtualization software.

同図に示すように、記憶装置12は、作業情報251、作業期待値ポリシー252、作業優先度情報253、作業競合情報254、作業期待値情報255、及び作業部分集合情報256を記憶する。   As shown in the figure, the storage device 12 stores work information 251, work expected value policy 252, work priority information 253, work conflict information 254, work expected value information 255, and work subset information 256.

図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 planning support device 10. Hereinafter, the functions of the work planning support apparatus 10 will be described with reference to FIG.

作業期待値決定部271は、作業情報251、作業期待値ポリシー252、及び作業優先度情報253に基づき、作業情報251に記載されている各作業の期待値(以下、作業期待値とも称する。)を求め、各作業の作業期待値を記載した作業期待値情報255を生成する。   Based on the work information 251, the work expected value policy 252, and the work priority information 253, the work expected value determination unit 271 expects each work described in the work information 251 (hereinafter, also referred to as work expected value). And expected work value information 255 describing the expected work value of each work is generated.

図3に作業情報251の一例を示す。同図に示すように、作業情報251は、作業ID2511、対象ファイル2512、対象ファイル数2513、及び対象ステップ数2514の各項目からなる複数のレコードで構成されている。このうち作業ID2511には、作業ごとに付与される識別子(以下、作業IDとも称する。)が設定される。対象ファイル2512には、作業の対象となるファイル(以下、対象ファイルとも称する。)の識別子(以下、ファイルIDとも称する。)が設定される。対象ファイル数2513には、その作業の対象ファイルの数が設定される。対象ステップ数2514には、対象ファイルに記述されているプログラムのステップ数が設定される。尚、本実施形態では、作業の対象がファイルである場合を例示するが、作業の対象はモジュール等の他の種類のものであってもよい。   FIG. 3 shows an example of the work information 251. As shown in the figure, the work information 251 is composed of a plurality of records including items of a work ID 2511, a target file 2512, a target file number 2513, and a target step number 2514. Among these, the work ID 2511 is set with an identifier assigned to each work (hereinafter also referred to as work ID). In the target file 2512, an identifier (hereinafter also referred to as a file ID) of a file to be worked (hereinafter also referred to as a target file) is set. In the target file number 2513, the number of target files of the work is set. In the target step number 2514, the number of steps of the program described in the target file is set. In this embodiment, the case where the work target is a file is illustrated, but the work target may be another type such as a module.

図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 policy 252. This work expectation value policy 252 is an example in the case where the effect of work is judged from the viewpoint of how much of a product can be processed as a work target, and the amount of the product is determined by the number of steps in the source code. Etc. The work expected value policy 252 includes information for obtaining the work expected value of each work described in the work information 251. In the expected work value policy 252 shown in FIG. 10, “c” is a work ID, “F” is the number of files, “S” is the number of steps (for example, the number of steps per file), and “P” is the priority. It is stipulated that the value “value (c)” obtained from the following equation when a count that takes a corresponding value (hereinafter also referred to as priority count) is used as a function for obtaining the expected work value of each work Has been.
value (c) = P × F × S Equation 1

尚、作業期待値ポリシー252には、優先度(ランクA〜D)と優先度計数Pとの対応を示す情報(優先度のランクA〜Dに対応して優先度計数Pを順に「3.0」、「2.0」、「1.0」、「0.5」とする旨の情報)も記述されている。   The work expectation value policy 252 includes information indicating the correspondence between the priorities (ranks A to D) and the priority counts P (priority counts P corresponding to the priority ranks A to D in order of “3. 0 ”,“ 2.0 ”,“ 1.0 ”, and“ 0.5 ”are also described.

図5に作業優先度情報253の一例を示す。同図に示すように、作業優先度情報253には、各作業(作業ID2531)について設定される作業優先度2532を示す情報が含まれている。ユーザ等は作業優先度情報253に適切に各作業の優先度を設定することで目的関数に各作業の優先度を反映させることができ、作業計画立案支援装置10による作業部分集合の決定に各作業の優先度を反映させることができる。   FIG. 5 shows an example of the work priority information 253. As shown in the figure, the work priority information 253 includes information indicating the work priority 2532 set for each work (work ID 2531). The user or the like can appropriately reflect the priority of each work in the objective function by appropriately setting the priority of each work in the work priority information 253, and each work subset can be determined by the work planning support apparatus 10. The priority of work can be reflected.

図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 work value information 255. As shown in the figure, the expected work value information 255 describes the expected work value 2552 of each work (work ID 2551). Note that the expected work value information 255 shown in the figure is generated based on the work information 251 in FIG. 3, the expected work value policy 252 in FIG. 4, and the work priority information 253 in FIG. For example, for the work whose work ID is “1” in the work information 251 of FIG. 3, the work priority 2532 is identified as “B” from the work priority information 253 of FIG. 5, and the work priority value policy 252 of FIG. The priority coefficient P is specified as 2.0. From the work information 251 in FIG. 3, the number of files of the work whose work ID is “1” is “3” and the number of steps is “12”, so the work whose work ID is “1” from the work expected value policy 252. The expected working value of
value (c) = P × F × S = 2.0 × 3.0 × 12 = 72
In the expected work value information 255 of FIG. 6, the expected work value “72” is set for the work with the work ID “1”.

図2に戻り、作業部分集合決定部272は、作業期待値決定部271が生成した作業期待値情報255と作業競合情報254とに基づき組合せ最適化計算を行い、目的関数(例えば実施する作業の組合せにおけるvalue(c)の総和(=Σvalue(c)))を最大にする作業部分集合を決定し、決定した作業部分集合を記載した作業部分集合情報256を生成する。   Returning to FIG. 2, the work subset determination unit 272 performs combination optimization calculation based on the expected work value information 255 and the work conflict information 254 generated by the expected work value determination unit 271, and performs an objective function (for example, an operation function to be performed). A work subset that maximizes the sum of value (c) in the combination (= Σvalue (c))) is determined, and work subset information 256 describing the determined work subset is generated.

図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 work conflict information 254. The work competition information 254 describes a combination of works (work IDs) having a competitive relationship. In the figure, for example, “(1, 2)” indicates that the work with the work ID “1” and the work with the work ID “2” are in a competitive relationship. For example, when the work is a code clone correction (removal) work, the work ID “1” is the code clone A correction work, and the work ID “2” is the code clone B correction work, The code clone A correction work and the code clone B correction work are in a competitive relationship (the code clone A and the code clone B are included in the same file (or module) and are shared at the same time. If it is difficult to do). Note that the mode of expression of competing work is not limited to that shown in FIG. For example, combinations of module identifiers that are difficult to verify simultaneously (competitive) or identifiers of documents that are difficult to verify simultaneously (competitive) (for example, chapter and section numbers, page numbers) Or a combination of these.

図8に作業部分集合情報256の一例を示す。作業部分集合情報256には、作業部分集合の構成要素(作業)を示す情報が記載されている。同図に示す作業部分集合情報256は、競合関係にない、作業IDが「2,3,6,10,13,24,27,35」の作業が作業部分集合であることを示している。   FIG. 8 shows an example of the work subset information 256. The work subset information 256 describes information indicating the components (work) of the work subset. The work subset information 256 shown in the drawing indicates that a work having a work ID “2, 3, 6, 10, 13, 24, 27, 35” that is not in a competitive relationship is a work subset.

図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 planning support apparatus 10 when determining a work subset.

まず作業計画立案支援装置10は、作業情報251、作業期待値ポリシー252、作業優先度情報253、及び作業競合情報254を取得し、これらを記憶装置12に記憶する(S911)。これらの情報は、例えば、ユーザ等が予め設定して作業計画立案支援装置10に入力してもよいし、作業計画立案支援装置10が通信ネットワーク5を介して外部装置2から取得してもよい。   First, the work planning support apparatus 10 acquires work information 251, work expected value policy 252, work priority information 253, and work conflict information 254, and stores them in the storage device 12 (S911). Such information may be preset by a user or the like and input to the work planning support apparatus 10, or may be acquired from the external apparatus 2 by the work planning support apparatus 10 via the communication network 5. .

続いて、作業計画立案支援装置10は、作業情報251、作業期待値ポリシー252、及び作業優先度情報253に基づき、作業情報251の各作業の作業期待値を決定し、その結果を記載した作業期待値情報255を生成する(S912)。   Subsequently, the work planning support apparatus 10 determines the work expected value of each work in the work information 251 based on the work information 251, the work expected value policy 252, and the work priority information 253, and the work in which the result is described. Expected value information 255 is generated (S912).

続いて、作業計画立案支援装置10は、作業競合情報254、及びS912で生成した作業期待値情報255に基づき、組合せ最適化計算を行う(S913)。この処理の詳細については後述する。   Subsequently, the work planning support apparatus 10 performs combination optimization calculation based on the work competition information 254 and the expected work value information 255 generated in S912 (S913). Details of this processing will be described later.

続いて、作業計画立案支援装置10は、作業期待値情報255に記載されている作業の作業期待値に基づく目的関数を最大化する作業部分集合情報を決定する(S914)。   Subsequently, the work planning support apparatus 10 determines work subset information that maximizes the objective function based on the work expected value of the work described in the work expected value information 255 (S914).

続いて、作業計画立案支援装置10は、決定した作業部分集合情報256を表示装置14に表示する(S915)。   Subsequently, the work planning support apparatus 10 displays the determined work subset information 256 on the display device 14 (S915).

次に、図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 support apparatus 10 performs the combination optimization calculation S913 based on the following definition, for example.
“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) ... Equation 2

また作業期待値情報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 work value information 255 shown in FIG. 6 as an example), the objective function is
Σvalue (c) = 72 × c1 + 50 × c2 + 48 × c3 + 14 × c4 + 20 × c5 + 36 × c6 Equation 3
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 work 1 to 4 is selected, c1 to c4 are “1” and c5. c6 is “0” and Equation 3 is
Σvalue (c) = 72 * 1 + 50 * 1 + 48 * 1 + 14 * 1 + 20 * 0 + 36 * 0
It becomes. For example, when only operations 1 and 4 are selected, c1 and c4 are “1”, and others are “0”.
Σ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) ・ ・ ・ Equation 5
Expression 5 means that both ci and cj are selected (ci = 1 and cj = 1), that is, ci + cj = 2 is excluded. For example, the work conflict information 254 shown in FIG. Can be expressed as:
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 value information 255 illustrated in FIG. Not}, that is, all combinations that select r (r = 1, 2,... 6) from six different ones. In the figure, the number “1” in the table indicates that the work (any of C1, C2,... C6) is selected, and “0” means that the work is not selected. For example, the No. 40 row is “(C1, C2, C3, C4, C5, C6) = (0, 0, 1, 1, 0, 1)”, but this is “C1 = 0 ( And C2 = 0 (not selected), C3 = 1 (selected), C4 = 1 (selected), C5 = 0 (not selected), and C6 = 1 (selected) ”.

ここで作業競合情報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 work conflict information 254 is the content of FIG. 7, the two tasks c3 and c4 do not compete with “に 対 し c3, c4 ∈ ChosenTasks”, that is, “c3 + c4∈ {0, 1}”. However, in the case of No.40, because “c3 + c4 = 2”, this condition is not satisfied, that is, the combination of the No.40 row cannot be selected. “X” indicating that a combination cannot be selected is set. On the other hand, “O” is set in “Availability” for combinations where work does not compete. In the case of the figure, “O” is set in “Availability” of 22 rows, and the work planning support apparatus 10 determines a combination of operations corresponding to these rows as a work subset.

図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 Equation 3 is set.

ここで「可否」に「○」が設定されている行のうち、Σ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 planning support apparatus 10 performs the work subset {c1, c4, c6} in S914 of FIG. Is generated.

尚、一般的な組合せ計画問題の手法において、作業間の排他的な関係(競合関係)を考慮しつつ最適化の精度を向上させるには、同時に実施可能な作業の組合せを適切に選択した上で効果を算出する必要があり、作業の追加や取り消しを行う度に排他的な関係を確認する必要があり煩雑かつ膨大な計算を行う必要がある。例えば、コードクローンの数が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.

第2実施形態Second embodiment

第1実施形態では、作業情報251、作業優先度情報253、及び作業競合情報254を外部から作業計画立案支援装置10に与えているが、第2実施形態ではこれらを作業計画立案支援装置10が生成する。また第2実施形態では、ソフトウェア開発における作業としてコードクローンの除去に関する作業を取り上げる。例えば、公知のコードクローン解析ツールに大規模のソースコードを入力すると数千から数万個のコードクローンが出力される場合もあるが、修正作業にかけられる工数には限りがあるため、これらのうちどのコードクローンを修正するかを決定(選択)する必要がある。第2実施形態では、作業計画立案支援装置10が、コードクローンの修正作業を最適化(制約条件の下で効果を最大化)する情報を生成する構成を例として説明する。以下、第1実施形態との差異点を中心として説明する。   In the first embodiment, the work information 251, work priority information 253, and work conflict information 254 are given to the work planning support apparatus 10 from the outside. In the second embodiment, these are provided by the work planning support apparatus 10. Generate. In the second embodiment, work related to code clone removal is taken up as work in software development. For example, when a large-scale source code is input to a known code clone analysis tool, thousands to tens of thousands of code clones may be output. However, the number of man-hours required for correction work is limited. It is necessary to determine (select) which code clone is to be modified. In the second embodiment, a configuration in which the work planning support device 10 generates information for optimizing the code clone correction work (maximizing the effect under constraint conditions) will be described as an example. Hereinafter, the description will focus on differences from the first embodiment.

図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 support apparatus 10 of the second embodiment. The work plan planning support apparatus 10 of the second embodiment has the same configuration as the work plan planning support apparatus 10 of the first embodiment. The work planning support device 10 of the second embodiment includes a work analysis PG 220 (code clone detection PG 221, code clone distribution analysis PG 222, code clone modification priority determination PG 223, and work conflict information generation PG 224) in the storage device 12. .), The target software 261, the component element information 262, the modification priority policy 263, the code clone detection result 264, and the code clone distribution information 265 are stored and configured with the work plan planning support apparatus 10 of the first embodiment. Is different.

以下の説明において、作業分析PG220によって実現される機能のことを作業分析部280と、また、コードクローン検出PG221、コードクローン分布解析PG222、コードクローン修正優先度決定PG223、及び作業競合情報生成PG224の夫々によって実現される機能のことを、順に、コードクローン検出部281、コードクローン分布解析部282、コードクローン修正優先度決定部283、及び作業競合情報生成部284とも称する。   In the following description, the functions realized by the work analysis PG 220 include the work analysis unit 280, the code clone detection PG 221, the code clone distribution analysis PG 222, the code clone modification priority determination PG 223, and the work conflict information generation PG 224. The functions realized by each of them are also referred to as a code clone detection unit 281, a code clone distribution analysis unit 282, a code clone modification priority determination unit 283, and a work competition information generation unit 284 in order.

第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 work conflict information 254 in the second embodiment cannot select the code clone correction work related to the module (file) selected once based on such an assumption (the two correction works conflict). Are expressed as a pair of code clone identifiers (hereinafter also referred to as clone IDs).

図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 work analysis unit 280, which is used in the following description. The target software 261 includes a plurality of components (modules). Here, a case where the component of the target software 261 is a module will be described as an example. However, the component may be, for example, a file or a function.

同図に示すように、対象ソフトウェア261は、モジュールm1,m2,・・・,m5を含む。また対象ソフトウェア261には、複数のコードクローン(クローンIDが夫々「1」、「2」、「3」、「4」、「5」の5つのコードクローン)が存在する。例えば、モジュールm1には、クローンIDが夫々「1」、「2」の2つのコードクローンが存在する。   As shown in the figure, the target software 261 includes modules m1, m2,. The target software 261 includes a plurality of code clones (five code clones having clone IDs “1”, “2”, “3”, “4”, and “5”, respectively). For example, in the module m1, there are two code clones with clone IDs “1” and “2”, respectively.

図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 support apparatus 10 when performing code clone distribution analysis.

コードクローン検出部281は、対象ソフトウェア261に対して、例えば、公知のコードクローン検出ツール(例えば「CCFinderX」)を実行することにより、対象ソフトウェア261のソースコード内のコードクローンを検出する。   The code clone detection unit 281 detects a code clone in the source code of the target software 261 by executing a known code clone detection tool (for example, “CCFinderX”) on the target software 261, for example.

コードクローン分布解析部282は、対象ソフトウェア261の構成要素情報262、及びコードクローン検出結果264に基づき、対象ソフトウェア261におけるコードクローンの分布解析を行い、対象ソフトウェア261におけるコードクローンの分布が記載されたコードクローン分布情報265を生成する。   The code clone distribution analysis unit 282 performs code clone distribution analysis in the target software 261 based on the component information 262 of the target software 261 and the code clone detection result 264, and the code clone distribution in the target software 261 is described. Code clone distribution information 265 is generated.

図15に構成要素情報262の一例を示す。同図に示すように、構成要素情報262には、ファイル(ファイル名)とモジュール(モジュール名)との対応を示す情報が記載されている。   FIG. 15 shows an example of the component element information 262. As shown in the figure, the component element information 262 describes information indicating the correspondence between a file (file name) and a module (module name).

図16にコードクローン検出結果264の一例を示す。同図に示すように、コードクローン検出結果264には、コードクローン検出ツールにより検出されたコードクローン(クローンID)とそのコードクローンを含むファイル(ファイル名)との対応を示す情報が記載されている。   FIG. 16 shows an example of the code clone detection result 264. As shown in the figure, the code clone detection result 264 describes information indicating the correspondence between the code clone (clone ID) detected by the code clone detection tool and the file (file name) including the code clone. Yes.

図17にコードクローン分布情報265の一例を示す。同図に示すように、コードクローン分布情報265には、コードクローン(クローンID)とモジュール(モジュール名)との対応を示す情報が含まれている。   FIG. 17 shows an example of the code clone distribution information 265. As shown in the figure, the code clone distribution information 265 includes information indicating the correspondence between the code clone (clone ID) and the module (module name).

図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 clone distribution information 265 and the modification priority policy 263, and the work priority information describing the determined modification priority. 253 is generated. Details of the modification priority policy 263 and the work priority information 253 will be described later.

作業競合情報生成部284は、コードクローン分布情報265及び構成要素情報262に基づき作業競合情報254(作業競合情報(辺リスト形式)254A及び作業競合情報(マトリクス形式)254B)を生成する。   The work conflict information generation unit 284 generates work conflict information 254 (work conflict information (side list format) 254A and work conflict information (matrix format) 254B) based on the code clone distribution information 265 and the component information 262.

このように第2実施形態においては、作業計画立案支援装置10が、作業情報251、作業優先度情報253、及び作業競合情報254を自動的に生成するので、ユーザ等は外部から作業計画立案支援装置10にこれらの情報を与えることなく、作業計画の立案を支援するための情報を得ることができる。   As described above, in the second embodiment, the work planning support device 10 automatically generates the work information 251, the work priority information 253, and the work conflict information 254, so that the user or the like can support the work planning from the outside. The information for supporting the planning of the work plan can be obtained without giving such information to the apparatus 10.

図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 work analysis unit 280 of the work plan planning support apparatus 10 analyzes the target software 261 and generates the work conflict information 254. It is a flowchart to do.

まず作業計画立案支援装置10は、対象ソフトウェア261及び構成要素情報262を取得して記憶装置12に記憶する(S1811)。   First, the work planning support apparatus 10 acquires the target software 261 and the component information 262 and stores them in the storage device 12 (S1811).

続いて、作業計画立案支援装置10は、コードクローン検出ツールを実行し、対象ソフトウェア261に含まれているコードクローンを検出し、コードクローン検出結果264を生成する(S1812)。   Subsequently, the work planning support device 10 executes a code clone detection tool, detects a code clone included in the target software 261, and generates a code clone detection result 264 (S1812).

続いて、作業計画立案支援装置10は、構成要素情報262とコードクローン検出結果264とに基づきコードクローンの分布を解析してコードクローン分布情報265を生成する(S1813)。この処理(以下、コードクローン分布解析処理S1813とも称する。)の詳細については後述する。   Subsequently, the work planning support device 10 analyzes the code clone distribution based on the component information 262 and the code clone detection result 264 to generate the code clone distribution information 265 (S1813). Details of this processing (hereinafter also referred to as code clone distribution analysis processing S1813) will be described later.

続いて、作業計画立案支援装置10は、修正優先度ポリシー263に従い、コードクローン分布情報265に含まれている各コードクローンの修正優先度を決定する(S1814)。   Subsequently, the work planning support apparatus 10 determines the modification priority of each code clone included in the code clone distribution information 265 according to the modification priority policy 263 (S1814).

続いて、作業計画立案支援装置10は、構成要素情報262とコードクローン分布情報265に基づき作業競合情報254を生成する(S1815)。この処理(以下、作業競合情報生成処理S1815とも称する。)については後述する。   Subsequently, the work planning support apparatus 10 generates work competition information 254 based on the component information 262 and the code clone distribution information 265 (S1815). This process (hereinafter also referred to as work competition information generation process S1815) will be described later.

続いて、作業計画立案支援装置10は、S1815で生成した作業競合情報254を表示装置14に表示する(S1816)。   Subsequently, the work planning support apparatus 10 displays the work conflict information 254 generated in S1815 on the display device 14 (S1816).

図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 planning support apparatus 10 sets 1 to a variable N (S18131).

次に作業計画立案支援装置10は、コードクローン検出結果264のN行目の内容を取り出し、クローンIDの列の値を変数CID、ファイル名の列の値を変数FILEに代入する(S18132)。   Next, the work planning support apparatus 10 extracts the contents of the Nth row of the code clone detection result 264, and substitutes the value of the clone ID column into the variable CID and the value of the file name column into the variable FILE (S18132).

次に作業計画立案支援装置10は、構成要素情報262から、ファイル名の列が変数FILEの値と一致する行を検索し、見つかった行のモジュール名の列の値を変数MODULEに代入する(S18133)。   Next, the work planning support apparatus 10 searches the component information 262 for a line whose file name column matches the value of the variable FILE, and substitutes the value of the module name column of the found line into the variable MODULE ( S18133).

次に作業計画立案支援装置10は、コードクローン分布情報265のN行目のクローンIDの列に変数CIDの値、モジュール名の列に変数MODULEの値を入力する(S18134)。   Next, the work planning support apparatus 10 inputs the value of the variable CID in the clone ID column of the Nth row of the code clone distribution information 265 and the value of the variable MODULE in the module name column (S18134).

次に作業計画立案支援装置10は、N行目がコードクローン検出結果264の最終行であるか否かを判定する(S18135)。N行目がコードクローン検出結果264の最終行であれば(S18135:YES)、作業計画立案支援装置10は、コードクローン分布解析処理S1813を終了する。N行目がコードクローン検出結果264の最終行でなければ(S18135:NO)、作業計画立案支援装置10は、N=N+1(S18136)とし、その後、処理はS18132に戻る。   Next, the work planning support apparatus 10 determines whether the Nth row is the last row of the code clone detection result 264 (S18135). If the Nth row is the last row of the code clone detection result 264 (S18135: YES), the work planning support apparatus 10 ends the code clone distribution analysis process S1813. If the Nth line is not the last line of the code clone detection result 264 (S18135: NO), the work plan planning support apparatus 10 sets N = N + 1 (S18136), and then the process returns to S18132.

図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 information generation unit 284 includes a table generation unit 2841, a conflict determination unit 2842, and a matrix element input unit 2843.

テーブル生成部2841は、コードクローン分布情報265に基づき、コードクローンのクローンIDを行及び列とするテーブル2000を生成する。   Based on the code clone distribution information 265, the table generation unit 2841 generates a table 2000 having code clone clone IDs as rows and columns.

図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 competition determination unit 2842 determines whether or not corrections compete for a combination of code clones based on the code clone distribution information 265, and outputs the determined result as work competition information (side list format) 254 </ b> A. . On the other hand, the matrix element input unit 2843 inputs data to the table 2000 generated by the table generation unit 2841 based on the work conflict information (side list format) 254A, and generates work conflict information (matrix format) 254B.

図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 planning support apparatus 10 generates a table 2000 based on the code clone distribution information 265 (S18151).

続いて、作業計画立案支援装置10は、コードクローン分布情報265に基づき、夫々のコードクローンの組に対して修正作業が競合するかどうかを判定し、結果を作業競合情報254として出力する(S18152)。例えば、図17に示したコードクローン分布情報265においては、モジュール名が「m1」の行が2つ(クローンIDが「1」の行とクローンIDが「2」の行)含まれているが、この場合、作業計画立案支援装置10は、コードクローンの組(1,2)は「競合する」と判定する。   Subsequently, the work planning support apparatus 10 determines whether or not correction work competes with each set of code clones based on the code clone distribution information 265, and outputs the result as work conflict information 254 (S18152). ). For example, the code clone distribution information 265 shown in FIG. 17 includes two rows with a module name “m1” (a row with a clone ID “1” and a row with a clone ID “2”). In this case, the work planning support apparatus 10 determines that the code clone set (1, 2) is “conflicting”.

続いて、作業計画立案支援装置10は、作業競合情報254を参照し、テーブル2000の対応する箇所に「×」を入力する。そして作業競合情報254の全ての内容についてテーブル2000への入力が完了すると、作業計画立案支援装置10は、テーブル2000を作業競合情報(マトリクス)254Bとして出力する(S18153)。   Subsequently, the work planning support apparatus 10 refers to the work conflict information 254 and inputs “x” to a corresponding location in the table 2000. When the input to the table 2000 is completed for all the contents of the work conflict information 254, the work plan planning support apparatus 10 outputs the table 2000 as work conflict information (matrix) 254B (S18153).

続いて、図14において、作業計画立案支援装置10のコードクローン優先度決定部283が、修正優先度ポリシー263及びコードクローン分布情報265に基づき作業優先度情報253を生成する処理について説明する。   Next, a process in which the code clone priority determination unit 283 of the work plan planning support apparatus 10 generates the work priority information 253 based on the modification priority policy 263 and the code clone distribution information 265 will be described with reference to FIG.

作業計画立案支援装置10は、例えば、コードクローンの規模の大きさ、修正の容易さ、チーム担当範囲を跨ぐか否か等を基準として修正作業の優先度を決定する。例えば、規模の大きいコードクローンほど修正による改善効果が大きいことから、作業計画立案支援装置10は、規模の大きいコードクローンほど修正作業の優先度を高く設定する。また例えば、修正が容易なコードクローンほど少ない工数で修正を完了できることから、作業計画立案支援装置10は、修正が容易なコードクローンほど修正作業の優先度を高く設定する。また例えば、チーム担当範囲を跨ぐようなコードクローンは保守困難化の原因となることから、作業計画立案支援装置10は、そのようなコードクローン程、修正作業の優先度を高く設定する。   The work planning support apparatus 10 determines the priority of the correction work based on, for example, the size of the code clone, the ease of correction, and whether or not to cross the team charge range. For example, since the code clone having a larger scale has a larger improvement effect due to the correction, the work planning support apparatus 10 sets the priority of the correction work higher for the code clone having a larger scale. Further, for example, since a code clone that can be easily corrected can be corrected with a smaller number of man-hours, the work planning support apparatus 10 sets a higher priority for the correction operation for a code clone that can be easily corrected. Also, for example, code clones that straddle the team's area of responsibility cause maintenance difficulties, so the work planning support apparatus 10 sets higher priority for such code clones and correction work.

図14に示した修正優先度ポリシー263には、このような優先度を決定する際の指針となる情報が設定される。例えば「規模が大きいコードクローンほど優先度が高い」という指針であれば、例えば「30行以上のコードクローンならば優先度A、10行以上29行以下のコードクローンならば優先度B、9行以下のコードクローンならば優先度Cとする」といった内容が修正優先度ポリシー263に設定される。   In the modification priority policy 263 shown in FIG. 14, information serving as a guideline for determining such priority is set. For example, in the case of a guideline that “a code clone with a larger scale has a higher priority”, for example, “priority A for code clones of 30 lines or more, priority B for code clones of 10 lines or more and 29 lines or less, 9 lines” The content of “priority C for the following code clone” is set in the modification priority policy 263.

尚、複数の指針によって優先度を決定するようにしてもよい。例えば、コードクローンの規模と修正の容易さの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 clone distribution information 265 according to the modification priority policy 263 set in this way.

第3実施形態Third embodiment

第1実施形態及び第2実施形態では、作業計画立案支援装置10が作業部分集合を決定するにあたり制約条件として作業競合情報254(複数の作業の間の競合関係)を課していたが、第3実施形態では、制約条件としてさらに作業の投入量に関する条件(時間制約等)を課す。例えば、アジャイルソフトウェア開発(agile software development)においては、リスクの最小化等を目的として、所定の短い周期(例えば1〜4週間)で 計画、要求分析、設計、実装(コーディング)、テスト、文書化等の作業が繰り返し発生する。このような開発手法においては作業計画の立案に際して周期的な反復時間単位(イテレーション等)内に同程度の作業量(作業時間あるいは工数)が配分されるようにすることが望ましい。そこで第3実施形態の作業計画立案支援装置10は、所定時間において最大の効果が得られるように作業部分集合を選択する。   In the first embodiment and the second embodiment, the work plan planning support apparatus 10 imposes work conflict information 254 (competitive relationship between a plurality of tasks) as a constraint condition when determining a work subset. In the third embodiment, a condition (time constraint or the like) related to the input amount of work is further imposed as a constraint condition. For example, in agile software development, planning, requirements analysis, design, implementation (coding), testing, and documentation with a predetermined short period (for example, 1 to 4 weeks) for the purpose of minimizing risk. Such operations occur repeatedly. In such a development method, it is desirable that the same amount of work (work time or man-hours) is distributed within a cyclic repetition time unit (iteration, etc.) when making a work plan. Therefore, the work planning support apparatus 10 of the third embodiment selects a work subset so that the maximum effect can be obtained in a predetermined time.

ここで第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 support apparatus 10 of the third embodiment. The difference from the expected work value determination process S200 of FIG. 2 is that the work subset determination unit 272 of the work planning support apparatus 10 generates the work subset information 256 as the [constraint condition 2] and the quantitative constraint policy 258. It is a point to refer to.

図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 support apparatus 10 according to the third embodiment will be described by taking as an example the case where [constraint condition 2] is imposed in the configuration of the work plan planning support apparatus 10 according to the second embodiment. In the second embodiment, the case where the work is a correction work of a code clone included in the source code of the target software 261 has been described as an example. However, in the third embodiment, the work is a test of the target software 261. A case will be described as an example. The basic functions of the work plan planning support apparatus 10 of the third embodiment are the same as the functions of the work plan planning support apparatus 10 of the second embodiment when the clone ID is read as a test item. In the third embodiment, the work competition information 254 in FIG. 7 indicates the competition relationship between test items. For example, in (1, 2) in FIG. 7, the test item 1 and the test item 2 are in an exclusive relationship. It shows that. In the third embodiment, the combination optimization calculation process S913 in FIG. 9 includes a process related to [Restriction condition 2]. Hereinafter, a description will be given centering on differences from the work planning support device 10 of the second embodiment.

図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 planning support apparatus 10 sets {c1, c6} as the work subset information 256 in S914 in FIG. decide. In addition, when the branch and bound method is applied in the combination optimization calculation process S913 of FIG. 9, for example, in addition to [Constraint 1], the upper limit of Σcost (c) related to [Constraint 2] (for example, the total allowable man-hours) ) The following branches will be excluded.

ところで、作業部分集合情報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 work subset information 256, the work planning support apparatus 10 generates and outputs not only the optimal solution (the solution that maximizes the objective function) but also the suboptimal work subset and approximate solution. May be. For example, as working subset information 256,
(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 target software 261 has been described as an example. The present invention can also be applied when determining a work subset for work related to management.

また本発明は、ソフトウェアが正しく動作するか確認するためのコードであるテストコードの管理に関する作業について拡張して適用することができる。テストコードの管理に関する制約条件としては、例えば、複数のチームでテストを分担して作業を進める場合に、あるチームの修正作業が他のチームに影響してチーム間の調整作業や他のチームの作業待ちが発生しうる関係にある複数のテスト項目を複数チームに跨がって分担させないように(例えば、あるテスト項目をあるチームが選択した場合に、同一のイテレーションの期間内に他のテスト項目を他のチームが選択しないように)するといったものが考えられる。このような制約を課すことで、作業待ち時間の発生等、開発の迅速性が損なわれるリスクを回避することができる。   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 information generation section 271 Work expected value determination unit, 272 Work subset determination unit, S200 Work expected value determination process, S900 Work subset determination process, S1400 Code clone distribution analysis process, S1800 Work conflict information generation process, S1813 Code clone distribution analysis process, S18 5 work conflict information generating process



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.
請求項1に記載の作業計画の立案を支援する方法であって、
前記情報処理装置が、前記組合せ最適化問題を解くことにより、前記目的関数が最大となるもしくは所定の閾値を超える前記作業群を作業部分集合として決定する、
作業計画の立案を支援する方法。
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.
請求項1又は2に記載の作業計画の立案を支援する方法であって、
前記目的関数は、前記作業群を構成する前記作業ごとの効果を表わす指標である作業期待値の総和を算出する関数である、
作業計画の立案を支援する方法。
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.
請求項3に記載の作業計画の立案を支援する方法であって、
前記情報処理装置が、前記作業の量を示す情報と、前記作業の夫々について設定される優先度とに基づき、前記作業期待値を算出する、
作業計画の立案を支援する方法。
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.
請求項1又は2に記載の作業計画の立案を支援する方法であって、
前記情報処理装置が、前記作業の工数、前記作業に要する時間、前記作業の量のうちの少なくともいずれかに関する制約条件をさらに課す、
作業計画の立案を支援する方法。
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.
請求項11に記載の作業計画立案支援装置であって、
前記作業の量を示す情報と、前記作業の夫々について設定される優先度とに基づき、前記作業期待値を算出する作業期待値決定部を備える、
作業計画立案支援装置。
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.
JP2014103200A 2014-05-19 2014-05-19 Method for supporting work planning in software development, and work planning support device Active JP6297919B2 (en)

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)

* Cited by examiner, † Cited by third party
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

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