WO2016157433A1 - ソフトウェア管理装置およびソフトウェア管理方法 - Google Patents

ソフトウェア管理装置およびソフトウェア管理方法 Download PDF

Info

Publication number
WO2016157433A1
WO2016157433A1 PCT/JP2015/060194 JP2015060194W WO2016157433A1 WO 2016157433 A1 WO2016157433 A1 WO 2016157433A1 JP 2015060194 W JP2015060194 W JP 2015060194W WO 2016157433 A1 WO2016157433 A1 WO 2016157433A1
Authority
WO
WIPO (PCT)
Prior art keywords
revision
developer
source code
execution result
level
Prior art date
Application number
PCT/JP2015/060194
Other languages
English (en)
French (fr)
Inventor
清隆 森田
下谷 光生
靖之 野田
亮 小田
健二 長藤
Original Assignee
三菱電機株式会社
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 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to PCT/JP2015/060194 priority Critical patent/WO2016157433A1/ja
Priority to JP2017508942A priority patent/JP6141563B2/ja
Publication of WO2016157433A1 publication Critical patent/WO2016157433A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Definitions

  • the present invention relates to a software management apparatus and a software management method for managing software during software development.
  • a bug such as an error in the source code
  • the cause of the bug found in build and test is identified.
  • a bug may occur at this time. Therefore, shortening the time required to identify the cause of the bug leads to a reduction in the number of steps for software development.
  • the present invention has been made to solve such a problem, and an object thereof is to provide a software management apparatus and a software management method capable of efficiently identifying the cause of a bug.
  • a software management apparatus includes a revision information acquisition unit that acquires revision information including revisions corresponding to each line of source code in a source file and a revision person who revised the source code. And a developer level management unit that manages the developer level indicating the developer level of the source code and extracts the developer level of the developer corresponding to the revision included in the revision information acquired by the revision information acquisition unit. Based on the revision information acquired by the revision information acquisition unit and the developer level extracted by the developer level management unit, control is performed so that each line of the source code is displayed separately according to the developer level. And a control unit.
  • the software management method obtains revision information including revisions corresponding to each line of the source code in the source file and the revision person who revised the source code, and indicates the level of the developer of the source code.
  • the developer level of the developer corresponding to the revision person included in the obtained revision information is extracted, and each line of source code is extracted based on the obtained revision information and the extracted developer level. Control the display to be distinguished according to the developer level.
  • the software management apparatus includes a revision information acquisition unit that acquires revision information including a revision corresponding to each line of the source code in the source file and a revision person who revised the source code, and a developer of the source code.
  • the developer level management unit that manages the developer level indicating the level of the developer and extracts the developer level of the developer corresponding to the revision included in the revision information acquired by the revision information acquisition unit, and the revision information acquisition unit Based on the obtained revision information and the developer level extracted by the developer level management unit, a control unit that controls to display each line of the source code separately according to the developer level of the developer Therefore, it is possible to efficiently identify the cause of the bug.
  • the software management method obtains revision information including the revision corresponding to each line of the source code in the source file and the revision person who revised the source code, and sets the developer level indicating the level of the developer of the source code.
  • the developer level of the developer corresponding to the revision person included in the obtained revision information is extracted, and each line of the source code is revised based on the obtained revision information and the extracted developer level. Since the display is controlled so as to be distinguished according to the developer level, the cause of the bug can be efficiently identified.
  • FIG. 1 is a block diagram showing an example of the configuration of the software management apparatus 1 according to the first embodiment of the present invention.
  • FIG. 1 shows the minimum necessary components constituting the software management apparatus 1.
  • the software management apparatus 1 includes at least a revision information acquisition unit 2, a developer level management unit 3, and a control unit 4.
  • the revision information acquisition unit 2 acquires revision information including a revision corresponding to each line of the source code in the source file and a revision person who revised the source code.
  • the developer level management unit 3 manages the developer level indicating the level of the developer of the source code including the revision, and the developer corresponding to the revision included in the revision information acquired by the revision information acquisition unit 2. Extract developer level.
  • control unit 4 Based on the revision information acquired by the revision information acquisition unit 2 and the developer level extracted by the developer level management unit 3, the control unit 4 distinguishes and displays each line of the source code according to the developer level. Control to do.
  • FIG. 2 is a diagram illustrating an example of a hardware configuration corresponding to a software function in the software management apparatus 1.
  • the revision information acquisition unit 2, the developer level management unit 3, and the control unit 4 are realized as functions of the processor 5 when the processor 5 in FIG. 2 executes a program stored in the memory 6 or the like, for example. However, these may be realized in cooperation with a plurality of processors 5, for example.
  • FIG. 3 is a block diagram showing an example of the configuration of the software management apparatus 7.
  • the software management device 7 includes a revision information acquisition unit 2, a developer level management unit 3, and a control unit 4.
  • the revision information acquisition unit 2 is connected to the revision information database 8
  • the developer level management unit 3 is connected to the developer level database 9
  • the control unit 4 is connected to the display device 10.
  • the revision information database 8 is composed of, for example, a storage device such as a hard disk (HDD: Hard Disk Drive) or a semiconductor memory, and is referred to as a version management tool (in the present invention, referred to as a revision management tool for easy understanding).
  • Stores revision information managed by FIG. 4 is a diagram showing an example of revision information stored in the revision information database 8. As shown in FIG. 4, the revision information includes source code revision information and revision correspondence information.
  • the source code is associated with the revision number of the revised source code for each line of the source code.
  • the revision correspondence information associates a revision number with commit information that is information related to a commit including a committer (revision person) name and commit date (date information).
  • the revision management tool corrects revision information each time it is revised by the committer.
  • the revision number is assigned an integer value in the order of revision, but is not limited to this.
  • the revision number may be assigned a hash value for each revision.
  • the revision management tool is assumed to be provided outside the software management apparatus 7.
  • the revision information acquisition unit 2 acquires the revision information of the target file from the revision information database 8.
  • the target file means, for example, a file that becomes a target when the cause of the bug is identified when a bug occurs in each process in the above-mentioned software development, or the revision source has existing source code. Refers to the file that is subject to revision.
  • the revision information acquisition unit 2 outputs the acquired revision information to each of the developer level management unit 3 and the control unit 4.
  • the developer level database 9 is composed of a storage device such as a hard disk (HDD: Hard Disk Drive) or a semiconductor memory, for example, and stores a developer level which is a level of a developer who develops software.
  • FIG. 5 is a diagram showing an example of the developer level stored in the developer level database 9. As shown in FIG. 5, in the developer level database 9, the developer name and the developer level of the developer are stored in association with each other.
  • the developer level is set in various ways. For example, there is a method in which a developer is appropriately evaluated and the developer level is manually set (manually). Also, for example, there is a method of automatically setting the developer level based on the working years of the developer.
  • the developer level database 9 stores a developer level that is the same as the committer included in the revision information stored in the revision information database 8 and a developer level of a developer other than the committer. That is, in the developer level database 9, a person who can be involved in software development is defined as a developer, and the developer level of the developer is stored.
  • the developer level management unit 3 extracts the developer level from the developer level database 9 based on the revision information input from the revision information acquisition unit 2.
  • the developer level management unit 3 outputs the extracted developer level to the control unit 4.
  • control unit 4 Based on the revision information input from the revision information acquisition unit 2 and the developer level input from the developer level management unit 3, the control unit 4 sets each line of the source code in the target file according to the developer level. Control the display so that it is distinguished.
  • the display device 10 displays the source code distinguished according to the developer level according to the control of the control unit 4.
  • FIG. 6 is a flowchart showing an example of the operation of the software management apparatus 7. Note that, prior to step S101, the revision information acquisition unit 2 knows which file is the target file.
  • step S 101 the revision information acquisition unit 2 acquires revision information from the revision information database 8. Specifically, the revision information acquisition unit 2 acquires, for example, revision information including source code revision information and revision correspondence information as shown in FIG. Then, the revision information acquisition unit 2 outputs the revision correspondence information to the developer level management unit 3 and outputs the source code revision information and the revision correspondence information to the control unit 4.
  • step S102 the developer level management unit 3 acquires the developer level from the developer level database 9 based on the revision correspondence information included in the revision information input from the revision information acquisition unit 2.
  • step S102 will be described with reference to FIG.
  • step S201 the developer level management unit 3 receives the committer name included in the revision correspondence information.
  • step S202 the developer level management unit 3 searches the developer level database 9 for a developer name corresponding to the committer name input from the revision information acquisition unit 2, and the committer name matches the developer name.
  • the developer level of the developer is extracted from the developer level database 9. Then, the developer level management unit 3 outputs the extracted developer level to the control unit 4.
  • the developer level management unit 3 searches the developer level database 9 for the developer name “Tanaka” corresponding to the committer name “Tanaka” when the revision number is “5”, for example.
  • the developer level “35” of “Tanaka” is extracted.
  • control unit 4 determines the source code of the target file based on the revision information input from the revision information acquisition unit 2 and the developer level input from the developer level management unit 3. Control each line of to be displayed separately according to the developer level. Specifically, for example, as shown in FIG. 8, the control unit 4 performs control so that each line of the source code is displayed in different colors according to the level of the developer.
  • the display device 10 displays each line of source code that is color-coded according to the developer level.
  • the revision information shown in FIG. 4 is input from the revision information acquisition unit 2 to the control unit 4 and the administrator level shown in FIG. 5 is input from the developer level management unit 3 to the control unit 4. Since the committer is “Sasaki” when the revision number is “1”, the control unit 4 sets the source code line of the revision number “1” in a color corresponding to the developer level “90” of “Sasaki”. Control to display. Similarly, the line of the source code with the revision number “5” is controlled to be displayed in a color corresponding to the developer level “35” of “Tanaka”. Control is performed so that the line of the source code of the revision number “3” is displayed in a color corresponding to the developer level “60” of “Suzuki”.
  • each line of the source code by color
  • red when the working years of the developer are less than one year, and the working years of the developer is 1 It may be displayed in yellow when the year is less than 10 years and in blue when the developer has been working for more than 10 years.
  • each line of source code is not based on the developer level of the developer who edited the source code, but on the developer level of the committer who received the edited source code and revised the source code revision. Are displayed in different colors. Therefore, the committer's developer level reflected in the color coding of each line of the source code includes not only the ability to edit (coding) the source code but also the ability to check the source code edited by other developers. To capture.
  • ⁇ Modification 1> In general, a developer's development level increases over time as the developer's working years progress or the developer's capabilities improve. In order to reflect the improvement of the developer level, the developer level stored in the developer level database 9 is also periodically updated. However, for example, when the display as shown in FIG. 8 is performed, the current development in which the developer level is higher than the past developer level with respect to the revised source code line when the past developer level is low. There is a problem that the colors are classified according to the developer level (that is, the colors cannot be classified according to the developer level at the time of revision). The first modification solves such a problem.
  • FIG. 9 is a diagram showing an example of the developer level stored in the developer level database 9.
  • the developer level database 9 stores a developer level history for each update.
  • FIG. 9 shows that three updates (updates A, B, and C) have been performed.
  • the update date and time are shown together with each revision.
  • the development level of “Tanaka” is “35” for update A, “50” for update B, and “80” for update C.
  • the developer level setting method is the same as described above.
  • FIG. 10 is a flowchart showing details of step S102 in FIG. Since other operations are the same as those in FIG. 6, the description thereof is omitted here.
  • step S301 the committer name and the commit date / time included in the revision correspondence information are input to the developer level management unit 3.
  • step S302 the developer level management unit 3 extracts the developer level from the developer level database based on the committer name and the commit date input from the revision information acquisition unit 2. Then, the developer level management unit 3 outputs the extracted developer level to the control unit 4.
  • the revision information shown in FIG. 4 is input from the revision information acquisition unit 2 to the developer level management unit 3 and the developer level shown in FIG. 9 is stored in the developer level database 9.
  • the developer level management unit 3 searches the developer level database 9 for the developer name “Tanaka” corresponding to the committer name “Tanaka” at the revision number “5”, for example. Then, among the developers “Tanaka” in each of the updates A to C, the developer level “50” in the latest update B that is earlier than the commit date is extracted.
  • each line of the source code can be displayed in different colors according to the development level at the time of revision.
  • ⁇ Modification 2> In the above description, for example, as illustrated in FIG. 5, a case has been described in which there is one developer level item for each developer, but this is not a limitation. For example, a developer's ability may change for each type of programming language. Assuming such a case, the developer level may be a plurality of items.
  • FIG. 11 is a diagram showing an example of the developer level stored in the developer level database 9.
  • three items of “C / C ++ development level”, “Java (registered trademark) development level”, and “Cobol development level” are set for each developer.
  • the developer level management unit 3 may extract “C / C ++ development level” as the developer level. That is, the developer level management unit 3 can extract a developer level that matches the actual situation.
  • each line of the source code is displayed separately according to the developer level. Therefore, when a bug is found, the source code with a low developer level is given priority. It is possible to efficiently identify the cause of a bug by examining the above. In addition, when the existing source code is revised, the development level of each line of the source code can be grasped.
  • revision information as shown in FIG. 4 is stored in the revision information database 8, for example, by management of the revision management tool.
  • revision management tool that manages revision information in which a source code and a revised revision number of the source code are not associated with each line of the source code.
  • the revision information managed by the revision management tool does not include source code revision information as shown in FIG.
  • the revision information acquisition unit 2 acquires all the revision information of the target file from the revision information database 8, and generates source code revision information as shown in FIG. 4 based on the acquired revision information. May be.
  • each committer is stored separately. The same applies to the developer name stored in the developer level database 9. In this case, it is necessary to associate the committed committer with the developer name.
  • each line of the source code is displayed in different colors according to the developer level.
  • the corresponding source code line may be highlighted in bold or the like, or a symbol that identifies the corresponding source code line may be added. Further, a line of source code whose developer level is lower than a predetermined threshold value may be listed.
  • FIG. 12 is a block diagram showing an example of the configuration of the software management apparatus 11 according to the second embodiment.
  • the software management apparatus 11 is characterized by including an execution result management unit 12 and a source code extraction unit 13.
  • the execution result management unit 12 is connected to the execution result database 14. Since other configurations and operations are the same as those in the first embodiment, detailed description thereof is omitted here.
  • the revision information acquisition unit 2 acquires the revision information of the target file from the revision information database 8 and acquires the execution result of the target file.
  • the execution result of the target file means success or failure of execution in each step of software development (for example, a build step and a test step).
  • the execution result is input to the revision information acquisition unit 2 from, for example, a build tool used in the build process or a test tool used in the test process.
  • the execution result and the revision information are input to the revision information acquisition unit 2 in association with each other by a plug-in.
  • the revision information acquisition unit 2 acquires the execution result and revision information when the target file is executed.
  • the revision information acquisition unit 2 outputs the acquired revision information to the developer level management unit 3 and the control unit 4, and outputs the acquired execution result and revision information to the execution result management unit 12.
  • the execution result management unit 12 manages the execution result input from the revision information acquisition unit 2 and the revision information so as to be associated with each other and stored in the execution result database 14. Further, the execution result management unit 12 outputs the revision information stored in the execution result database 14 to the source code extraction unit 13.
  • the execution result database 14 is composed of a storage device such as a hard disk (HDD: Hard Disk Drive) or a semiconductor memory, for example, and stores the execution result and revision information in association with each other by the management of the execution result management unit 12.
  • FIG. 13 is a diagram illustrating an example of execution results stored in the execution result database 14.
  • the execution result database 14 stores an execution result and revision information in association with each executed revision number. For example, the execution result of the revision number “1” and the revision number “5” indicates “ ⁇ (failure)”, and the execution result of the revision number “3” indicates “ ⁇ (success)”. Show.
  • the source code extraction unit 13 extracts a source code line based on the revision information input from the execution result management unit 12.
  • the source code extraction unit 13 outputs the extracted source code line to the developer level management unit 3.
  • the execution result management unit 12 and the source code extraction unit 13 are realized as functions of the processor 5 when the processor 5 of FIG. 2 executes a program stored in the memory 6 or the like, for example. However, these may be realized in cooperation with a plurality of processors 5, for example.
  • FIG. 14 is a flowchart showing an example of the operation of the software management apparatus 11. Note that step S406, step S408, and step S409 in FIG. 14 correspond to each of step S102 and step S103 in FIG.
  • the revision information acquisition unit 2 acquires the revision information of the target file from the revision information database 8, and acquires the execution result of the target file.
  • the revision information acquisition unit 2 acquires the execution result and revision information including the source code revision information shown in FIG. In FIG. 15, the revision number of the current revision of the source code is “5”, and revision numbers “2”, “3”, “4”, and “5” including revisions revised in the past are also included. Indicates that the revision is affected by the revision. That is, the revision information acquisition unit 2 acquires the revision information of the target file including the source code revision information shown in FIG. 15 and the execution result thereof.
  • step S402 the execution result management unit 12 manages the execution result input from the revision information acquisition unit 2 and the revision information so as to be associated with each other and stored in the execution result database 14.
  • the execution result database 14 stores revision information and execution results for the revision number “5” acquired by the revision information acquisition unit 2 this time.
  • step S403 the execution result management unit 12 determines whether or not the execution result of the current target file is a failure. If the execution result is failure, the process proceeds to step S404. On the other hand, if the execution result is not a failure (that is, the execution result is a success), the process is terminated. In the example of FIG. 13, the execution result of the current target file (revision number “5”) is “ ⁇ (failure)”.
  • step S404 the execution result management unit 12 determines whether revision information of a parent revision whose execution result has been successful in the past has been stored in the execution result database 14. If the revision information of the parent revision whose execution result is successful is stored in the execution result database 14, the process proceeds to step S405. On the other hand, if the revision information of the parent revision whose execution result is successful is not stored in the execution result database 14, the process proceeds to step S408 and the same processing as in the first embodiment is performed.
  • the parent revision means a past revision (revision) in the target file.
  • the parent revision of the revision number “5” is the revision number “1” and the revision number “3”, and the execution result when the revision number is “3” is “ ⁇ (success)”.
  • step S405 the execution result management unit 12 extracts the revision information of the current revision and the revision information of the latest parent revision of the parent revisions that have been successful in the past from the execution result database 14, and the source code extraction unit 13 Output to.
  • the execution result management unit 12 executes the revision information of revision number “5” (current revision) and the revision information of revision number “3” (latest parent revision that was successful in the past). Extract from the database 14 and output to the source code extraction unit 13.
  • the source code revision information included in the revision information with the revision number “3” shown in FIG. 13 is the source code revision information shown in FIG. 16, for example.
  • the source code extraction unit 13 takes the difference between the revision information of the current revision input from the execution result management unit 12 and the revision information of the latest parent revision that has succeeded in the past, and obtains the source code line of the difference part. Identify the revised committer. For example, if the difference between the revision information of the revision number “5” (current revision) and the revision information of the revision number “3” (the latest parent revision that has succeeded in the past) is taken, the difference part is the revision number “4”. ”And the source code corresponding to the revision number“ 5 ”. Then, the revised committer is specified when the vision number is “4” and the revision number is “5”.
  • step S407 the control unit 4 converts each line of the source code of the target file into the source code based on the revision information input from the revision information acquisition unit 2 and the developer level input from the developer level management unit 3. Control is performed so as to distinguish and display according to the developer level of the committer specified by the extraction unit 13. Specifically, for example, as shown in FIG. 17, the control unit 4 displays each line of the source code corresponding to the revision number “4” and the revision number “5” in different colors according to the level of the developer. To control.
  • the display device 10 displays each line of source code that is color-coded according to the developer level.
  • the source code lines of the difference portion between the revision information that has failed this time and the latest revision information that has succeeded in the past are displayed in different colors.
  • the cause of the bug can be identified more efficiently than in the first embodiment in which all the lines are displayed in different colors.
  • FIG. 18 is a block diagram showing an example of the configuration of the software management apparatus 15 according to the third embodiment.
  • the software management apparatus 15 includes a developer evaluation unit 16 instead of the source code extraction unit 13 of the software management apparatus 11 (see FIG. 12) according to the second embodiment. It is characterized by that. Since other configurations and operations are the same as those in the second embodiment, detailed description thereof is omitted here.
  • the developer evaluation unit 16 evaluates the developer based on the revision information input from the execution result management unit 12. Specifically, the developer evaluation unit 16 identifies a developer (commiter) that lowers the developer level, and determines to lower the developer level of the developer.
  • the developer evaluation unit 16 is realized as a function of the processor 5 when the processor 5 of FIG. 2 executes a program stored in the memory 6 or the like, for example. However, these may be realized in cooperation with a plurality of processors 5, for example.
  • FIG. 19 is a flowchart showing an example of the operation of the software management apparatus 15.
  • the revision information acquisition unit 2 acquires the revision information of the target file from the revision information database 8, and acquires the execution result of the target file.
  • the revision information acquisition unit 2 acquires the execution result and revision information including the source code revision information shown in FIG. In FIG. 20, the revision number of the current revision of the source code is “6”, and revision numbers “2”, “3”, “4”, “6” including revisions revised in the past are also included. Indicates that the revision is affected by the revision. That is, the revision information acquisition unit 2 acquires the revision information of the target file having the source code shown in FIG. 20 and the execution result thereof.
  • step S502 the execution result management unit 12 manages the execution result input from the revision information acquisition unit 2 and the revision information so as to be associated with each other and stored in the execution result database 14.
  • the execution result database 14 stores the revision information and the execution result for the revision number “6” acquired by the revision information acquisition unit 2 this time.
  • step S503 the execution result management unit 12 determines whether or not the execution result of the current target file is successful. If the execution result is successful, the process proceeds to step S504. On the other hand, if the execution result is not successful (that is, the execution result is failure), the process is terminated.
  • the execution result of the current target file (revision number “6”) is “ ⁇ (success)”.
  • step S504 the execution result management unit 12 determines whether or not the execution result of the latest parent revision stored in the execution result database 14 is a failure.
  • the process proceeds to step S505.
  • the parent revision of the revision number “6” is the revision number “1”, the revision number “3”, and the revision number “5”, and the revision number “1” and the revision number “5”.
  • the execution result is “ ⁇ (failure)”.
  • step S505 the execution result management unit 12 extracts the revision information of the current revision and the revision information of the latest parent revision of the parent revisions that have failed in the past from the execution result database 14, and the developer evaluation unit 16 Output to.
  • the execution result management unit 12 executes the revision information of revision number “6” (current revision) and the revision information of revision number “5” (latest parent revision that failed in the past). Extracted from the database 14 and output to the developer evaluation unit 16. It is assumed that the source code revision information included in the revision information with the revision number “5” shown in FIG. 21 is the source code revision information shown in FIG.
  • the developer evaluation unit 16 takes the difference between the revision information of the current revision input from the execution result management unit 12 and the revision information of the latest parent revision that failed in the past, and in the latest parent revision that failed in the past
  • the committer of the revision corresponding to the difference part is specified, and it is determined that the developer level of the specified committer is lowered. For example, if the difference between the revision information of revision number “6” that is the current revision and the revision information of revision number “5” that is the latest parent revision that failed in the past is taken, Is the line of the source code corresponding to the revision number “6” (in the example, the revision revised from the latest parent revision that failed in the past to the current revision is the revision with the revision number “6”).
  • the revision number “6” Only the revision number “6” is targeted, but when there are a plurality of revisions revised from the latest parent revision that failed in the past, the source code line corresponding to each revision is targeted). In the latest parent revision that failed in the past, this line corresponds to the revision with revision number “5” (in the example, the revision number of the latest parent revision that failed in the past is the same as the revision number corresponding to the difference part). But may be different). As a result, it can be estimated that the bug was embedded by the revision with the revision number “5”, so the developer evaluation unit 16 identifies the committer revised at the revision number “5” from the revision information, and the developer level of the committer Is determined to lower.
  • step S506 the developer level management unit 3 lowers the developer level of the developer corresponding to the committer specified by the developer evaluation unit 16. That is, the developer level management unit 3 updates the developer level stored in the developer level database 9. For example, when the developer level shown in FIG. 5 is stored in the developer level database 9, the developer level management unit 3 develops the committer (here “Tanaka”) specified by the developer evaluation unit 16. The person level is lowered from “35” to “30” (see FIG. 23). How to lower the developer level may be determined by an arbitrary method.
  • the third embodiment since a committer that has failed to be revised in the past is identified and the developer level of the committer is lowered, a more appropriate developer level evaluation can be performed. .
  • a more appropriate developer level evaluation can be performed.
  • by distinguishing and displaying each line of the source code according to the updated developer level it is possible to efficiently identify the cause of the bug.
  • the development level of each line of the source code can be grasped.
  • step S505 and step S506 in FIG. 19 the committer name determined to lower the development level and the source code revised by the committer are displayed, and the user determines whether to lower the committer development level. You may make it confirm. In this case, developers can be evaluated more carefully.
  • FIG. 24 is a flowchart showing an example of the operation of the software management apparatus 15 according to the fourth embodiment.
  • step S601 the revision information acquisition unit 2 acquires the revision information of the target file from the revision information database 8, and acquires the execution result of the target file.
  • step S602 the execution result management unit 12 manages the execution result input from the revision information acquisition unit 2 and the revision information so as to be associated with each other and stored in the execution result database 14.
  • step S603 the execution result management unit 12 determines whether or not the execution result of the target file this time (second timing) is a failure. If the execution result is unsuccessful, the process proceeds to step S604. On the other hand, if the execution result is not a failure (that is, the execution result is a success), the process proceeds to step S606.
  • step S604 the execution result management unit 12 determines whether revision information of a parent revision whose execution result has been successful in the past (first timing) has been stored in the execution result database 14.
  • the process proceeds to step S605.
  • the process ends.
  • step S605 the execution result management unit 12 extracts the revision information of the current revision and the revision information of the latest parent revision among the parent revisions that have been successful in the past from the execution result database 14, and the developer evaluation unit 16 Output to.
  • the developer evaluation unit 16 takes the difference between the revision information of the current revision input from the execution result management unit 12 and the revision information of the latest parent revision that has failed in the past, and bugs the revision corresponding to the difference part. Stored as a cause candidate revision (first revision).
  • the bug cause candidate revision may be stored in the developer evaluation unit 16 or may be stored in another storage unit (not shown).
  • the source code revision information shown in FIG. 25 is included in the revision information of the revision of this time (the execution result is failed in this case), and the source code revision information shown in FIG. 26 is the revision of the latest parent revision that has succeeded in the past.
  • the developer evaluation unit 16 sets the revision number “7” and the revision number “8” corresponding to the difference portion of each revision information as bug cause candidate revisions.
  • FIG. 25 shows source code revision information executed when the revision number is “8”
  • FIG. 26 shows source code revision information executed when the revision number is “6”.
  • step S606 the developer evaluation unit 16 determines whether or not a bug cause candidate revision is stored. If the bug cause candidate revision is stored, the process proceeds to step S607. On the other hand, if no bug cause candidate revision is stored, the process is terminated.
  • step S607 the developer evaluation unit 16 takes the difference between the revision information of the latest parent revision that has failed in the past and the revision information (second revision) of the current (third timing) and calculates the difference. It is determined whether the portion includes a line of source code corresponding to the bug cause candidate revision. If the source code line corresponding to the bug cause candidate revision is included, the process proceeds to step S608. On the other hand, if the source code line corresponding to the bug cause candidate revision is not included, the process ends.
  • step S608 the developer evaluation unit 16 determines that the revision level of the committer of the revision in which the source code of the difference portion has been revised among the revisions stored in the bug cause candidate revision will be lowered, and the bug cause candidate.
  • the source code line corresponding to the revision is decided to raise the developer level of the committer who revised this time.
  • the source code revision information shown in FIG. 27 is included in the revision information of the current revision (here, the execution result is successful).
  • the revision number “7” and the revision number “7” in the source code revision information shown in FIG. 8 ” is a bug cause candidate revision.
  • FIG. 27 shows the source code revision information executed when the revision number is “10”.
  • step S609 the developer level management unit 3 changes the developer level of the developer corresponding to the committer specified by the developer evaluation unit 16. Specifically, the developer level management unit 3 develops a committer that revised the source code that caused the execution result to fail (the committer that was revised when the revision number was “7” in the example of FIG. 25). Lower the level Further, the developer level management unit 3 revises the committer that revised the source code that caused the execution result to be successful (resolved the past failure) (in the example of FIG. 27, the revision number is 9). Raise the developer level.
  • step S610 all revisions stored as bug cause candidate revisions are erased from the bug cause candidate revisions.
  • the fourth embodiment it is possible to identify a committer that has failed to be revised in the past with higher accuracy than in the third embodiment. Moreover, since the evaluation of the committer which solved the past failure is raised, a more appropriate developer evaluation can be performed.
  • step S608 and step S609 in FIG. 24 the committer name determined to change the development level and the source code revised by the committer are displayed, and whether or not to change the committer development level is determined. You may make it confirm with a user. In this case, developers can be evaluated more carefully.
  • a problematic source code line causing a bug
  • the error or warning is issued. It is characterized by lowering the evaluation of the committer that caused the.
  • the present embodiment can be used as an object in addition to the static analysis process.
  • the configuration of the software management apparatus according to the fifth embodiment is the same as that of the software management apparatus 15 (see FIG. 18) according to the third embodiment. However, it is not always necessary to store execution results of past revisions in the execution result database 14. In the following description, it is assumed that the software management apparatus according to the fifth embodiment is the software management apparatus 15 shown in FIG.
  • FIG. 28 is a flowchart showing an example of the operation of the software management apparatus 15 according to the fifth embodiment.
  • step S701 the revision information acquisition unit 2 acquires the revision information of the target file from the revision information database 8, and acquires the execution result of the target file.
  • the execution result of the target file in the fifth embodiment is an execution result in a static analysis process in software development, and points out a portion (line) where an error or warning of the source code occurs. Is. In the static analysis process, it is determined whether or not the source code conforms to the coding rule or the like (does not violate the coding rule or the like). Is input to the revision information acquisition unit 2. Further, the execution result and the revision information are input to the revision information acquisition unit 2 in association with the plug-in.
  • the revision information acquisition unit 2 acquires the execution result and the revision information including the source code revision information shown in FIG. FIG. 29 shows that the line of the source code with the revision number “6” has been revised this time. That is, the revision information acquisition unit 2 acquires the revision information of the target file including the source code revision information shown in FIG. 29 and the execution result thereof.
  • step S702 the execution result management unit 12 manages the execution result input from the revision information acquisition unit 2 and the revision information so as to be associated with each other and stored in the execution result database 14.
  • the execution result database 14 stores the revision information of the revision number “6” acquired by the revision information acquisition unit 2 this time and the execution result (not shown in FIG. 30).
  • step S703 the execution result management unit 12 determines whether or not there is an error or warning in the execution result of the current target file. If there is a location where an error or warning has occurred, the process proceeds to step S704. On the other hand, if there is no error or warning, the process is terminated.
  • step S 704 the execution result management unit 12 extracts the revision information of the current revision and the revision information of the latest parent revision in the past from the execution result database 14 and outputs them to the developer evaluation unit 16.
  • the execution result management unit 12 extracts revision information of revision number “6” (current revision) and revision information of revision number “5” from the execution result database 14, and developer evaluation unit 16 is output.
  • the developer evaluation unit 16 takes the difference between the revision information of the current revision input from the execution result management unit 12 and the revision information of the latest parent revision in the past, and the difference part is an error or warning due to static analysis. If it is a corresponding part of the above, it is determined that the developer level of the committer that revised the relevant part of the error or warning due to the static analysis of the difference part will be lowered.
  • step S705 the developer level management unit 3 lowers the developer level of the developer corresponding to the committer specified by the developer evaluation unit 16. That is, the developer level management unit 3 updates the developer level stored in the developer level database 9. For example, when the developer level shown in FIG. 5 is stored in the developer level database 9, the developer level management unit 3 develops the committer (here “Sasaki”) specified by the developer evaluation unit 16. The person level is lowered from “90” to “80” (see FIG. 31).
  • the development level of the committer describing the source code that generates an error or warning in the static analysis is lowered, a more appropriate developer level evaluation can be performed. it can.
  • step S704 and step S705 in FIG. 28 the committer name determined to lower the development level and the source code revised by the committer are displayed, and the user determines whether to lower the committer development level. You may make it confirm. In this case, developers can be evaluated more carefully.
  • FIG. 32 is a block diagram showing an example of the configuration of the software management apparatus 17 according to the sixth embodiment.
  • the software management apparatus 17 is characterized by including a file level evaluation unit 18. Since other configurations and operations are the same as those in the first embodiment, detailed description thereof is omitted here.
  • the file level evaluation unit 18 Assess at least one of the levels.
  • FIG. 33 is a flowchart showing an example of the operation of the software management apparatus 17. Note that step S801 and step S802 in FIG. 33 correspond to step S101 and step S102 in FIG.
  • the file level evaluation unit 18 evaluates the level of the target file. Specifically, the file level evaluation unit 18 is based on the revision information of the target file input from the revision information acquisition unit 2 and the developer level contributing to the target file input from the developer level management unit 3. For example, as shown in FIG. 34, the number of lines of the source code is totaled for each developer level. Then, the file level evaluation unit 18 calculates the ratio of the number of lines of the source code revised by the committer of the developer level or higher determined in advance for all lines of the source code of the target file, and calculates the calculated ratio. At the file level.
  • the predetermined developer level is arbitrarily set by the user.
  • step S804 the file level evaluation unit 18 determines whether or not one software is composed of a plurality of files including the target file. If the software is composed of a plurality of files including the target file, the process proceeds to step S805. On the other hand, if the software is not composed of a plurality of files including the target file, the process is terminated.
  • step S805 the file level evaluation unit 18 calculates the level of the software based on the levels of a plurality of files constituting the software.
  • the software level may be an average of the levels of each file, for example. Note that when performing the process of step S805, the level of each file constituting the software needs to be calculated in step S803.
  • the level of the target file or the level of software including the target file can be grasped.
  • the software management apparatus described above can also be applied to a software management apparatus constructed as a system by appropriately combining a server and a mobile communication terminal (for example, a mobile phone, a smartphone, a tablet terminal, etc.).
  • a mobile communication terminal for example, a mobile phone, a smartphone, a tablet terminal, etc.
  • each function or each component of the software management apparatus is distributed and arranged in each function for constructing the system.
  • the function of the software management apparatus can be arranged in the server.
  • a software management system can be constructed by providing elements.
  • the function of the software management apparatus can be arranged in the server and the mobile communication terminal.
  • the user is provided with the display device 10 having the same function as the display device 10 shown in FIG. 3, and the server 20 has the revision information acquisition unit 2 and developer level management unit 3 shown in FIG.
  • a software management system can be constructed by providing the mobile communication terminal 21 with the control unit 4 shown in FIG.
  • software for executing the operation in the above-described embodiment may be incorporated in, for example, a server or a mobile communication terminal.
  • the above software management method obtains revision information including the revision corresponding to each line of the source code in the source file and the revision person who revised the source code, and the source including the revision person.
  • the developer level indicating the level of the developer of the code is managed, the developer level of the developer corresponding to the revision included in the acquired revision information is extracted, the acquired revision information, the extracted developer level, and Based on the above, each line of the source code is controlled to be displayed separately according to the developer level.
  • Each of the unit 16 and the file level evaluation unit 18 is realized by the processor 5 of FIG. 2 operating according to a software program stored in the memory 6 or the like.
  • each of the revision information acquisition unit 2, the developer level management unit 3, the control unit 4, the execution result management unit 12, the source code extraction unit 13, the developer evaluation unit 16, and the file level evaluation unit 18 is provided. May be configured as hardware (for example, an arithmetic / processing circuit configured to perform a specific calculation or process on an electric signal). Further, both of the above may be mixed.
  • Each of the software revision information acquisition unit 2, the developer level management unit 3, the control unit 4, the execution result management unit 12, the source code extraction unit 13, the developer evaluation unit 16, and the file level evaluation unit 18, A concept that combines the hardware revision information acquisition unit 2, the developer level management unit 3, the control unit 4, the execution result management unit 12, the source code extraction unit 13, the developer evaluation unit 16, and the file level evaluation unit 18.
  • the word “processing circuit” can be used instead of the word “part”.

Landscapes

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

Abstract

 本発明は、バグの原因を効率的に特定することが可能なソフトウェア管理装置およびソフトウェア管理方法を提供することを目的とする。本発明によるソフトウェア管理装置は、ソースファイル内のソースコードの各行に対応するリビジョンと、ソースコードを改訂した改訂者とを含むリビジョン情報を取得するリビジョン情報取得部と、ソースコードの開発者のレベルを示す開発者レベルを管理し、リビジョン情報取得部で取得されたリビジョン情報に含まれる改訂者に対応する開発者の開発者レベルを抽出する開発者レベル管理部と、リビジョン情報取得部で取得されたリビジョン情報と、開発者レベル管理部で抽出された開発者レベルとに基づいて、ソースコードの各行を開発者レベルに応じて区別して表示するように制御する制御部とを備える。

Description

ソフトウェア管理装置およびソフトウェア管理方法
 本発明は、ソフトウェア開発時におけるソフトウェアの管理を行うソフトウェア管理装置およびソフトウェア管理方法に関する。
 大規模なソフトウェア開発では、技術レベルが異なる複数の開発者によって1つのプログラムが開発されている。
 ソフトウェアの開発では、ソースコードを記述するコーディングの工程後に、ソースコードを実行可能なプログラムに変換するビルドの工程、ソースコードがコーディングルール等に反していないか等のチェックを行う静的解析の工程、およびプログラムが正しく動作するかチェックを行うテストの工程の各工程を行う。
 コーディング後の各工程でバグ(ソースコードの誤り等)が発見された場合は、バグの原因を特定してコーディングを再度行う必要があるが、特にビルドおよびテストで発見されるバグの原因の特定には多大な時間を要する。また、プログラムの編集では、ソースコードが新たに追加されたり、ソースコードの変更が行われたりするが、このときにもバグが生じることがある。従って、バグの原因を特定するために要する時間を短縮することは、ソフトウェア開発の工数を削減することにつながる。
 上記の問題の対策として、従来、1つのソースファイル内のソースコードの各行がどのリビジョンで改訂されたのかを確認することができるソースコードの改訂履歴を示すツールを、バグの原因の特定に役立てていた。また、ソフトウェアの開発者のレベルを評価する技術が開示されている(例えば、特許文献1,2参照)。
特開2006-59276号公報 特開2010-186394号公報
 ソースコードの改訂履歴に基づいてバグの原因を特定する方法を用いても、ソースコード量が多い大規模なソフトウェア開発においてはバグの原因を特定するためには時間がかかるという問題がある。
 また、特許文献1,2の技術を用いれば、ソースファイルごとの信頼度を把握することができる。すなわち、開発者のレベルが低い場合は、ソースファイルの信頼度が低いと判断することができ、バグが生じると信頼度が低いソースファイルを優先してバグの原因を特定する作業を行うことができる。しかし、このような場合であっても、ソースコードの量が増えるとバグの原因を特定するために時間を要し、バグの原因を効率的に特定しているとはいえなかった。
 本発明は、このような問題を解決するためになされたものであり、バグの原因を効率的に特定することが可能なソフトウェア管理装置およびソフトウェア管理方法を提供することを目的とする。
 上記の課題を解決するために、本発明によるソフトウェア管理装置は、ソースファイル内のソースコードの各行に対応するリビジョンと、ソースコードを改訂した改訂者とを含むリビジョン情報を取得するリビジョン情報取得部と、ソースコードの開発者のレベルを示す開発者レベルを管理し、リビジョン情報取得部で取得されたリビジョン情報に含まれる改訂者に対応する開発者の開発者レベルを抽出する開発者レベル管理部と、リビジョン情報取得部で取得されたリビジョン情報と、開発者レベル管理部で抽出された開発者レベルとに基づいて、ソースコードの各行を開発者レベルに応じて区別して表示するように制御する制御部とを備える。
 また、本発明によるソフトウェア管理方法は、ソースファイル内のソースコードの各行に対応するリビジョンと、ソースコードを改訂した改訂者とを含むリビジョン情報を取得し、ソースコードの開発者のレベルを示す開発者レベルを管理し、取得したリビジョン情報に含まれる改訂者に対応する開発者の開発者レベルを抽出し、取得したリビジョン情報と、抽出された開発者レベルとに基づいて、ソースコードの各行を開発者レベルに応じて区別して表示するように制御する。
 本発明によると、ソフトウェア管理装置は、ソースファイル内のソースコードの各行に対応するリビジョンと、ソースコードを改訂した改訂者とを含むリビジョン情報を取得するリビジョン情報取得部と、ソースコードの開発者のレベルを示す開発者レベルを管理し、リビジョン情報取得部で取得されたリビジョン情報に含まれる改訂者に対応する開発者の開発者レベルを抽出する開発者レベル管理部と、リビジョン情報取得部で取得されたリビジョン情報と、開発者レベル管理部で抽出された開発者レベルとに基づいて、ソースコードの各行を改訂者の開発者レベルに応じて区別して表示するように制御する制御部とを備えるため、バグの原因を効率的に特定することが可能となる。
 また、ソフトウェア管理方法は、ソースファイル内のソースコードの各行に対応するリビジョンと、ソースコードを改訂した改訂者とを含むリビジョン情報を取得し、ソースコードの開発者のレベルを示す開発者レベルを管理し、取得したリビジョン情報に含まれる改訂者に対応する開発者の開発者レベルを抽出し、取得したリビジョン情報と、抽出された開発者レベルとに基づいて、ソースコードの各行を改訂者の開発者レベルに応じて区別して表示するように制御するため、バグの原因を効率的に特定することが可能となる。
 本発明の目的、特徴、態様、および利点は、以下の詳細な説明と添付図面とによって、より明白となる。
本発明の実施の形態1によるソフトウェア管理装置の構成の一例を示すブロック図である。 本発明の実施の形態1によるソフトウェア管理装置におけるソフトウェア機能に対応するハードウェア構成の一例を示す図である。 本発明の実施の形態1によるソフトウェア管理装置の構成の他の一例を示すブロック図である。 本発明の実施の形態1によるリビジョン情報データベースに格納されるリビジョン情報の一例を示す図である。 本発明の実施の形態1による開発者レベルデータベースに格納される開発者レベルの一例を示す図である。 本発明の実施の形態1によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態1によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態1による表示の一例を示す図である。 本発明の実施の形態1による開発者レベルデータベースに格納される開発者レベルの一例を示す図である。 本発明の実施の形態1によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態1による開発者レベルデータベースに格納される開発者レベルの一例を示す図である。 本発明の実施の形態2によるソフトウェア管理装置の構成の一例を示すブロック図である。 本発明の実施の形態2による実行結果データベースに格納される実行結果の一例を示す図である。 本発明の実施の形態2によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態2によるリビジョン情報取得部が取得するリビジョン情報の一例を示す図である。 本発明の実施の形態2による実行結果データベースに格納されるリビジョン情報の一例を示す図である。 本発明の実施の形態2による表示の一例を示す図である。 本発明の実施の形態3によるソフトウェア管理装置の構成の一例を示すブロック図である。 本発明の実施の形態3によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態3によるリビジョン情報取得部が取得するリビジョン情報の一例を示す図である。 本発明の実施の形態3による実行結果データベースに格納される実行結果の一例を示す図である。 本発明の実施の形態3による実行結果データベースに格納されるリビジョン情報の一例を示す図である。 本発明の実施の形態3による評価後の開発者レベルの一例を示す図である。 本発明の実施の形態4によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態4によるソフトウェア管理装置の動作を説明するための図である。 本発明の実施の形態4によるソフトウェア管理装置の動作を説明するための図である。 本発明の実施の形態4によるソフトウェア管理装置の動作を説明するための図である。 本発明の実施の形態5によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態5によるリビジョン情報取得部が取得するリビジョン情報の一例を示す図である。 本発明の実施の形態5による実行結果データベースに格納される実行結果の一例を示す図である。 本発明の実施の形態5による評価後の開発者レベルの一例を示す図である。 本発明の実施の形態6によるソフトウェア管理装置の構成の一例を示すブロック図である。 本発明の実施の形態6によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態6によるファイルの信頼度を説明するための図である。 本発明の実施の形態によるソフトウェア管理システムの構成の一例を示すブロック図である。 本発明の実施の形態によるソフトウェア管理システムの構成の他の一例を示すブロック図である。
 本発明の実施の形態について、図面に基づいて以下に説明する。
 <実施の形態1>
 まず、本発明の実施の形態によるソフトウェア管理装置の構成について説明する。なお、本実施の形態においては、ソフトウェア管理装置単体で実現した場合について説明する。
 図1は、本発明の実施の形態1によるソフトウェア管理装置1の構成の一例を示すブロック図である。なお、図1では、ソフトウェア管理装置1を構成する必要最小限の構成要素を示している。
 図1に示すように、ソフトウェア管理装置1は、少なくともリビジョン情報取得部2と、開発者レベル管理部3と、制御部4とを備えている。
 リビジョン情報取得部2は、ソースファイル内のソースコードの各行に対応するリビジョンと、ソースコードを改訂した改訂者とを含むリビジョン情報を取得する。
 開発者レベル管理部3は、改訂者を含むソースコードの開発者のレベルを示す開発者レベルを管理し、リビジョン情報取得部2で取得されたリビジョン情報に含まれる改訂者に対応する開発者の開発者レベルを抽出する。
 制御部4は、リビジョン情報取得部2で取得されたリビジョン情報と、開発者レベル管理部3で抽出された開発者レベルとに基づいて、ソースコードの各行を開発者レベルに応じて区別して表示するように制御する。
 図2は、ソフトウェア管理装置1におけるソフトウェア機能に対応するハードウェア構成の一例を示す図である。
 リビジョン情報取得部2、開発者レベル管理部3、および制御部4は、例えば図2のプロセッサ5がメモリ6等に記憶されたプログラムを実行することにより、当該プロセッサ5の機能として実現される。ただし、これらは、例えば複数のプロセッサ5が連携して実現されてもよい。
 次に、図1のリビジョン情報取得部2、開発者レベル管理部3、および制御部4を含むソフトウェア管理装置1の他の構成について説明する。
 図3は、ソフトウェア管理装置7の構成の一例を示すブロック図である。
 図3に示すように、ソフトウェア管理装置7は、リビジョン情報取得部2と、開発者レベル管理部3と、制御部4とを備えている。また、リビジョン情報取得部2はリビジョン情報データベース8に接続され、開発者レベル管理部3は開発者レベルデータベース9に接続され、制御部4は表示装置10に接続されている。
 リビジョン情報データベース8は、例えば、ハードディスク(HDD:Hard Disk Drive)または半導体メモリなどの記憶装置から構成されており、バージョン管理ツール(本発明では、説明を分かりやすくするためリビジョン管理ツールと呼ぶこととする)によって管理されるリビジョン情報を格納している。図4は、リビジョン情報データベース8に格納されるリビジョン情報の一例を示す図である。図4に示すように、リビジョン情報は、ソースコード改訂情報とリビジョン対応情報とを含んでいる。
 ソースコード改訂情報は、ソースコードと、当該ソースコードを改訂したリビジョン番号とをソースコードの行ごとに対応付けている。ソースコード改訂情報によって、ソースコードの各行がどのリビジョンで改訂されたのかを判別することができる。リビジョン対応情報は、リビジョン番号と、コミッター(改訂者)名およびコミット日時(日時情報)等を含むコミットに関する情報であるコミット情報とを対応付けている。リビジョン管理ツールは、コミッターによって改訂されるごとにリビジョン情報の修正等を行う。
 なお、本実施の形態1では、リビジョン番号は、改訂順に整数値が割り当てられているが、これに限るものではない。例えば、リビジョン番号は、改訂ごとにハッシュ値が割り当てられてもよい。また、リビジョン管理ツールは、ソフトウェア管理装置7の外部に設けられているものとする。
 リビジョン情報取得部2は、リビジョン情報データベース8から対象ファイルのリビジョン情報を取得する。ここで、対象ファイルとは、例えば、上述のソフトウェア開発における各工程でバグが生じた場合に当該バグの原因を特定する際に対象となるファイルのことをいい、または改訂者が既存のソースコードを改訂する際に対象となるファイルのことをいう。リビジョン情報取得部2は、取得したリビジョン情報を開発者レベル管理部3および制御部4の各々に出力する。
 開発者レベルデータベース9は、例えば、ハードディスク(HDD:Hard Disk Drive)または半導体メモリなどの記憶装置から構成されており、ソフトウェアを開発する開発者のレベルである開発者レベルを格納している。図5は、開発者レベルデータベース9に格納される開発者レベルの一例を示す図である。図5に示すように、開発者レベルデータベース9では、開発者名と、当該開発者の開発者レベルとが対応付けて格納されている。開発者レベルは、種々の方法で設定される。例えば、開発者を適宜に評価して、人手によって(手動で)開発者レベルを設定する方法がある。また、例えば、開発者の勤務年数等に基づいて自動的に開発者レベルを設定する方法がある。
 なお、開発者レベルデータベース9は、リビジョン情報データベース8に格納されているリビジョン情報に含まれるコミッターと同一である開発者の開発レベル、およびコミッター以外の開発者の開発者レベルを格納している。すなわち、開発者レベルデータベース9では、ソフトウェアの開発に関与し得る者を開発者とし、当該開発者の開発者レベルを格納している。
 開発者レベル管理部3は、リビジョン情報取得部2から入力されたリビジョン情報に基づいて、開発者レベルデータベース9から開発者レベルを抽出する。開発者レベル管理部3は、抽出した開発者レベルを制御部4に出力する。
 制御部4は、リビジョン情報取得部2から入力されたリビジョン情報と、開発者レベル管理部3から入力された開発者レベルとに基づいて、対象ファイルにおけるソースコードの各行を開発者レベルに応じて区別して表示するように制御する。表示装置10は、制御部4の制御に従って、開発者レベルに応じて区別されたソースコードを表示する。
 次に、本実施の形態1によるソフトウェア管理装置7の動作について説明する。なお、本文の例を用いた説明では、説明を分かりやすくするために1つのソースファイルに着目して動作を説明するが、本発明は複数のソースファイルに対しても適用可能である。
 図6は、ソフトウェア管理装置7の動作の一例を示すフローチャートである。なお、ステップS101の前において、リビジョン情報取得部2は、どのファイルを対象ファイルとしているのかを把握しているものとする。
 ステップS101において、リビジョン情報取得部2は、リビジョン情報データベース8からリビジョン情報を取得する。具体的には、リビジョン情報取得部2は、例えば図4に示すようなソースコード改訂情報およびリビジョン対応情報を含むリビジョン情報をリビジョン情報データベース8から取得する。そして、リビジョン情報取得部2は、リビジョン対応情報を開発者レベル管理部3に出力し、ソースコード改訂情報およびリビジョン対応情報を制御部4に出力する。
 ステップS102において、開発者レベル管理部3は、リビジョン情報取得部2から入力されたリビジョン情報に含まれるリビジョン対応情報に基づいて、開発者レベルデータベース9から開発者レベルを取得する。
 ここで、ステップS102の詳細について、図7を用いて説明する。
 ステップS201において、開発者レベル管理部3には、リビジョン対応情報に含まれるコミッター名が入力される。
 ステップS202において、開発者レベル管理部3は、リビジョン情報取得部2から入力されたコミッター名に対応する開発者名を開発者レベルデータベース9から検索し、コミッター名と開発者名とが一致した場合に当該開発者の開発者レベルを開発者レベルデータベース9から抽出する。そして、開発者レベル管理部3は、抽出した開発者レベルを制御部4に出力する。
 例えば、リビジョン情報取得部2から開発者レベル管理部3に図4に示すリビジョン対応情報が入力され、開発者レベルデータベース9には図5に示す開発者レベルが格納されているものとする。このような場合において、開発者レベル管理部3は、例えばリビジョン番号「5」のときのコミッター名「Tanaka」に対応する開発者名「Tanaka」を開発者レベルデータベース9から検索し、開発者名「Tanaka」の開発者レベル「35」を抽出する。
 図6に戻り、ステップS103において、制御部4は、リビジョン情報取得部2から入力されたリビジョン情報と、開発者レベル管理部3から入力された開発者レベルとに基づいて、対象ファイルのソースコードの各行を開発者レベルに応じて区別して表示するように制御する。具体的には、制御部4は、例えば図8に示すように、ソースコードの各行を開発者のレベルに応じて色分けして表示するように制御する。表示装置10には、開発者レベルに応じて色分けされたソースコードの各行が表示される。
 例えば、リビジョン情報取得部2から制御部4に図4に示すリビジョン情報が入力され、開発者レベル管理部3から制御部4に図5に示す管理者レベルが入力されたものとする。制御部4は、リビジョン番号が「1」のときのコミッターは「Sasaki」であるため、リビジョン番号「1」のソースコードの行を、「Sasaki」の開発者レベル「90」に対応する色で表示するように制御する。他も同様に、リビジョン番号「5」のソースコードの行を、「Tanaka」の開発者レベル「35」に対応する色で表示するように制御する。リビジョン番号「3」のソースコードの行を、「Suzuki」の開発者レベル「60」に対応する色で表示するように制御する。
 なお、ソースコードの各行を色分けして表示する方法として、例えば開発者レベルが勤務年数に基づいている場合は、開発者の勤務年数が1年未満のときは赤色、開発者の勤務年数が1年~10年未満のときは黄色、開発者の勤務年数が10年以上であるときは青色にして表示するようにしてもよい。
 本文ではソースコードを編集する(コーディングする)開発者とコミッターとが同一であるとして説明しているが、ソースコードを編集する開発者とコミッターとが異なる場合もあり得る。このような場合は、ソースコードを編集した開発者の開発者レベルではなく、編集されたソースコードを受け取ってソースコードのリビジョンの改訂を行ったコミッターの開発者レベルをもとにソースコードの各行が色分け表示される。よって、ソースコードの各行の色分けに反映されるコミッターの開発者レベルは、単にソースコードを編集する(コーディングの)能力としてではなく、他の開発者が編集したソースコードをチェックする能力も含めて捉えることになる。
 次に、本実施の形態1の他の例(変形例1,2)について説明する。
 <変形例1>
 一般的に、開発者の開発レベルは、開発者の勤務年数の経過、または開発者の能力の向上に従って経時的に上がる。開発者レベルの向上を反映させるべく、開発者レベルデータベース9に格納されている開発者レベルも定期的に更新される。しかし、例えば図8に示すような表示を行う場合において、過去の開発者レベルが低いときに改訂したソースコードの行に対して、開発者レベルが過去の開発者レベルよりも上がった現在の開発者レベルに応じて色分けされてしまう(すなわち、改訂時の開発者レベルに応じた色分けができない)という問題がある。本変形例1は、このような問題を解決するものである。
 図9は、開発者レベルデータベース9に格納される開発者レベルの一例を示す図である。
 図9に示すように、開発者レベルデータベース9では、更新ごとに開発者レベルの履歴を格納している。図9では、3回の更新(更新A,B,C)が行われたことを示している。また、各リビジョンとともに更新日時を示している。例えば、開発者「Tanaka」に注目すると、「Tanaka」の開発レベルは、更新Aのときは「35」、更新Bのときは「50」、更新Cのときは「80」であることが分かる。なお、開発者レベルの設定方法は、上述と同様である。
 図10は、図6のステップS102の詳細を示すフローチャートである。その他の動作は、図6と同様であるため、ここでは説明を省略する。
 ステップS301において、開発者レベル管理部3には、リビジョン対応情報に含まれるコミッター名およびコミット日時が入力される。
 ステップS302において、開発者レベル管理部3は、リビジョン情報取得部2から入力されたコミッター名およびコミット日時に基づいて、開発者レベルを開発者レベルデータベースから抽出する。そして、開発者レベル管理部3は、抽出した開発者レベルを制御部4に出力する。
 例えば、リビジョン情報取得部2から開発者レベル管理部3に図4に示すリビジョン対応情報が入力され、開発者レベルデータベース9には図9に示す開発者レベルが格納されているものとする。このような場合において、開発者レベル管理部3は、例えばリビジョン番号「5」のときのコミッター名「Tanaka」に対応する開発者名「Tanaka」を開発者レベルデータベース9から検索する。そして、各更新A~Cにおける開発者「Tanaka」のうち、コミット日時よりも過去であって最新の更新Bにおける開発者レベル「50」を抽出する。
 上記より、ソースコードの各行を改訂時の開発レベルに応じて色分けして表示することができる。
 <変形例2>
 上述では、例えば図5に示すように、各開発者に対する開発者レベルの項目は1つである場合について説明したが、これに限るものではない。例えば、開発者の能力は、プログラミング言語の種別ごとに変わる場合がある。このような場合を想定して、開発者レベルを複数の項目にしてもよい。
 図11は、開発者レベルデータベース9に格納される開発者レベルの一例を示す図である。図11の例では、各開発者に対して、「C/C++開発レベル」、「Java(登録商標)開発レベル」、および「Cobol開発レベル」の3つの項目が設定されている。
 上記より、開発者レベル管理部3は、例えば対象ファイルのソースコードのプログラミング言語がC/C++である場合は、「C/C++開発レベル」を開発者レベルとして抽出すればよい。すなわち、開発者レベル管理部3は、実状に合った開発者レベルを抽出することができる。
 以上のことから、本実施の形態1によれば、ソースコードの各行を開発者レベルに応じて区別して表示しているため、バグが発見された場合に開発者レベルが低いソースコードを優先して調べることによって、バグの原因を効率的に特定することが可能となる。また、既存のソースコードを改訂する場合において、ソースコードの各行の開発レベルを把握することができる。
 なお、上記では、リビジョン管理ツールの管理によって、例えば図4に示すようなリビジョン情報がリビジョン情報データベース8に格納されている場合について説明した。しかし、ソースコードと当該ソースコードを改訂したリビジョン番号とをソースコードの行ごとに対応付けていないリビジョン情報を管理するリビジョン管理ツールがある。当該リビジョン管理ツールで管理されるリビジョン情報には、図4に示すようなソースコード改訂情報が含まれていない。このような場合において、リビジョン情報取得部2は、リビジョン情報データベース8から対象ファイルのリビジョン情報を全て取得し、取得したリビジョン情報に基づいて図4に示すようなソースコード改訂情報を生成するようにしてもよい。
 リビジョン情報データベース8において、同姓のコミッターが複数存在する場合は、各コミッターを区別して格納する。開発者レベルデータベース9に格納される開発者名についても同様である。この場合、区別したコミッターと開発者名とを対応させる必要がある。
 上記では、開発者レベルに応じてソースコードの各行を色分けして表示する場合について説明したが、これに限るものではない。開発者レベルが予め定められた閾値よりも低い場合は、対応するソースコードの行を太字等で強調したり、対応するソースコードの行が分かるような記号を付したりしてもよい。また、開発者レベルが予め定められた閾値よりも低いソースコードの行をリストアップしてもよい。
 <実施の形態2>
 まず、本発明の実施の形態2によるソフトウェア管理装置の構成について説明する。
 図12は、本実施の形態2によるソフトウェア管理装置11の構成の一例を示すブロック図である。
 図12に示すように、本実施の形態2によるソフトウェア管理装置11は、実行結果管理部12およびソースコード抽出部13を備えることを特徴としている。実行結果管理部12は、実行結果データベース14に接続されている。その他の構成および動作は、実施の形態1と同様であるため、ここでは詳細な説明を省略する。
 リビジョン情報取得部2は、リビジョン情報データベース8から対象ファイルのリビジョン情報を取得するとともに、対象ファイルの実行結果を取得する。ここで、本実施の形態2による対象ファイルの実行結果とは、ソフトウェア開発の各工程(例えば、ビルド工程、テスト工程)での実行の成否のことをいう。実行結果は、例えばビルド工程で用いられるビルドツール、またはテスト工程で用いられるテストツールからリビジョン情報取得部2に入力される。このとき、実行結果とリビジョン情報とは、プラグインで対応付けられてリビジョン情報取得部2に入力される。このように、リビジョン情報取得部2は、対象ファイルを実行した時に、その実行結果とリビジョン情報とを取得する。リビジョン情報取得部2は、取得したリビジョン情報を開発者レベル管理部3および制御部4に出力し、取得した実行結果とリビジョン情報とを実行結果管理部12に出力する。
 実行結果管理部12は、リビジョン情報取得部2から入力された実行結果とリビジョン情報とを対応付けて実行結果データベース14に格納するように管理する。また、実行結果管理部12は、実行結果データベース14に格納しているリビジョン情報をソースコード抽出部13に出力する。
 実行結果データベース14は、例えば、ハードディスク(HDD:Hard Disk Drive)または半導体メモリなどの記憶装置から構成されており、実行結果管理部12の管理によって実行結果とリビジョン情報とを対応付けて格納している。図13は、実行結果データベース14に格納される実行結果の一例を示す図である。図13に示すように、実行結果データベース14では、実行したリビジョン番号ごとに、実行結果とリビジョン情報とを対応付けて格納している。例えば、リビジョン番号「1」およびリビジョン番号「5」の実行結果は「×(失敗)」であることを示しており、リビジョン番号「3」の実行結果は「○(成功)」であることを示している。
 ソースコード抽出部13は、実行結果管理部12から入力されたリビジョン情報に基づいて、ソースコードの行を抽出する。ソースコード抽出部13は、抽出したソースコードの行を開発者レベル管理部3に出力する。
 なお、実行結果管理部12およびソースコード抽出部13は、例えば図2のプロセッサ5がメモリ6等に記憶されたプログラムを実行することにより、当該プロセッサ5の機能として実現される。ただし、これらは、例えば複数のプロセッサ5が連携して実現されてもよい。
 次に、本実施の形態2によるソフトウェア管理装置11の動作について説明する。
 図14は、ソフトウェア管理装置11の動作の一例を示すフローチャートである。なお、図14のステップS406、ステップS408、およびステップS409は、図6のステップS102およびステップS103の各々に対応しているため、ここでは説明を省略する。
 ステップS401において、リビジョン情報取得部2は、リビジョン情報データベース8から対象ファイルのリビジョン情報を取得するとともに、対象ファイルの実行結果を取得する。例えば、リビジョン情報取得部2は、実行結果と、図15に示すソースコード改訂情報を含むリビジョン情報とを取得する。なお、図15では、ソースコードの現リビジョンのリビジョン番号が「5」であり、それよりも過去に改訂されたリビジョンも含むリビジョン番号「2」、「3」、「4」、「5」のリビジョンの改訂内容の影響を受けていることを示している。すなわち、リビジョン情報取得部2は、図15に示すソースコード改訂情報を含む対象ファイルのリビジョン情報と、その実行結果を取得する。
 ステップS402において、実行結果管理部12は、リビジョン情報取得部2から入力された実行結果とリビジョン情報とを対応付けて実行結果データベース14に格納するように管理する。図13の例では、実行結果データベース14には、リビジョン情報取得部2が今回取得したリビジョン番号「5」におけるリビジョン情報と実行結果とが格納されている。
 ステップS403において、実行結果管理部12は、今回の対象ファイルの実行結果が失敗であるか否かの判断を行う。実行結果が失敗である場合は、ステップS404に移行する。一方、実行結果が失敗でない(すなわち、実行結果が成功である)場合は、処理を終了する。図13の例では、今回の対象ファイル(リビジョン番号「5」)の実行結果は「×(失敗)」となっている。
 ステップS404において、実行結果管理部12は、過去に実行結果が成功である親リビジョンのリビジョン情報が実行結果データベース14に格納されているか否かの判断を行う。実行結果が成功である親リビジョンのリビジョン情報が実行結果データベース14に格納されている場合は、ステップS405に移行する。一方、実行結果が成功である親リビジョンのリビジョン情報が実行結果データベース14に格納されていない場合は、ステップS408に移行して実施の形態1と同様の処理が行われる。ここで、親リビジョンとは、対象ファイルにおける過去のリビジョン(改訂)のことをいう。図13の例では、リビジョン番号「5」の親リビジョンはリビジョン番号「1」およびリビジョン番号「3」であり、リビジョン番号「3」のときの実行結果は「○(成功)」である。
 ステップS405において、実行結果管理部12は、今回のリビジョンのリビジョン情報と、過去に成功した親リビジョンのうちの最新の親リビジョンのリビジョン情報とを実行結果データベース14から抽出してソースコード抽出部13に出力する。図13の例では、実行結果管理部12は、リビジョン番号「5」(今回のリビジョン)のリビジョン情報と、リビジョン番号「3」(過去に成功した最新の親リビジョン)のリビジョン情報とを実行結果データベース14から抽出してソースコード抽出部13に出力する。なお、図13に示すリビジョン番号「3」のリビジョン情報に含まれるソースコード改訂情報は、例えば図16に示すソースコード改訂情報である。
 ソースコード抽出部13は、実行結果管理部12から入力された今回のリビジョンのリビジョン情報と、過去に成功した最新の親リビジョンのリビジョン情報との差分をとり、当該差分部分のソースコードの行を改訂したコミッターを特定する。例えば、リビジョン番号「5」(今回のリビジョン)のリビジョン情報と、リビジョン番号「3」(過去に成功した最新の親リビジョン)のリビジョン情報との差分をとると、当該差分部分はリビジョン番号「4」およびリビジョン番号「5」に対応するソースコードの行となる。そして、ビジョン番号「4」およびリビジョン番号「5」のときに改訂したコミッターを特定する。
 ステップS407において、制御部4は、リビジョン情報取得部2から入力されたリビジョン情報と、開発者レベル管理部3から入力された開発者レベルとに基づいて、対象ファイルのソースコードの各行をソースコード抽出部13で特定されたコミッターの開発者レベルに応じて区別して表示するように制御する。具体的には、制御部4は、例えば図17に示すように、リビジョン番号「4」およびリビジョン番号「5」に対応するソースコードの各行を開発者のレベルに応じて色分けして表示するように制御する。表示装置10には、開発者レベルに応じて色分けされたソースコードの各行が表示される。
 以上のことから、本実施の形態2によれば、今回失敗したリビジョン情報と、過去に成功した最新のリビジョン情報との差分部分のソースコードの行を色分けして表示しているため、ソースコードの全部の行を色分けして表示する実施の形態1よりも効率的にバグの原因を特定することができる。
 <実施の形態3>
 まず、本発明の実施の形態3によるソフトウェア管理装置の構成について説明する。
 図18は、本実施の形態3によるソフトウェア管理装置15の構成の一例を示すブロック図である。
 図18に示すように、本実施の形態3によるソフトウェア管理装置15は、実施の形態2によるソフトウェア管理装置11(図12参照)のソースコード抽出部13に代えて、開発者評価部16を備えることを特徴としている。その他の構成および動作は、実施の形態2と同様であるため、ここでは詳細な説明を省略する。
 開発者評価部16は、実行結果管理部12から入力されたリビジョン情報に基づいて、開発者の評価を行う。具体的には、開発者評価部16は、開発者レベルを下げる開発者(コミッター)を特定し、当該開発者の開発者レベルを下げると判断する。
 なお、開発者評価部16は、例えば図2のプロセッサ5がメモリ6等に記憶されたプログラムを実行することにより、当該プロセッサ5の機能として実現される。ただし、これらは、例えば複数のプロセッサ5が連携して実現されてもよい。
 次に、本実施の形態3によるソフトウェア管理装置15の動作について説明する。
 図19は、ソフトウェア管理装置15の動作の一例を示すフローチャートである。
 ステップS501において、リビジョン情報取得部2は、リビジョン情報データベース8から対象ファイルのリビジョン情報を取得するとともに、対象ファイルの実行結果を取得する。例えば、リビジョン情報取得部2は、実行結果と、図20に示すソースコード改訂情報を含むリビジョン情報とを取得する。なお、図20では、ソースコードの現リビジョンのリビジョン番号が「6」であり、それよりも過去に改訂されたリビジョンも含むリビジョン番号「2」、「3」、「4」、「6」のリビジョンの改訂内容の影響を受けていることを示している。すなわち、リビジョン情報取得部2は、図20に示すソースコードを有する対象ファイルのリビジョン情報と、その実行結果を取得する。
 ステップS502において、実行結果管理部12は、リビジョン情報取得部2から入力された実行結果とリビジョン情報とを対応付けて実行結果データベース14に格納するように管理する。例えば、図21に示すように、実行結果データベース14には、リビジョン情報取得部2が今回取得したリビジョン番号「6」におけるリビジョン情報と実行結果とが格納されている。
 ステップS503において、実行結果管理部12は、今回の対象ファイルの実行結果が成功であるか否かの判断を行う。実行結果が成功である場合は、ステップS504に移行する。一方、実行結果が成功でない(すなわち、実行結果が失敗である)場合は、処理を終了する。図21の例では、今回の対象ファイル(リビジョン番号「6」)の実行結果は「○(成功)」となっている。
 ステップS504において、実行結果管理部12は、実行結果データベース14に格納されている最新の親リビジョンの実行結果が失敗であるか否かの判断を行う。最新の親リビジョンの実行結果が失敗である場合は、ステップS505に移行する。一方、最新の親リビジョンの実行結果が失敗でない(最新の親リビジョンンの実行結果が成功である、または親リビジョンが実行結果データベース14に格納されていない)場合は、処理を終了する。図21の例では、リビジョン番号「6」の親リビジョンはリビジョン番号「1」、リビジョン番号「3」、およびリビジョン番号「5」であり、リビジョン番号「1」およびリビジョン番号「5」のときの実行結果は「×(失敗)」である。
 ステップS505において、実行結果管理部12は、今回のリビジョンのリビジョン情報と、過去に失敗した親リビジョンのうちの最新の親リビジョンのリビジョン情報とを実行結果データベース14から抽出して開発者評価部16に出力する。図21の例では、実行結果管理部12は、リビジョン番号「6」(今回のリビジョン)のリビジョン情報と、リビジョン番号「5」(過去に失敗した最新の親リビジョン)のリビジョン情報とを実行結果データベース14から抽出して開発者評価部16に出力する。なお、図21に示すリビジョン番号「5」のリビジョン情報に含まれるソースコード改訂情報は、図22に示すソースコード改訂情報であるものとする。
 開発者評価部16は、実行結果管理部12から入力された今回のリビジョンのリビジョン情報と、過去に失敗した最新の親リビジョンのリビジョン情報との差分をとり、過去に失敗した最新の親リビジョンにおける当該差分部分に対応するリビジョンのコミッターを特定し、特定したコミッターの開発者レベルを下げると判断する。例えば、今回のリビジョンであるリビジョン番号「6」のリビジョン情報と、過去に失敗した最新の親リビジョンであるリビジョン番号「5」のリビジョン情報との差分をとると、当該差分部分は今回のリビジョンにおいてはリビジョン番号「6」に対応するソースコードの行となる(例では、過去に失敗した最新の親リビジョンから今回のリビジョンの間に改訂されたリビジョンがリビジョン番号「6」のリビジョンだけであるのでリビジョン番号「6」だけが対象となるが、過去に失敗した最新の親リビジョンから改訂されたリビジョンが複数ある場合は各リビジョンに対応するソースコードの行を対象とする)。過去に失敗した最新の親リビジョンにおいて、この行はリビジョン番号「5」のリビジョンに対応する(例では、過去に失敗した最新の親リビジョンのリビジョン番号と差分部分に対応するリビジョンのリビジョン番号が同一であるが異なる場合もあり得る)。これにより、バグがリビジョン番号「5」のリビジョンにより埋め込まれていたと推定できるので、開発者評価部16は、リビジョン情報よりリビジョン番号「5」において改訂したコミッターを特定し、当該コミッターの開発者レベルを下げると判断する。
 ステップS506において、開発者レベル管理部3は、開発者評価部16で特定されたコミッターに対応する開発者の開発者レベルを下げる。すなわち、開発者レベル管理部3は、開発者レベルデータベース9に格納されている開発者レベルの更新を行う。例えば、開発者レベルデータベース9に図5に示す開発者レベルが格納されている場合において、開発者レベル管理部3は、開発者評価部16で特定されたコミッター(ここでは「Tanaka」)の開発者レベルを「35」から「30」に下げる(図23参照)。なお、開発者レベルをどのように下げるのかについては、任意の方法で決定すればよい。
 以上のことから、本実施の形態3によれば、過去に改訂を失敗したコミッターを特定し、当該コミッターの開発者レベルを下げているため、より適切な開発者レベルの評価を行うことができる。また、このように更新された開発者レベルに応じてソースコードの各行を区別して表示することによって、バグの原因を効率的に特定することが可能となる。また、既存のソースコードを改訂する場合において、ソースコードの各行の開発レベルを把握することができる。
 なお、図19のステップS505とステップS506との間において、開発レベルを下げると判断されたコミッター名と、当該コミッターが改訂したソースコードとを表示し、コミッターの開発レベルを下げるか否かをユーザに確認するようにしてもよい。この場合、開発者の評価をより慎重に行うことができる。
 <実施の形態4>
 実施の形態3では、失敗したリビジョンにおけるリビジョン情報と、その後に成功したリビジョンにおけるリビジョン情報との差分部分にバグの原因があるものとして、当該差分部分を失敗したときに改訂したコミッターの開発者レベルを下げる場合について説明した。しかし、上記の差分部分は、バグの原因以外の部分も含まれることがあり、開発者レベルが適切に評価されているとはいえなかった。本発明の実施の形態4では、このような問題を解決したものであり、以下に詳細を説明する。なお、本実施の形態4によるソフトウェア管理装置の構成は、実施の形態3によるソフトウェア管理装置15(図18参照)の構成と同様である。以下では、実施の形態4によるソフトウェア管理装置は、図18に示すソフトウェア管理装置15であるものとして説明する。
 図24は、本実施の形態4によるソフトウェア管理装置15の動作の一例を示すフローチャートである。
 ステップS601において、リビジョン情報取得部2は、リビジョン情報データベース8から対象ファイルのリビジョン情報を取得するとともに、対象ファイルの実行結果を取得する。
 ステップS602において、実行結果管理部12は、リビジョン情報取得部2から入力された実行結果とリビジョン情報とを対応付けて実行結果データベース14に格納するように管理する。
 ステップS603において、実行結果管理部12は、今回(第2のタイミング)の対象ファイルの実行結果が失敗であるか否かの判断を行う。実行結果が失敗である場合は、ステップS604に移行する。一方、実行結果が失敗でない(すなわち、実行結果が成功である)場合は、ステップS606に移行する。
 ステップS604において、実行結果管理部12は、過去(第1のタイミング)に実行結果が成功である親リビジョンのリビジョン情報が実行結果データベース14に格納されているか否かの判断を行う。実行結果が成功である親リビジョンのリビジョン情報が実行結果データベース14に格納されている場合は、ステップS605に移行する。一方、実行結果が成功である親リビジョンのリビジョン情報が実行結果データベース14に格納されていない場合は、処理を終了する。
 ステップS605において、実行結果管理部12は、今回のリビジョンのリビジョン情報と、過去に成功した親リビジョンのうちの最新の親リビジョンのリビジョン情報とを実行結果データベース14から抽出して開発者評価部16に出力する。
 開発者評価部16は、実行結果管理部12から入力された今回のリビジョンのリビジョン情報と、過去に失敗した最新の親リビジョンのリビジョン情報との差分をとり、当該差分部分に対応するリビジョンをバグ原因候補リビジョン(第1のリビジョン)として記憶する。なお、バグ原因候補リビジョンは、開発者評価部16に記憶してもよく、他の記憶部(図示せず)に記憶してもよい。
 例えば、図25に示すソースコード改訂情報が今回(ここでは実行結果は失敗)のリビジョンのリビジョン情報に含まれており、図26に示すソースコード改訂情報が過去に成功した最新の親リビジョンのリビジョン情報に含まれている場合において、開発者評価部16は、各リビジョン情報の差分部分に対応するリビジョン番号「7」およびリビジョン番号「8」をバグ原因候補リビジョンとする。なお、図25はリビジョン番号「8」のときに実行されたソースコード改訂情報を示し、図26はリビジョン番号「6」のときに実行されたソースコード改訂情報を示している。
 ステップS606において、開発者評価部16は、バグ原因候補リビジョンが記憶されているか否かの判断を行う。バグ原因候補リビジョンが記憶されている場合は、ステップS607に移行する。一方、バグ原因候補リビジョンが記憶されていない場合は、処理を終了する。
 ステップS607において、開発者評価部16は、過去に失敗した最新の親リビジョンのリビジョン情報と、今回(第3のタイミング)のリビジョン(第2のリビジョン)のリビジョン情報との差分をとり、当該差分部分にバグ原因候補リビジョンに対応するソースコードの行が含まれているか否かの判断を行う。バグ原因候補リビジョンに対応するソースコードの行が含まれている場合は、ステップS608に移行する。一方、バグ原因候補リビジョンに対応するソースコードの行が含まれていない場合は、処理を終了する。
 ステップS608において、開発者評価部16は、バグ原因候補リビジョンに記憶されているリビジョンの内、当該差分部分のソースコードに改訂を行ったリビジョンのコミッターの開発レベルを下げると判断し、バグ原因候補リビジョンに対応するソースコードの行を今回改訂したコミッターの開発者レベルを上げると判断する。
 例えば、図27に示すソースコード改訂情報が今回(ここでは、実行結果は成功)のリビジョンのリビジョン情報に含まれており、図25に示すソースコード改訂情報におけるリビジョン番号「7」およびリビジョン番号「8」がバグ原因候補リビジョンであるものとする。このような場合において、各リビジョン情報の差分部分におけるリビジョン番号「9」に対応するソースコードをリビジョン番号「7」のときに改訂したコミッターの開発レベルを下げると判断し、リビジョン番号「9」のときに改訂したコミッターの開発レベルを上げると判断する。なお、図27は、リビジョン番号「10」のときに実行されたソースコード改訂情報を示している。
 ステップS609において、開発者レベル管理部3は、開発者評価部16で特定されたコミッターに対応する開発者の開発者レベルを変更する。具体的には、開発者レベル管理部3は、実行結果が失敗となった原因となるソースコードを改訂したコミッター(図25の例では、リビジョン番号「7」のときに改訂したコミッター)の開発者レベルを下げる。また、開発者レベル管理部3は、実行結果が成功となった(過去の失敗を解消した)原因となるソースコードを改訂したコミッター(図27の例では、リビジョン番号「9」のときに改訂したコミッター)の開発者レベルを上げる。
 ステップS610において、バグ原因候補リビジョンとして記憶していたすべてのリビジョンをバグ原因候補リビジョンから消去する。
 以上のことから、本実施の形態4によれば、実施の形態3よりも精度良く、過去に改訂を失敗したコミッターを特定することができる。また、過去の失敗を解消したコミッターの評価を上げているため、より適切な開発者の評価を行うことができる。
 なお、図24のステップS608とステップS609との間において、開発レベルを変更する判断されたコミッター名と、当該コミッターが改訂したソースコードとを表示し、コミッターの開発レベルを変更するか否かをユーザに確認するようにしてもよい。この場合、開発者の評価をより慎重に行うことができる。
 <実施の形態5>
 本発明の実施の形態5では、ソフトウェア開発における静的解析工程等の問題のある(バグの原因となる)ソースコードの行が特定できる場合においてエラーまたは警告が出たときに、当該エラーまたは警告を生じさせたコミッターの評価を下げることを特徴としている。以下では、静的解析工程に関してのみ記述するが、問題のあるソースコードの行が特定できるツールを用いる場合は静的解析工程に限らず本実施の形態の対象とすることが可能である。なお、本実施の形態5によるソフトウェア管理装置の構成は、実施の形態3によるソフトウェア管理装置15(図18参照)の構成と同様である。ただし、実行結果データベース14には必ずしも過去のリビジョンの実行結果を蓄積する必要はない。以下では、実施の形態5によるソフトウェア管理装置は、図18に示すソフトウェア管理装置15であるものとして説明する。
 図28は、本実施の形態5によるソフトウェア管理装置15の動作の一例を示すフローチャートである。
 ステップS701において、リビジョン情報取得部2は、リビジョン情報データベース8から対象ファイルのリビジョン情報を取得するとともに、対象ファイルの実行結果を取得する。ここで、本実施の形態5における対象ファイルの実行結果とは、ソフトウェア開発における静的解析工程での実行結果のことであり、ソースコードのエラーまたは警告が生じている箇所(行)を指摘するものである。静的解析工程では、ソースコードがコーディングルール等に従っているか(コーディングルール等に反していないか)否かを判断しており、ソースコードがコーディングルール等に従っていない場合は、エラーまたは警告を示す実行結果がリビジョン情報取得部2に入力される。また、実行結果およびリビジョン情報は、プラグインで対応付けられてリビジョン情報取得部2に入力される。
 例えば、リビジョン情報取得部2は、実行結果と、図29に示すソースコード改訂情報を含むリビジョン情報とを取得する。なお、図29では、今回、リビジョン番号「6」のソースコードの行が改訂されたことを示している。すなわち、リビジョン情報取得部2は、図29に示すソースコード改訂情報を含む対象ファイルのリビジョン情報と、その実行結果を取得する。
 ステップS702において、実行結果管理部12は、リビジョン情報取得部2から入力された実行結果とリビジョン情報とを対応付けて実行結果データベース14に格納するように管理する。例えば、図30に示すように、実行結果データベース14には、リビジョン情報取得部2が今回取得したリビジョン番号「6」のリビジョン情報と実行結果(図30では図示せず)が格納されている。
 ステップS703において、実行結果管理部12は、今回の対象ファイルの実行結果においてエラーまたは警告が生じている箇所があるか否かの判断を行う。エラーまたは警告が生じている箇所がある場合は、ステップS704に移行する。一方、エラーまたは警告が生じている箇所がない場合は、処理を終了する。
 ステップS704において、実行結果管理部12は、今回のリビジョンのリビジョン情報と、過去の最新の親リビジョンのリビジョン情報とを実行結果データベース14から抽出して開発者評価部16に出力する。図30の例では、実行結果管理部12は、リビジョン番号「6」(今回のリビジョン)のリビジョン情報と、リビジョン番号「5」のリビジョン情報とを実行結果データベース14から抽出して開発者評価部16に出力する。
 開発者評価部16は、実行結果管理部12から入力された今回のリビジョンのリビジョン情報と、過去の最新の親リビジョンのリビジョン情報との差分をとり、当該差分部分が静的解析によるエラーまたは警告の該当箇所である場合は、当該差分部分の静的解析によるエラーまたは警告の該当箇所を改訂したコミッターの開発者レベルを下げると判断する。図29の例では、リビジョン番号「6」が今回のリビジョンのリビジョン情報と過去の最新の親リビジョンのリビジョン情報との差分部分に該当し、リビジョン番号「6」に対応するソースコードにおいて、「=」の前後にスペースを入れなければならないコーディングルールに従っておらず、静的解析の実行結果においてエラーまたは警告の該当箇所になっている。よって、リビジョン情報よりリビジョン番号「6」のリビジョンのコミッターを特定し、当該コミッターの開発者レベルを下げると判断する。
 ステップS705において、開発者レベル管理部3は、開発者評価部16で特定されたコミッターに対応する開発者の開発者レベルを下げる。すなわち、開発者レベル管理部3は、開発者レベルデータベース9に格納されている開発者レベルの更新を行う。例えば、開発者レベルデータベース9に図5に示す開発者レベルが格納されている場合において、開発者レベル管理部3は、開発者評価部16で特定されたコミッター(ここでは「Sasaki」)の開発者レベルを「90」から「80」に下げる(図31参照)。
 以上のことから、本実施の形態5によれば、静的解析においてエラーまたは警告が出るソースコードを記述したコミッターの開発レベルを下げているため、より適切な開発者レベルの評価を行うことができる。
 なお、図28のステップS704とステップS705との間において、開発レベルを下げると判断されたコミッター名と、当該コミッターが改訂したソースコードとを表示し、コミッターの開発レベルを下げるか否かをユーザに確認するようにしてもよい。この場合、開発者の評価をより慎重に行うことができる。
 <実施の形態6>
 まず、本実施の形態6によるソフトウェア管理装置の構成について説明する。
 図32は、本実施の形態6によるソフトウェア管理装置17の構成の一例を示すブロック図である。
 図32に示すように、本実施の形態6によるソフトウェア管理装置17は、ファイルレベル評価部18を備えることを特徴としている。その他の構成および動作は、実施の形態1と同様であるため、ここでは詳細な説明を省略する。
 ファイルレベル評価部18は、リビジョン情報取得部2から入力された対象ファイルのリビジョン情報と、開発者レベル管理部3から入力された対象ファイルに寄与する開発者レベルとに基づいて、ソースファイルおよびソフトウェアのうちの少なくとも1つのレベルを評価する。
 次に、本実施の形態6によるソフトウェア管理装置17の動作について説明する。
 図33は、ソフトウェア管理装置17の動作の一例を示すフローチャートである。なお、図33のステップS801およびステップS802は、図6のステップS101およびステップS102に対応しているため、ここでは説明を省略する。
 ステップS803において、ファイルレベル評価部18は、対象ファイルのレベルを評価する。具体的には、ファイルレベル評価部18は、リビジョン情報取得部2から入力された対象ファイルのリビジョン情報と、開発者レベル管理部3から入力された対象ファイルに寄与する開発者レベルとに基づいて、例えば図34に示すような、開発者レベルごとにソースコードの行数を集計する。そして、ファイルレベル評価部18は、対象ファイルのソースコードの全ての行に対して、予め定められた開発者レベル以上のコミッターが改訂したソースコードの行数の割合を算出し、算出した割合をファイルのレベルとする。ここで、予め定められた開発者レベルとは、ユーザが任意に設定したものである。
 ステップS804において、ファイルレベル評価部18は、対象ファイルを含む複数のファイルから一のソフトウェアが構成されているか否かの判断を行う。ソフトウェアが対象ファイルを含む複数のファイルから構成されている場合は、ステップS805に移行する。一方、ソフトウェアが対象ファイルを含む複数のファイルから構成されていない場合は、処理を終了する。
 ステップS805において、ファイルレベル評価部18は、ソフトウェアを構成する複数のファイルのレベルに基づいて、当該ソフトウェアのレベルを算出する。ソフトウェアのレベルは、例えば、各ファイルのレベルの平均としてもよい。なお、ステップS805の処理を行う場合は、ステップS803においてソフトウェアを構成する各ファイルのレベルが算出されている必要がある。
 以上のことから、本実施の形態6によれば、対象ファイルのレベル、または対象ファイルを含むソフトウェアのレベルを把握することができる。
 以上で説明したソフトウェア管理装置は、サーバ、および携帯通信端末(例えば、携帯電話、スマートフォン、およびタブレット端末など)を適宜に組み合わせてシステムとして構築されるソフトウェア管理装置にも適用することができる。この場合、ソフトウェア管理装置の各機能あるいは各構成要素は、上記システムを構築する各機能に分散して配置される。
 具体的には、一例としてソフトウェア管理装置の機能をサーバに配置することができる。例えば、図35に示すように、ユーザ側に図3に示す表示装置10と同様の機能を有する表示装置10を備え、サーバ19に図3に示すソフトウェア管理装置7と同様の機能を有する各構成要素を備えることによってソフトウェア管理システムを構築することができる。なお、サーバ19に備えられる各構成要素は、適宜にサーバ19および表示装置10に分散して配置するようにしてもよい。また、図12,18,32に示す各構成要素についても同様である。
 また、他の一例として、ソフトウェア管理装置の機能をサーバおよび携帯通信端末に配置することができる。例えば、図36に示すように、ユーザ側に図3に示す表示装置10と同様の機能を有する表示装置10を備え、サーバ20に図3に示すリビジョン情報取得部2および開発者レベル管理部3を備え、携帯通信端末21に図3に示す制御部4を備えることによってソフトウェア管理システムを構築することができる。なお、サーバ20および携帯通信端末21に備えられる各構成要素は、適宜に表示装置10、サーバ20、および携帯通信端末21に分散して配置するようにしてもよい。また、図12,18,32に示す各構成要素についても同様である。
 上記の構成とした場合であっても、上記の実施の形態と同様の効果が得られる。
 また、上記の実施の形態における動作を実行するソフトウェア(ソフトウェア管理方法)を、例えばサーバや携帯通信端末に組み込んでもよい。
 具体的には、一例として、上記のソフトウェア管理方法は、ソースファイル内のソースコードの各行に対応するリビジョンと、ソースコードを改訂した改訂者とを含むリビジョン情報を取得し、改訂者を含むソースコードの開発者のレベルを示す開発者レベルを管理し、取得したリビジョン情報に含まれる改訂者に対応する開発者の開発者レベルを抽出し、取得したリビジョン情報と、抽出された開発者レベルとに基づいて、ソースコードの各行を開発者レベルに応じて区別して表示するように制御する。
 上記より、上記の実施の形態における動作を実行するソフトウェアをサーバや携帯通信端末に組み込んで動作させることによって、上記の実施の形態と同様の効果が得られる。
 なお、図1,3,12,18,32,35,36において、リビジョン情報取得部2、開発者レベル管理部3、制御部4、実行結果管理部12、ソースコード抽出部13、開発者評価部16、およびファイルレベル評価部18の各々は、図2のプロセッサ5がメモリ6等に記憶されたソフトウェアプログラムに従って動作することにより実現された。しかし、これに代えて、リビジョン情報取得部2、開発者レベル管理部3、制御部4、実行結果管理部12、ソースコード抽出部13、開発者評価部16、およびファイルレベル評価部18の各々は、ハードウェア(例えば、電気信号に対して特定の演算あるいは処理を行うように構成された演算/処理回路等)として構成するようにしてもよい。また、上記の両者を混在させてもよい。
 また、ソフトウェアのリビジョン情報取得部2、開発者レベル管理部3、制御部4、実行結果管理部12、ソースコード抽出部13、開発者評価部16、およびファイルレベル評価部18の各々と、ハードウェアのリビジョン情報取得部2、開発者レベル管理部3、制御部4、実行結果管理部12、ソースコード抽出部13、開発者評価部16、およびファイルレベル評価部18の各々とを組み合わせた概念として、「部」という語に代えて「処理回路」という語を用いることもできる。
 なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
 本発明は詳細に説明されたが、上記した説明は、すべての態様において、例示であって、この発明がそれに限定されるものではない。例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
 1 ソフトウェア管理装置、2 リビジョン情報取得部、3 開発者レベル管理部、4 制御部、5 プロセッサ、6 メモリ、7 ソフトウェア管理装置、8 リビジョン情報データベース、9 開発者レベルデータベース、10 表示装置、11 ソフトウェア管理装置、12 実行結果管理部、13 ソースコード抽出部、14 実行結果データベース、15 ソフトウェア管理装置、16 開発者評価部、17 ソフトウェア管理装置、18 ファイルレベル評価部、19,20 サーバ、21 携帯通信端末。

Claims (15)

  1.  ソースファイル内のソースコードの各行に対応するリビジョンと、前記ソースコードを改訂した改訂者とを含むリビジョン情報を取得するリビジョン情報取得部と、
     前記ソースコードの開発者のレベルを示す開発者レベルを管理し、前記リビジョン情報取得部で取得された前記リビジョン情報に含まれる前記改訂者に対応する前記開発者の前記開発者レベルを抽出する開発者レベル管理部と、
     前記リビジョン情報取得部で取得された前記リビジョン情報と、前記開発者レベル管理部で抽出された前記開発者レベルとに基づいて、前記ソースコードの各行を前記開発者レベルに応じて区別して表示するように制御する制御部と、
    を備える、ソフトウェア管理装置。
  2.  前記開発者レベルは、予め定められたタイミングで更新されることを特徴とする、請求項1に記載のソフトウェア管理装置。
  3.  前記リビジョン情報は、前記改訂者が前記ソースコードを改訂した日時を示す日時情報を含み、
     前記制御部は、前記ソースコードの各行を、前記日時情報に示される前記日時よりも過去でありかつ最新の前記予め定められたタイミングで更新された前記開発者レベルに応じて区別して表示するように制御することを特徴とする、請求項2に記載のソフトウェア管理装置。
  4.  前記ソースコードの実行結果と、前記リビジョン情報取得部で取得された前記リビジョン情報とを対応付けて管理し、今回の前記実行結果は失敗であると判断した場合において、当該今回の前記実行結果に対応する前記リビジョン情報と、前記実行結果は成功であると判断した過去の前記リビジョン情報のうちの最新の前記リビジョン情報とを抽出する実行結果管理部と、
     前記実行結果管理部で抽出された前記今回のリビジョン情報に含まれるソースコードと、前記最新のリビジョン情報に含まれるソースコードとの差分部分における前記ソースコードの行を抽出するソースコード抽出部と、
    をさらに備え、
     前記制御部は、前記ソースコード抽出部で抽出された前記ソースコードの行を区別して表示するように制御することを特徴とする、請求項1に記載のソフトウェア管理装置。
  5.  前記ソースコードの実行結果と、前記リビジョン情報取得部で取得された前記リビジョン情報とを対応付けて管理し、今回の前記実行結果は成功であると判断した場合において、当該今回の前記実行結果に対応する前記リビジョン情報と、前記実行結果は失敗であると判断した過去の前記リビジョン情報のうちの最新の前記リビジョン情報とを抽出する実行結果管理部と、
     前記実行結果管理部で抽出された前記今回の前記実行結果に対応する前記リビジョン情報と、前記最新の前記リビジョン情報との差分部分における前記ソースコードの行を前記過去に改訂した前記改訂者を特定し、特定した前記改訂者に対応する前記開発者の前記開発者レベルを下げる評価を行う開発者評価部と、
    をさらに備えることを特徴とする、請求項1に記載のソフトウェア管理装置。
  6.  前記ソースコードの実行結果と、前記リビジョン情報取得部で取得された前記リビジョン情報とを対応付けて管理する実行結果管理部と、
     第1のタイミングで前記実行結果管理部が前記実行結果は成功であると判断した前記リビジョンと、前記第1のタイミング後の第2のタイミングで前記実行結果管理部が前記実行結果は失敗であると判断した前記リビジョンとの間において改訂された前記リビジョンである第1のリビジョンを特定し、前記第2のタイミング後の第3のタイミングで前記実行結果管理部が前記実行結果は成功であると判断した前記リビジョンである第2のリビジョンにおいて、前記第1のリビジョンで改訂された前記ソースコードの行をさらに改訂したか否かに基づいて前記開発者レベルの評価を行う開発者評価部と、
    をさらに備えることを特徴とする、請求項1に記載のソフトウェア管理装置。
  7.  前記開発者評価部は、前記第2のリビジョンにおいて前記第1のリビジョンで改訂された前記ソースコードの行をさらに改訂したと判断した場合は、前記第1のリビジョンで前記ソースコードの行を改訂した前記改訂者に対応する前記開発者の前記開発者レベルを下げる評価を行うことを特徴とする、請求項6に記載のソフトウェア管理装置。
  8.  前記開発者評価部は、前記第2のリビジョンにおいて前記第1のリビジョンで改訂した前記ソースコードの行をさらに改訂したと判断した場合は、前記第2のリビジョンで前記ソースコードの行を改訂した前記改訂者に対応する前記開発者の前記開発者レベルを上げる評価を行うことを特徴とする、請求項6に記載のソフトウェア管理装置。
  9.  前記ソースコードの実行結果と、前記リビジョン情報取得部で取得された前記リビジョン情報とを対応付けて管理する実行結果管理部と、
     前記実行結果管理部が今回の前記実行結果は失敗であると判断した場合において、当該今回の前記実行結果に対応する前記リビジョン情報と、前記実行結果管理部が管理する過去の最新の前記リビジョン情報との差分部分における前記ソースコードが静的解析によるエラーまたは警告の該当箇所である場合は、前記静的解析によるエラーまたは警告の該当箇所である前記ソースコードの行を改訂した前記改訂者に対応する前記開発者の前記開発者レベルを下げる評価を行う開発者評価部をさらに備えることを特徴とする、請求項1に記載のソフトウェア管理装置。
  10.  前記ソースコード全体に対する、予め定められた前記開発者レベル以上の前記改訂者が改訂した前記ソースコードの行数の割合に基づいて、前記ソースファイルのレベルを評価するファイルレベル評価部をさらに備えることを特徴とする、請求項1に記載のソフトウェア管理装置。
  11.  複数の前記ソースファイルから一のソフトウェアが構成される場合において、
     前記ファイルレベル評価部は、各前記ソースファイルのレベルに基づいて、前記ソフトウェアのレベルを評価することを特徴とする、請求項10に記載のソフトウェア管理装置。
  12.  前記開発者レベル管理部は、プログラミング言語の種別ごとに前記開発者レベルを管理することを特徴とする、請求項1に記載のソフトウェア管理装置。
  13.  前記開発者レベルは、手動で設定されることを特徴とする、請求項1に記載のソフトウェア管理装置。
  14.  前記開発者レベルは、自動で設定されることを特徴とする、請求項1に記載のソフトウェア管理装置。
  15.  ソースファイル内のソースコードの各行に対応するリビジョンと、前記ソースコードを改訂した改訂者とを含むリビジョン情報を取得し、
     前記ソースコードの開発者のレベルを示す開発者レベルを管理し、前記取得した前記リビジョン情報に含まれる前記改訂者に対応する前記開発者の前記開発者レベルを抽出し、
     前記取得した前記リビジョン情報と、前記抽出された前記開発者レベルとに基づいて、前記ソースコードの各行を前記開発者レベルに応じて区別して表示するように制御する、ソフトウェア管理方法。
PCT/JP2015/060194 2015-03-31 2015-03-31 ソフトウェア管理装置およびソフトウェア管理方法 WO2016157433A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2015/060194 WO2016157433A1 (ja) 2015-03-31 2015-03-31 ソフトウェア管理装置およびソフトウェア管理方法
JP2017508942A JP6141563B2 (ja) 2015-03-31 2015-03-31 ソフトウェア管理装置およびソフトウェア管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/060194 WO2016157433A1 (ja) 2015-03-31 2015-03-31 ソフトウェア管理装置およびソフトウェア管理方法

Publications (1)

Publication Number Publication Date
WO2016157433A1 true WO2016157433A1 (ja) 2016-10-06

Family

ID=57005451

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/060194 WO2016157433A1 (ja) 2015-03-31 2015-03-31 ソフトウェア管理装置およびソフトウェア管理方法

Country Status (2)

Country Link
JP (1) JP6141563B2 (ja)
WO (1) WO2016157433A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020087087A (ja) * 2018-11-28 2020-06-04 富士通株式会社 修正候補特定プログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014241021A (ja) * 2013-06-11 2014-12-25 株式会社日立製作所 ソフトウェア評価装置および方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0490031A (ja) * 1990-08-03 1992-03-24 Fujitsu Ltd エラー検出装置
JP2003005962A (ja) * 2001-06-20 2003-01-10 Canon Inc 文章変更履歴表示方法
JP4883700B2 (ja) * 2007-03-15 2012-02-22 株式会社日立ソリューションズ レポジトリサーバ管理システム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014241021A (ja) * 2013-06-11 2014-12-25 株式会社日立製作所 ソフトウェア評価装置および方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020087087A (ja) * 2018-11-28 2020-06-04 富士通株式会社 修正候補特定プログラム
JP7116313B2 (ja) 2018-11-28 2022-08-10 富士通株式会社 修正候補特定プログラム

Also Published As

Publication number Publication date
JPWO2016157433A1 (ja) 2017-06-08
JP6141563B2 (ja) 2017-06-07

Similar Documents

Publication Publication Date Title
US10102105B2 (en) Determining code complexity scores
US9703692B2 (en) Development supporting system
AU2019202251A1 (en) Automated program code analysis and reporting
US20140372083A1 (en) Derived restrictions in a combinatorial model
US9785421B1 (en) External dependency attribution
KR101588027B1 (ko) 소프트웨어 현지화를 위한 테스트 케이스 생성 장치 및 방법
US11237824B2 (en) Tracking related changes with code annotations
CN107643904B (zh) 代码提交日志的检测方法、装置、介质及电子设备
JPWO2019026248A1 (ja) プログラム開発支援装置、プログラム開発支援方法、及びプログラム開発支援プログラム
JP6141563B2 (ja) ソフトウェア管理装置およびソフトウェア管理方法
US20230401177A1 (en) Managing File Revisions From Multiple Reviewers
JP6451417B2 (ja) デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム
EP3346642A1 (en) Method and device for managing network element model
US9396239B2 (en) Compiling method, storage medium and compiling apparatus
US20150082278A1 (en) Clone detection method and clone function commonalizing method
KR20160049568A (ko) 소스코드 비교 및 관리 시스템 및 방법
CN105159756A (zh) 信息处理方法和信息处理设备
US10872019B2 (en) Load and save recovery partition using mobile device
CN113568834A (zh) Sdk代码的兼容性检测方法、装置、计算机设备和介质
JP6320269B2 (ja) ソフトウェア試験支援装置およびソフトウェア試験支援プログラム
CN113703753A (zh) 用于产品开发的方法、装置和产品开发系统
US9542182B2 (en) Standardization of variable names in an integrated development environment
JP2016114974A (ja) Bios更新装置、方法及びプログラム
US11921496B2 (en) Information processing apparatus, information processing method and computer readable medium
US20240160558A1 (en) Automatic testing of interrelated components of a software application

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15887586

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2017508942

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15887586

Country of ref document: EP

Kind code of ref document: A1