JP2011008554A - Programming ability diagnosis device, programming ability diagnosis method, and computer program - Google Patents
Programming ability diagnosis device, programming ability diagnosis method, and computer program Download PDFInfo
- Publication number
- JP2011008554A JP2011008554A JP2009151714A JP2009151714A JP2011008554A JP 2011008554 A JP2011008554 A JP 2011008554A JP 2009151714 A JP2009151714 A JP 2009151714A JP 2009151714 A JP2009151714 A JP 2009151714A JP 2011008554 A JP2011008554 A JP 2011008554A
- Authority
- JP
- Japan
- Prior art keywords
- program
- subject
- programming
- test
- unit
- 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.)
- Pending
Links
Images
Abstract
Description
本発明は、被験者にプログラミング課題を出題し、被験者からそのプログラミング課題に対する解答を取得し、課題解決能力を診断するプログラミング能力診断装置及びプログラミング能力診断方法、並びにコンピュータプログラムに関する。 The present invention relates to a programming ability diagnostic apparatus, a programming ability diagnostic method, and a computer program that give a subject a programming task, obtain an answer to the programming task from the subject, and diagnose the problem solving ability.
IT系企業では、プログラマの考課や育成を目的として、様々なスキル診断が行われている。例えば、プログラマを採用する際、小規模なプログラミング課題を与え、プログラマが作成した解答(コーディング)の巧拙によって採用の要否を決定する場合がある。また、社員の昇進試験において、業務と関連する何らかのプログラミング課題を与え、そのプログラミング課題に対する解答の出来不出来によって、昇進の認否を決定する場合もある。これらの場合、評価者は、プログラマが作成したプログラムを見て、プログラミング能力の有無を適切に評価することが求められる。しかし、一般的にプログラミング能力を適切に評価することは容易ではない。 In IT companies, various skill diagnosis is performed for the purpose of evaluation and training of programmers. For example, when a programmer is employed, there is a case where a small-scale programming task is given and the necessity of the employment is determined by skill of an answer (coding) created by the programmer. Also, in a promotion test for employees, some programming task related to work is given, and the approval or disapproval of the promotion may be determined depending on whether or not the answer to the programming task is possible. In these cases, the evaluator is required to appropriately evaluate the presence or absence of programming ability by looking at the program created by the programmer. However, it is generally not easy to properly evaluate programming ability.
例えば、二人の被験者にプログラミング課題を出題し、作成された2つのプログラムを見比べた場合、ともに模範解答に近いプログラムであったとしても、片方の被験者は10分でコーディングし、他方の被験者は30分でコーディングしていたときには、当然プログラミング能力に差があり、前者の評価を高くすべきである。また、片方の被験者はプログラミングの作業過程で間違いが多く、デバッグ回数が頻繁にあったのに対し、他方の被験者はデバッグ回数がほとんどなかったときにも、当然プログラミング能力に差があり、今度は後者の評価を高くすべきである。しかし、従来の評価方法は、作成されたプログラムを見比べるだけの評価方法であることが多く、このような評価方法ではプログラミング能力を適切に評価することが難しかった。 For example, when two subjects are given programming tasks and the two created programs are compared, even if both programs are close to the model answer, one subject codes in 10 minutes and the other subject When coding in 30 minutes, there is of course a difference in programming ability, and the former evaluation should be high. In addition, while one subject had many mistakes in the programming process and the number of debugging was frequent, the other subject naturally had a difference in programming ability even when there was almost no debugging, this time The latter evaluation should be high. However, the conventional evaluation method is often an evaluation method only for comparing created programs, and it has been difficult to appropriately evaluate the programming ability with such an evaluation method.
そこで、プログラムが作成される過程に着目し、プログラミング過程の再生、プログラミング過程で経過した時間の計測、プログラミング過程におけるコンパイル回数のカウントなどを行う技術として、例えば特許文献1に開示されたプログラミング教育支援システムがある。具体的には、プログラミング課題の解答(コーディング)過程をリアルタイムに把握してデータベース化し、記録したデータに基づいて解答過程(プログラミング過程)を再現したり、プログラミングの経過時間を計測したり、その経過時間に対する入力文字数やコンパイルタイミングのグラフによる視覚化を行ったりすることで、各学習者(被験者)の思考過程や理解不足の箇所を把握し、ひいてはプログラミング習熟度を把握できるようになっている。
Therefore, focusing on the process of creating a program, programming education support disclosed in, for example,
一般に、ある程度規模の大きなプログラムを作成する場合には、バグ修正のしやすさ、メンテナンス効率等の観点から、論理構造がシンプルかつ明確なプログラムが好ましい。例えば、個々の関数モジュールを単に先頭から順番に羅列していくプログラムよりも、main関数などの基本構造の中で個々の関数モジュールをサブルーチン化したプログラムの方が、設計思想としては好ましい。しかし、従来のプログラミング教育支援システムのように、プログラミング経過時間に対する入力文字数やコンパイルタイミングのグラフによる視覚化を行っただけでは、論理構造が簡易かつ明確かどうか、といったプログラムの構造を構築する能力を評価することは困難である。 In general, when creating a program of a large scale, a program with a simple and clear logical structure is preferable from the viewpoint of ease of bug correction, maintenance efficiency, and the like. For example, a program in which individual function modules are converted into subroutines in a basic structure such as a main function is more preferable as a design concept than a program in which individual function modules are simply arranged in order from the top. However, the ability to build a program structure such as whether the logical structure is simple and clear just by visualizing the number of input characters against the elapsed programming time and the graph of compilation timing as in the conventional programming education support system. It is difficult to evaluate.
この点、被験者によって作成されたプログラム全体を見れば、ある程度の論理構造を把握することはできるとも考えられる。しかし、社内の人事担当者などプログラミングに詳しくない者がプログラムの論理構造を把握することは困難である。また、たとえ評価者がプログラミングに詳しい者であったとしても、例えば数十〜数百行のプログラム全体の論理構造を把握するためにはそれなりに時間が掛かる。特に、プログラマの採用試験やプログラマの人材派遣などを考えた場合、数十人、数百人といったプログラマのプログラミング能力を評価しなければならない場合も少なくないが、その際、全員分のプログラム全体に目を通す作業は、非常に煩雑かつ時間の掛かる作業である。 In this regard, it is considered that a certain degree of logical structure can be grasped by looking at the whole program created by the subject. However, it is difficult for those who are not familiar with programming, such as in-house personnel personnel, to grasp the logical structure of the program. Even if the evaluator is familiar with programming, for example, it takes time to grasp the logical structure of the entire program of several tens to several hundred lines. In particular, when considering recruitment tests for programmers and dispatching programmers, it is often necessary to evaluate the programming ability of tens or hundreds of programmers. The work of looking through is very cumbersome and time consuming.
更に、上述したプログラミング教育支援システムでは、プログラミング課題の内容を勘違いして作成されたプログラムでないかどうかまでは判別できない。例えば、行数が少なくて一見すると論理構造がシンプルに見えるプログラムが作成された場合において、被験者自身のコンパイルにより文法エラーは除かれていたとしても、それがプログラミング課題の内容を勘違いして作られたものであるときには、低評価にすべきである。しかし、上述したプログラミング教育支援システムでは、被験者がプログラミング課題の内容を正しく把握していることを前提にしているので、プログラミング課題の内容を勘違いしているにも拘わらず、シンプルな論理構造のプログラムが作成された場合、誤って高評価になる可能性は否定できない。 Furthermore, in the programming education support system described above, it is impossible to determine whether or not the program is created by misunderstanding the content of the programming task. For example, when a program is created that has a simple logical structure at a glance with a small number of lines, even if the grammatical error is eliminated by the subject's own compilation, it is created by misunderstanding the content of the programming task. If it is, it should be rated low. However, in the programming education support system described above, it is assumed that the subject correctly understands the content of the programming task. Therefore, despite the misunderstanding of the content of the programming task, a program with a simple logical structure. If is created, there is no denying the possibility of accidentally becoming highly rated.
このように、従来の評価方法では、被験者のプログラミング能力、特にプログラムの構造を構築する能力を診断することは困難であった。また、被験者の人数が大勢になった場合に、プログラミングに熟知した者が相当な時間を掛けなければ、被験者全員のプログラム構造構築能力を簡易かつ迅速に診断することは困難であった。さらに、プログラミング課題の内容を勘違いして作成されたことによるプログラムの誤評価を防ぐことが困難であった。 As described above, with the conventional evaluation method, it has been difficult to diagnose the programming ability of the subject, particularly the ability to construct the structure of the program. In addition, when the number of subjects increases, it is difficult to easily and quickly diagnose the program structure construction ability of all subjects unless a person who is familiar with programming takes a considerable amount of time. Furthermore, it has been difficult to prevent erroneous evaluation of programs due to misunderstanding of the contents of programming tasks.
本発明は、以上の点に鑑みてなされたものであり、その目的は、プログラミング課題に対する解決能力、特にプログラムの構造を構築する能力を簡易かつ迅速に診断することができるとともに、プログラミング課題の内容を勘違いして作成されたことによるプログラムの誤評価を防ぐプログラミング能力診断装置及びプログラミング能力診断方法、並びにコンピュータプログラムを提供することにある。 The present invention has been made in view of the above points. The purpose of the present invention is to easily and quickly diagnose the ability to solve a programming problem, particularly the ability to construct the structure of a program. It is an object of the present invention to provide a programming ability diagnostic device, a programming ability diagnostic method, and a computer program that prevent erroneous evaluation of a program created by misunderstanding.
第1の発明に係るプログラミング能力診断装置は、プログラミング課題を出題された被験者がプログラミング課題を解決するプログラムを作成するプログラム作成装置において、被験者によってプログラムが作成され、プログラミング課題を出題した出題者により設定された所望のプログラム出力が得られるか否かのテストが実行された後、一の処理モジュール又は複数の処理モジュールから構成され、所望のプログラム出力が得られてテストを通過したテスト通過プログラムと、被験者がテスト通過プログラムを作成する過程で生成された複数の中間生成プログラムを復元可能なプログラム構成情報と、を読み込んで、被験者のプログラミング能力を診断するものであって、テスト通過プログラムとプログラム構成情報とを記憶する記憶部と、プログラム構成情報により復元される複数の中間生成プログラムに基づいて、上述したテスト通過プログラムの作成過程を再生する再生部と、テスト通過プログラムに基づいて、一の処理モジュール若しくは複数の処理モジュール各々の処理手順又は一の処理モジュール若しくは複数の処理モジュール間の構造が可視化された図を生成する可視化図生成部と、再生部により再生される上述したテスト通過プログラムの作成過程と、可視化図生成部により生成された図とを表示部に表示させる制御部と、を備える。 A programming ability diagnosis apparatus according to a first aspect of the present invention is a program creation device in which a subject who has given a programming task creates a program that solves the programming task. The program is created by the subject and is set by the questioner who has given the programming task. A test passing program that is configured from one processing module or a plurality of processing modules and that has obtained the desired program output and passed the test. A program configuration information that can restore a plurality of intermediate generation programs generated in the process of creating a test passing program by a test subject, and diagnosing the subject's programming ability. The test passing program and the program configuration information Storage unit A reproduction unit that reproduces the above-described test passing program creation process based on a plurality of intermediate generation programs restored by the program configuration information, and one processing module or each of the plurality of processing modules based on the test passing program. A visualization diagram generating unit that generates a diagram in which a processing procedure or a structure of one processing module or a plurality of processing modules is visualized, a process of creating the test passing program reproduced by the reproducing unit, and a visualization diagram generating unit A control unit that displays the generated diagram on the display unit.
このような構成によれば、プログラミング能力診断の対象となるプログラムは、プログラミング課題を出題した出題者により設定された所望のプログラミング出力が得られるテスト通過プログラムになる。また、テスト通過プログラムに基づいて、一の処理モジュール若しくは複数の処理モジュール各々の処理手順又は一の処理モジュール若しくは複数の処理モジュール間の構造が可視化された図が生成される。そして、その可視化された図とテスト通過プログラムの作成過程とが表示部に表示される。したがって、プログラミング課題の内容を勘違いして作成されたプログラムは、プログラミング能力診断の対象から排除されるので、プログラミング課題の内容を勘違いして作成されたことによるプログラムの誤評価を防ぐことができる。また、プログラミング能力診断を行う者は、表示部を通じて、一の処理モジュール若しくは複数の処理モジュール各々の処理手順又は一の処理モジュール若しくは複数の処理モジュール間の構造が可視化された図を視認することによって、自身がプログラミングに熟知していなくても、プログラムの構造を構築する能力を簡易に診断することができる。また、被験者が大勢いた場合であっても、この図を視認することで、明らかにプログラミング能力の劣る被験者を排除して、残りの被験者については必要に応じて再生部により再生されるテスト通過プログラムの作成過程を視認することができるので、プログラムの構造を構築する能力を効率的かつ迅速に診断することができる。なお、本明細書でいう「処理モジュール」とは、何らかの作業工程を一つの処理としてまとめたものをいい、プログラムの一般的な構成要素となる関数モジュールだけでなく、例えば、プログラム中で意味や内容がまとまっている作業を一つの手続きとしてまとめたサブルーチン、複数の処理を一つにまとめたプロシージャ、プログラムの部分プログラムとして機能するサブプログラムなど、如何なる種類・名称のものであってもよい。また、本明細書でいう「プログラム構成情報」は、被験者がテスト通過プログラムを作成する過程で生成された複数の中間生成プログラムを復元可能な情報であれば如何なる情報であってもよい。 According to such a configuration, the program to be subjected to the programming ability diagnosis is a test passing program in which a desired programming output set by the questioner who has given the programming task is obtained. Further, based on the test passing program, a diagram in which the processing procedure of each processing module or a plurality of processing modules or the structure between one processing module or a plurality of processing modules is visualized is generated. Then, the visualized diagram and the process of creating the test passing program are displayed on the display unit. Therefore, since a program created by misunderstanding the content of the programming task is excluded from the object of the programming ability diagnosis, it is possible to prevent an erroneous evaluation of the program due to being created by misunderstanding the content of the programming task. In addition, a person who performs a programming ability diagnosis visually recognizes a processing procedure of one processing module or a plurality of processing modules or a diagram in which a structure between one processing module or a plurality of processing modules is visualized through the display unit. Even if you are not familiar with programming, you can easily diagnose the ability to build the structure of a program. In addition, even if there are a large number of subjects, by visually checking this figure, subjects who are clearly inferior in programming ability are excluded, and for the remaining subjects, a test passing program that is played back by the playback unit as necessary The ability to build the program structure can be diagnosed efficiently and quickly. The “processing module” in this specification refers to a collection of some work steps as a single process, and not only a function module that is a general component of a program, It may be of any type and name, such as a subroutine that summarizes the work whose contents are collected as one procedure, a procedure that combines a plurality of processes into one, and a subprogram that functions as a partial program of the program. Further, the “program configuration information” referred to in the present specification may be any information as long as it is information that can restore a plurality of intermediate generation programs generated in the process of creating a test passing program by the subject.
第2の発明に係るプログラミング能力診断装置では、上述したプログラム構成情報により復元される複数の中間生成プログラムに基づいて、一の処理モジュール又は複数の処理モジュール各々が生成されたタイミングを解析するタイミング解析部を備え、制御部は、タイミング解析部の解析結果を前記表示部に表示させる。 In the programming capability diagnosis apparatus according to the second invention, a timing analysis for analyzing a timing at which one processing module or each of the plurality of processing modules is generated based on a plurality of intermediate generation programs restored by the program configuration information described above The control unit displays the analysis result of the timing analysis unit on the display unit.
このような構成によれば、プログラミング能力診断を行う者は、一の処理モジュール又は複数の処理モジュール各々が生成されたタイミングを知ることで、プログラムの構造を頭の中で如何に早く構築することができるか、といった能力を診断することができる。例えば、プログラムを完成させるために必要な処理モジュールが、早いタイミングで全部揃った被験者は、プログラム構造を見通す力が優れていることが分かる。逆に、なかなか必要な処理モジュールが生成されなかった被験者は、このような力が劣っていることが分かる。 According to such a configuration, the person who performs the programming ability diagnosis knows the timing at which one processing module or each of the plurality of processing modules is generated, and builds the structure of the program in his head quickly. Ability to diagnose whether or not For example, it can be seen that a subject who has all the processing modules necessary to complete a program at an early timing has an excellent ability to see through the program structure. On the other hand, it can be seen that the test subject who has not been able to generate the necessary processing module is inferior in such power.
第3の発明に係るプログラミング能力診断装置では、一の処理モジュール又は複数の処理モジュール各々について、タイミング解析部によって解析されたタイミングよりも前に、被験者による処理モジュールの記述があるか否かを、プログラム構成情報により復元される複数の中間生成プログラムを用いて検索する検索部を備え、制御部は、検索部の検索結果を表示部に表示させる。 In the programming ability diagnostic device according to the third invention, for each of the one processing module or the plurality of processing modules, whether or not there is a description of the processing module by the subject before the timing analyzed by the timing analysis unit, A search unit for searching using a plurality of intermediate generation programs restored by the program configuration information is provided, and the control unit displays the search result of the search unit on the display unit.
このような構成によれば、処理モジュールが被験者によって記述されたタイミングを把握することができる。すなわち、上述したタイミング解析部により、一の処理モジュール又は複数の処理モジュール各々が生成されたタイミングを解析することは可能であるが、これは、あくまでタイミング解析部により解析が成功したタイミングである。例えば、被験者が処理モジュールをソースコード中に記述した直後のタイミングは、まだ処理モジュールが完成していないため、上述したタイミング解析部による解析は成功せず、タイミング解析部のみでは知ることができない。そのため、プログラム構成情報により復元される複数の中間生成プログラムを用いて、プログラム中に被験者による処理モジュールの記述があるか否かを検索することによって、被験者が処理モジュールを記述した直後のタイミングまで知ることができ、ひいては被験者が処理モジュールの必要性に気づいた時期など、被験者の思考過程を把握することができる。 According to such a configuration, it is possible to grasp the timing when the processing module is described by the subject. That is, it is possible to analyze the timing at which one processing module or each of a plurality of processing modules is generated by the timing analysis unit described above, but this is only the timing at which the analysis by the timing analysis unit is successful. For example, the timing immediately after the test subject describes the processing module in the source code has not yet been completed, so the analysis by the timing analysis unit described above is not successful and cannot be known only by the timing analysis unit. Therefore, by using a plurality of intermediate generation programs restored by the program configuration information, by searching for whether there is a description of the processing module by the subject in the program, it is possible to know until the timing immediately after the subject has described the processing module. As a result, it is possible to grasp the subject's thought process such as the time when the subject notices the necessity of the processing module.
第4の発明に係るプログラミング能力診断装置では、一の処理モジュール内又は複数の処理モジュール間でコードの重複度合いを示すコード重複率を解析するコード重複率解析部を備え、制御部は、コード重複率解析部の解析結果を表示部に表示させる。 According to a fourth aspect of the present invention, there is provided a programming capability diagnostic apparatus including a code duplication rate analysis unit that analyzes a code duplication rate indicating a degree of code duplication within one processing module or between a plurality of processing modules. The analysis result of the rate analysis unit is displayed on the display unit.
このような構成によれば、プログラミング能力診断を行う者は、プログラムの構造を効率的に構築できているか、といった能力を診断することができる。例えば、コード重複率の低いプログラムを作成した被験者は、無駄が少なく効率的なプログラム構造を構築できる力が優れていることが分かる。逆に、コード重複率の高いプログラムを作成した被験者は、このような力が劣っていることが分かる。また、コード重複率が高いプログラムは、コード重複に起因して仕様変更時に変更箇所が多くなりがちである。したがって、コード重複率の低いプログラムは、仕様変更が発生した際のメンテナンス性に優れていることになる。 According to such a configuration, the person who performs the programming ability diagnosis can diagnose the ability such as whether the program structure can be efficiently constructed. For example, it can be seen that a subject who has created a program with a low code duplication rate has an excellent ability to construct an efficient program structure with little waste. On the contrary, the test subject who created the program with a high code duplication rate shows that such a power is inferior. In addition, a program with a high code duplication rate tends to have a lot of changed parts at the time of specification change due to code duplication. Therefore, a program with a low code duplication rate is excellent in maintainability when a specification change occurs.
第5の発明に係るプログラミング能力診断装置では、表示部においてユーザの操作を受け付ける受付部を備え、制御部は、受付部からの操作信号に基づいて、可視化図生成部により生成された図と、タイミング解析部の解析結果と、コード重複率解析部の解析結果とを選択的に表示部に表示させる。 In the programming ability diagnostic device according to the fifth aspect of the present invention, the display unit includes a reception unit that receives a user operation, and the control unit is generated by the visualization diagram generation unit based on an operation signal from the reception unit; The analysis result of the timing analysis unit and the analysis result of the code duplication rate analysis unit are selectively displayed on the display unit.
このような構成によれば、プログラミング能力診断を行う者は、例えばマウス等からなる受付部を操作して、可視化図生成部により生成された図と、タイミング解析部の解析結果と、コード重複率解析部の解析結果とを、表示部において選択的に切り替えることができるので、プログラムの構造を構築する能力を様々な視点から簡易かつ迅速に診断することができる。 According to such a configuration, the person who performs the programming ability diagnosis operates, for example, a reception unit including a mouse and the like, the diagram generated by the visualization diagram generation unit, the analysis result of the timing analysis unit, and the code duplication rate Since the analysis result of the analysis unit can be selectively switched on the display unit, the ability to construct the program structure can be easily and quickly diagnosed from various viewpoints.
第6の発明に係るプログラミング能力診断方法では、プログラミング課題を出題された被験者がプログラミング課題を解決するプログラムを作成するプログラム作成装置において、被験者によってプログラムが作成され、プログラミング課題を出題した出題者により設定された所望のプログラム出力が得られるか否かのテストが実行された後、一の処理モジュール又は複数の処理モジュールから構成され、所望のプログラム出力が得られてテストを通過したテスト通過プログラムと、被験者がテスト通過プログラムを作成する過程で生成された複数の中間生成プログラムを復元可能なプログラム構成情報と、を読み込んで、被験者のプログラミング能力を診断するプログラミング能力診断方法であって、テスト通過プログラムとプログラム構成情報とを記憶する記憶ステップと、プログラム構成情報により復元される複数の中間生成プログラムに基づいて、テスト通過プログラムの作成過程を再生する再生ステップと、テスト通過プログラムに基づいて、一の処理モジュール若しくは複数の処理モジュール各々の処理手順又は一の処理モジュール若しくは複数の処理モジュール間の構造が可視化された図を生成する可視化図生成ステップと、再生ステップにより再生されるテスト通過プログラムの作成過程と、可視化図生成ステップにより生成された図とを、表示部に表示させるステップと、を含む。 In the programming ability diagnosing method according to the sixth aspect of the present invention, in a program creation device in which a subject who has given a programming task creates a program that solves the programming task, the program is created by the subject and set by the questioner who has given the programming task A test passing program that is configured from one processing module or a plurality of processing modules and that has obtained the desired program output and passed the test. A programming ability diagnosis method for diagnosing a subject's programming ability by reading program configuration information capable of restoring a plurality of intermediate generation programs generated in the course of creating a test passage program by a subject, Program structure A storage step for storing information, a reproduction step for reproducing the creation process of the test passing program based on a plurality of intermediate generation programs restored by the program configuration information, and one processing module based on the test passing program or Visualization diagram generation step for generating a diagram in which the processing procedure of each of the plurality of processing modules or the structure of one processing module or a plurality of processing modules is visualized, the process of creating a test passing program reproduced by the reproduction step, and visualization Displaying the diagram generated by the diagram generating step on the display unit.
第7の発明に係るコンピュータプログラムでは、プログラミング課題を出題された被験者がプログラミング課題を解決するプログラムを作成するプログラム作成装置において、被験者によってプログラムが作成され、プログラミング課題を出題した出題者により設定された所望のプログラム出力が得られるか否かのテストが実行された後、一の処理モジュール又は複数の処理モジュールから構成され、所望のプログラム出力が得られてテストを通過したテスト通過プログラムと、被験者がテスト通過プログラムを作成する過程で生成された複数の中間生成プログラムを復元可能なプログラム構成情報と、を読み込んで、被験者のプログラミング能力を診断するプログラミング能力診断装置として、コンピュータを機能させるためのコンピュータプログラムであって、テスト通過プログラムとプログラム構成情報とを記憶する記憶部と、プログラム構成情報により復元される複数の中間生成プログラムに基づいて、テスト通過プログラムの作成過程を再生する再生部と、テスト通過プログラムに基づいて、一の処理モジュール若しくは複数の処理モジュール各々の処理手順又は一の処理モジュール若しくは複数の処理モジュール間の構造が可視化された図を生成する可視化図生成部と、再生部により再生されるテスト通過プログラムの作成過程と、可視化図生成部により生成された図を表示部に表示させる制御部と、を備えるプログラミング能力診断装置として、コンピュータを機能させる。 In the computer program according to the seventh aspect of the present invention, in a program creation device in which a subject who has given a programming task creates a program that solves the programming task, the program is created by the subject and set by the questioner who has given the programming task After the test of whether or not a desired program output is obtained, a test passing program composed of one processing module or a plurality of processing modules and obtaining a desired program output and passing the test, and the subject A computer for causing a computer to function as a programming ability diagnostic device that reads program configuration information capable of restoring a plurality of intermediate generation programs generated in the process of creating a test passing program and diagnoses a subject's programming ability. A storage unit for storing a test passing program and program configuration information, a playback unit for playing back a process of creating the test passing program based on a plurality of intermediate generation programs restored by the program configuration information, and a test Based on the passage program, a visualization diagram generation unit that generates a visualization of the processing procedure of each processing module or each processing module or the structure between one processing module or a plurality of processing modules, and playback by the playback unit The computer is caused to function as a programming ability diagnostic apparatus including a process for creating a test passing program to be performed and a control unit that causes the display unit to display a diagram generated by the visualization diagram generation unit.
このような構成からなるプログラミング能力診断方法及びコンピュータプログラムによれば、上述した第1の発明に係るプログラミング能力診断装置と同様に、プログラムの構造を構築する能力を簡易かつ迅速に診断することができるとともに、プログラミング課題の内容を勘違いして作成されたことによるプログラムの誤評価を防ぐことができる。 According to the programming ability diagnosis method and the computer program having such a configuration, the ability to construct the structure of the program can be diagnosed easily and quickly, similarly to the programming ability diagnostic apparatus according to the first invention described above. At the same time, it is possible to prevent erroneous evaluation of the program due to misunderstanding of the contents of the programming task.
以上説明したように、本発明によれば、プログラミング能力診断を行う者は、一の処理モジュール若しくは複数の処理モジュール各々の処理手順又は一の処理モジュール若しくは複数の処理モジュール間の構造が可視化された図を視認することによって、自身がプログラミングに熟知していなくても、また、被験者が大勢いる場合であっても、プログラムの構造を構築する能力を簡易かつ迅速に診断することができる。また、プログラミング課題の内容を勘違いして作成されたプログラムを、プログラミング能力診断の対象から排除することができるので、プログラミング課題の内容を勘違いしてプログラムが作成されたことに起因する誤評価を防ぐことができる。 As described above, according to the present invention, the person who performs the programming ability diagnosis visualized the processing procedure of each processing module or a plurality of processing modules or the structure between the one processing module or the plurality of processing modules. By visually recognizing the diagram, it is possible to easily and quickly diagnose the ability to construct the structure of the program, even if it is not familiar with programming or there are many subjects. In addition, programs created by misunderstanding the contents of programming tasks can be excluded from the target of programming ability diagnosis, thus preventing erroneous evaluation due to the fact that programs were created by misunderstanding the contents of programming tasks. be able to.
以下、本発明の実施の形態に係るプログラミング能力診断装置について、図面を参照しながら具体的に説明する。まずは、プログラミング能力診断装置が用いられるシステムの概要について説明する。 Hereinafter, a programming capability diagnosis apparatus according to an embodiment of the present invention will be specifically described with reference to the drawings. First, an outline of a system in which the programming ability diagnostic device is used will be described.
[システム概要]
図1は、本発明の実施形態に係るプログラミング能力診断装置(図1ではクライアント端末2A)が用いられるシステムのシステム構成を示す概念図である。このシステムの利用形態について、具体例に説明する。
[System Overview]
FIG. 1 is a conceptual diagram showing a system configuration of a system in which a programming capability diagnosis device (
第1の利用形態は、プログラミング能力診断装置としてのクライアント端末2Aと、サーバ1とを、システム運用企業が保有している利用形態である。システム運用企業としては、例えば人材派遣業を事業として行っている企業などが考えられる。サーバ1は、システム運用企業によって所定のデータセンター内に設置され、インターネット等の通信ネットワーク100を介して、システム運用企業内のクライアント端末2Aと接続される。また、サーバ1は、システム運用企業に登録(例えば人材派遣登録)している複数のプログラマが保有するクライアント端末2B(例えば家庭のPCなど)にも接続される。
The first usage pattern is a usage pattern in which a system operating company possesses a
システム運用企業に在籍する人材評価担当者は、クライアント端末2Aを操作してサーバ1にアクセスし、被験者となるプログラマ(例えば人材派遣登録しているプログラマ)に受けさせたいプログラミング課題を登録し、そのプログラミング課題に対する解答を入力可能なリンク先のURLを取得する。そして、そのURLを、被験者に電子メールや電話などで別途連絡する。URLは、サーバ1内に存在するプログラミング課題(ファイル)の場所を指し示すものである。被験者は、自分の都合のよいとき、或いは予め決められた期限内に、自己のクライアント端末2Bを操作して、URLが示すリンク先(ウェブページ)にアクセスし、プログラミング課題に対する解答を入力する。入力された解答はサーバ1に送られ、サーバ1内の所定の記憶領域に記憶される。その後、人材評価担当者は、クライアント端末2Aを操作してサーバ1にアクセスし、被験者によって入力された解答の内容を確認し、その内容をクライアント端末2Aにダウンロードし、被験者のプログラミング能力を診断する。プログラミング能力の診断内容の詳細については、[プログラミング能力診断]にて後述する。
A personnel evaluation staff member of a system operating company accesses the
第2の利用形態は、サーバ1のみを、システム運用企業が保有している利用形態である。プログラミング能力診断装置としてのクライアント端末2A、被験者が操作するクライアント端末2Bは、システム運用企業とシステム利用契約を締結したシステム利用企業が保有している。システム運用企業としては、プログラミング能力診断サービスを提供するSaaS(Software as a Service)企業、システム利用企業としては、プログラマを数多く抱えるソフトウェア会社などである。企業ではないが、プログラミング授業が数多くある情報系大学なども、システム利用者になり得る。
The second usage mode is a usage mode in which only the
システム運用企業に在籍するSaaS担当者は、サーバ1を所定のデータセンター内に設置し、システム利用企業のシステム利用契約を締結する。システム利用企業に在籍する人事担当者は、被験者となるプログラマ(例えば採用を検討しているプログラマ)に受けさせたいプログラミング課題を登録する。あとは、第1の利用形態と同様である。すなわち、被験者となるプログラマにURLが連絡され、被験者はクライアント端末2Bを操作して、URLが示すサーバ1内のリンク先にアクセスし、プログラミング課題に対する解答を入力する。その後、人事担当者は、クライアント端末2Aを操作してサーバ1にアクセスし、被験者によって入力された解答の内容を確認し、その内容をクライアント端末2Aにダウンロードし、被験者のプログラミング能力を診断する。
The SaaS person in charge at the system operation company installs the
このように、本実施形態では、上述した第1の利用形態においても第2の利用形態においても、被験者によって入力されたプログラミング課題に対する解答の内容を、通信ネットワーク100を介してサーバ1からクライアント端末2Aにダウンロードするようにしている。これにより、クライアント端末2A上で、被験者の解答内容を簡易かつ迅速に取得することができ、被験者のプログラミング能力を簡易かつ迅速に診断することができる。特に、被験者の人数が大勢になった場合には、より簡易に、かつ、より迅速に診断することができる。
As described above, in this embodiment, in both the first usage mode and the second usage mode, the content of the answer to the programming task input by the subject is transmitted from the
なお、プログラミング能力診断装置としてのクライアント端末2Aは、必ずしも図1に示すシステムに組み込まれる必要はない。プログラミング課題に対する被験者の各種解答データを、USBやDVDなどの記録媒体でクライアント端末2Aに移動させることによって、クライアント端末2A上でのプログラミング能力診断は可能になる。
Note that the
以下では、クライアント端末2Aにおいて被験者のプログラミング能力診断を行うにあたって、図1に示すシステムを利用する。そして、まず、プログラミング課題に対する被験者の解答データを、通信ネットワーク100を介してサーバ1からクライアント端末2Aにダウンロードするまでのプロセスについて、詳細に説明する([解答データの取得]参照)。その後、ダウンロードして取得した解答データを用いて、クライアント端末2A上で行われるプログラミング能力診断について、詳細に説明する(後述する[プログラミング能力診断]参照)。
In the following, the system shown in FIG. 1 is used to perform the programming ability diagnosis of the subject in the
[解答データの取得]
図2は、図1に示すサーバ1のハードウェア構成例を示すブロック図である。なお、図1に示すシステムでは、サーバ1は1台としているが、複数台に分散させてもよい。また、マルチテナント(例えば上述した第2の利用形態において複数の企業がシステム利用企業になること)を考えた場合には、更に多くのクライアント端末2A、2Bがサーバ1に接続されることになる。
[Get answer data]
FIG. 2 is a block diagram illustrating a hardware configuration example of the
図2に示すように、サーバ1は、各種プログラムに基づき数値計算や情報処理を行うとともに、ハードウェア各部の制御を行うCPU(Central Processing Unit)11と、起動プログラムや初期化プログラム等が格納されたROM(Read Only Memory)12と、CPU11が各種プログラムを実行する際のワークエリアとして機能するRAM(Random Access Memory)13と、外部の通信ネットワーク100と通信可能に接続される通信部16と、補助記憶手段として機能するHDD(Hard Disk Drive)17と、を有しており、これらの間の通信は、データバスやアドレスバスなどのバスを介して行われる。
As shown in FIG. 2, the
サーバ1のHDD17には、各種アプリケーションを実行するとともに、サーバ1全体を統合的に管理するOS(Operating System)がインストールされている(図示せず)。また、OS上で実行されるアプリケーション(アプリ)として、被験者に出題する課題を選択して設定するとともに、被験者の解答を確認するための課題設定・解答確認アプリ172と、被験者のスキルを定量的に評価する生産性・品質評価アプリ174と、クライアント端末2A,2Bのウェブブラウザアプリ272からの要求に応じて、HTML(Hyper Text Markup Language)文書やXML(Extensible Markup Language)文書、画像などの情報をクライアント端末2A,2Bに送信するウェブアプリ175がインストールされている。ウェブアプリ175のインストールによって、サーバ1はウェブサーバとして機能し得る。各アプリケーションは、アプリケーションプログラムがHDD17からRAM13にロード(展開)され、各アプリケーションプログラムに基づきCPU11によって実行される。
The
このように、サーバ1は、ユーザによるクライアント端末2A,2Bの受付部24の操作によって、サーバ1から送信された画像などの情報を表示部25に表示させるユーザインタフェースを提供するために、OSやウェブアプリ175などを有する。
As described above, the
さらに、サーバ1のHDD17は、被験者に出題する課題を登録する課題データベース(DBと略す。以下同様)176と、システム利用権限を有する課題出題者を登録するための出題者DB178と、クライアント端末2A,2Bに送信するHTML文書や画像などが格納される発行DB179と、被験者から取得した解答を格納する解答DB180と、を有している。
Further, the
より具体的に説明すると、課題DB176は、過去の課題(ソフトウェア資産)を容易に再利用することができるようにするために、課題出題者によって作成されたプログラミング課題の課題名や課題内容を登録(記憶)しておくDBである。出題者DB178は、課題出題者としてシステムの利用する権限があるか否かを確認するために、課題出題者のログインIDやパスワードを登録しておくDBである。発行DB179は、被験者がプログラミング課題に対する解答を入力するための画面を被験者のクライアント端末2Bに表示させるHTML文書や画像などを格納しておくDBである。それらのHTML文書や画像などは、後述するクライアント端末2Bのウェブブラウザアプリ272(図3)からの要求に応じて、被験者のクライアント端末2Bに送信される。解答DB180は、被験者から取得した解答、すなわち(例えば被験者がソースコードを1文字入力するごとに)クライアント端末2Bから送られてきたログデータ(被験者が作成したソースコード)を格納(記憶)しておくDBである。詳細は後述するが、そのログデータをサーバ1が受信したタイミングも解答DB180に格納される。
More specifically, the
なお、サーバ1のHDD17は、フラッシュメモリやUSB(Universal Serial Bus)メモリ(及びメモリコントローラ)、光ディスクドライブ等で代替することもできる。また、各アプリケーションプログラムは、予めHDD17に格納することもできるし、CDやDVD等の記録媒体からHDD17に格納することもできるし、通信ネットワーク100を介して外部のコンピュータからダウンロードされ、HDD17に格納することもできる。さらに、説明の便宜上、上述したアプリは別々に一のHDD17に格納されていることとするが、複数のHDD17に分散して格納することもできるし、また、複数のアプリが統合されたものが一のHDD17に格納することもできる。
The
図3は、クライアント端末2のハードウェア構成例を示すブロック図である。なお、課題出題者が操作するクライアント端末2Aのハードウェア構成と、被験者が操作するクライアント端末2Bのハードウェア構成とは同様であるので、特に区別することなく、クライアント端末2のハードウェア構成として説明する。なお、プログラミング能力診断装置として機能するクライアント端末2Aの詳細については、図17に示す機能ブロック図を用いて別途後述する。
FIG. 3 is a block diagram illustrating a hardware configuration example of the
図3に示すように、クライアント端末2は、CPU21と、ROM22と、RAM23と、マウスやキーボード等によりユーザの操作を受け付ける受付部24と、モニタ等の表示部25と、ネットワークカード等の通信部26とがバスを介して接続されている。これら各部が提供する機能は、基本的にサーバ1の対応する各部と同様である。また、クライアント端末2はHDD27を有しており、このHDD27には、受付部24及び表示部25による入出力機能や、各種アプリケーションを実行するための機能、および、表示部25においてGUIを利用するための機能などを提供するとともに、クライアント端末2全体を統合的に管理するOSがインストールされている(図示せず)。
As shown in FIG. 3, the
また、OS上で実行されるアプリケーション(アプリ)として、電子メールの送受信を行う電子メールアプリ271と、課題出題者が出題したプログラミング課題をウェブ上で閲覧するためのウェブブラウザアプリ272とがインストールされている。ウェブブラウザアプリ272のインストールによって、クライアント端末2はウェブクライアントとして機能し得る。これらの各アプリケーションは、アプリケーションプログラムがHDD27からRAM23にロード(展開)され、各アプリケーションプログラムに基づきCPU21によって実行される。なお、サーバ1のHDD17と同様に、クライアント端末2のHDD27も、フラッシュメモリやUSBメモリ(及びメモリコントローラ)、光ディスクドライブ等で代替することが可能である。
In addition, as an application (application) executed on the OS, an
図4は、図1に示すシステムを用いて、プログラミング課題に対する被験者の解答データを、通信ネットワーク100を介してサーバ1からクライアント端末2Aにダウンロードするまでのプロセスを示すフローチャートである。各プロセスの概要について説明すると、プログラミング課題を出題する出題者が、プログラミング課題をサーバ1に登録するために、サーバ1にログインするステップS1、その出題者が、被験者に受けさせたいプログラミング課題を作成し、サーバ1に登録するステップS2、その出題者が、被験者に受けさせたいプログラミング課題(ステップS2で登録したものでもよいし、過去に自分が登録したものでもよいし、他の出題者が過去に登録したものでもよい)を選択するステップS3、選択されたプログラミング課題に対する解答を入力するためのウェブサイトを示すURLを設定(発行)するステップS4、そのURLを電子メール等で知らされた被験者が、URLが示すウェブサイトにアクセスするステップS5、被験者のプログラミング課題に対する解答の入力を受け付けるステップS6、プログラミング課題を出題した出題者が、被験者の解答を確認するステップS7、そして、プログラミング能力を診断し、スキル評価を行うステップS8、という流れからなる。
FIG. 4 is a flowchart showing a process for downloading the answer data of the subject to the programming task from the
図4に示すように、まず、課題出題者のログインが行われる(ステップS1)。具体的には、課題出題者が、自己のクライアント端末2Aのウェブブラウザを立ち上げ、通信ネットワーク100を介してサーバ1に(所定のリンク先に)アクセスする。そして、クライアント端末2Aが、表示部25にログイン画面を表示させるためのHTML文書等の送信をサーバ1に要求すると、CPU11によって、これらのHTML文書等がクライアント端末2Aに送信される。
As shown in FIG. 4, first, the challenger is logged in (step S <b> 1). Specifically, the challenger starts up the web browser of his / her
課題出題者は、クライアント端末2Aの受付部24(マウスやキーボード等)の操作により、自己のログインIDとパスワードを入力する。そして、ログインIDとパスワードがサーバ1に送られ、それらの照合が行われた後、課題出題者のログインが完了する。ログインIDやパスワードの照合は、上述したように、CPU11がHDD17内の出題者DB178にアクセスすることによって行う。これにより、課題出題者にスキル診断システムの利用権限があることが確認される。なお、照合に失敗した場合には、ログインを拒否される。
The challenger inputs his login ID and password by operating the reception unit 24 (mouse, keyboard, etc.) of the
課題出題者のログインが完了すると、プログラミングスキル診断システムのトップメニューが表示される。具体的には、サーバ1のCPU11は、クライアント端末2Aの受付部24からの操作信号を受信して、課題出題者のログインを認識すると、クライアント端末2Aの表示部25にトップメニュー画面を表示させる。
When login of the challenger is completed, the top menu of the programming skill diagnosis system is displayed. Specifically, when the
図5は、トップメニュー画面の一例である。図5に示すトップメニュー画面には、新規課題の登録や課題内容の編集を行うための課題登録ボタン61と、プログラミング課題を出題するためのURLを設定して発行するための課題URL発行ボタン62と、被験者の解答を確認するための解答確認ボタン63とが、上からこの順で配置されている。このように、トップメニュー画面の一画面上に、課題登録、URL発行、課題確認を行うためのボタンが配置されることで、課題出題者は、被験者に受けさせたいプログラミング課題を作成し、サーバ1に登録すること(図4のステップS2)、被験者に受けさせたいプログラミング課題を選択するとともに(図4のステップS3)、選択されたプログラミング課題に対する解答を入力するためのウェブサイトを示すURLを設定(発行)すること(図4のステップS4)、被験者の解答を確認すること(図4のステップS7)、という一連の作業を、容易かつ迅速に行うことができる。
FIG. 5 is an example of a top menu screen. The top menu screen shown in FIG. 5 includes an
解答確認ボタン63の右方には、新着解答の件数を示す解答新着件数表示欄64が配置されている。これにより、課題出題者は、トップメニュー画面を視認すると同時に、被験者からの解答がサーバ1に届いているかどうかを確認することができる。
On the right side of the
次に、課題出題者は、図5に示すトップメニュー画面から課題の登録を行う(図4のステップS2)。具体的には、課題出題者によってトップメニュー画面の課題登録ボタン61がクリックされると、クライアント端末2Aの表示部25に課題登録画面が表示される。
Next, the challenger registers the assignment from the top menu screen shown in FIG. 5 (step S2 in FIG. 4). Specifically, when the
図6は、課題登録画面の一例である。図6に示す課題登録画面の上方には、既に課題出題者によって登録された課題の一覧が表示される。これにより、課題出題者は、被験者に受けさせることが可能な課題を一目で容易に確認することができる。なお、課題一覧中の「登録者」は、課題名で示されたプログラミング課題を過去に作成した者、すなわちサーバ1に課題名で示されたプログラミング課題を過去に登録した者である。また、「難易度」は、登録者によるコメントである。難易度が高いか低いかについては、登録者の私見により、一コメントとして表示される。また、課題出題者によって登録された課題が未だ存在しない場合には、空欄表示になる。
FIG. 6 is an example of an assignment registration screen. In the upper part of the assignment registration screen shown in FIG. 6, a list of assignments already registered by the assignment examiner is displayed. As a result, the subject person can easily confirm at a glance the issues that can be given to the subject. The “registrant” in the assignment list is a person who created a programming assignment indicated by the assignment name in the past, that is, a person who previously registered the programming assignment indicated by the assignment name in the
図6に示す課題登録画面において、課題一覧表の下方には、新しい課題を登録するための新規登録ボタン617と、選択されている課題を編集目的で開くための開くボタン618とが配置され、これらのボタンの更に下方に、トップメニュー画面にリンクが張られた文字「TOP」619が表示されている。
In the assignment registration screen shown in FIG. 6, a
課題の登録手順としては、上述した新規登録ボタン617をクリックして新しく課題を登録するか、上述した開くボタン618をクリックして過去の課題を編集するか、の2種類がある。いずれの登録手順でも、登録設定ダイアログ画面が表示され、登録条件の設定に移る。
There are two types of procedure for registering assignments: clicking the above-mentioned
図7は、登録設定ダイアログ画面の一例である。図7に示す登録設定ダイアログ画面は、開くボタン618をクリックしてダイアログ画面が表示された直後のイメージであり、新規登録ボタン617をクリックした場合には、ダイアログ画面は全て未設定状態(空欄表示)になる。このように、開くボタン618を新規登録ボタン617の下に並べて配置しておき、開くボタン618のクリックにより、過去の課題が自動的に読み込まれた登録設定ダイアログ画面が表示されるようにすることで、課題出題者は、過去の課題(過去の資産)を容易に再利用することができる。
FIG. 7 is an example of a registration setting dialog screen. The registration setting dialog screen shown in FIG. 7 is an image immediately after the dialog screen is displayed when the
例えば、課題「英単語カウント」の派生課題を作りたい場合には、図6に示す課題一覧表において「英単語カウント」にカーソルをあわせ、開くボタン618のクリックによりこれを開く。そして、図7に示す登録設定ダイアログ画面上で内容をアレンジし、課題名テキストボックス6181上で別の課題名(「英単語カウント2」など)を入力し、登録ボタン6189をクリックすればよい。これにより、課題出題者は、過去の課題の派生課題を容易に作ることができる。
For example, when it is desired to create a derived task of the task “English word count”, the cursor is placed on “English word count” in the task list shown in FIG. 6, and this is opened by clicking the
図7に示す登録設定ダイアログ画面の上方には、課題名を新規入力できる課題名テキストボックス6181、CかJAVA(登録商標)などの言語を選択できる言語リストボックス(プルダウンメニュー)6182が設けられている。課題名テキストボックス6181を設けておけば、上述したように、容易に派生課題を作ることができる。また、言語リストボックス6182を設けておけば、課題出題者がC言語かJAVA(登録商標)言語かを自由に選択することができるとともに、将来的に、課題サポート言語(Rubyなど)が増えた場合に容易に追加することができる。
Above the registration setting dialog screen shown in FIG. 7, an assignment
言語リストボックス6182の下方には、プログラミング課題の内容を直接入力するための課題内容登録エリア6183が配置されている。文章のみの課題の場合には、テキスト形式で課題を作成することができるし、課題に図を入れたい場合には、PDF形式或いはJPEG形式で課題を作成することができる。本実施形態では、課題内容登録エリア6183の初期状態はテキストボックスとしている。したがって、課題出題者が課題文を登録するときには、この課題内容登録エリア6183に直接課題文を書いてもよいし、別の文書からコピー&ペーストしてもよい。
Below the
課題内容登録エリア6183の下方には、自動単体テストのためのテストコードを直接入力し、登録するためのテストコード登録エリア6185が配置されている。自動単体テストとは、被験者が作成したプログラムについて、プログラミング課題を出題した出題者により設定された所望のプログラム出力が得られるか否かのテストのことであり、サーバ1を通じて被験者のクライアント端末2Bにおいて実行される。本来は、この自動単体テストは被験者がクライアント端末2Bにおいて実行するものであるが、図7に示す登録設定ダイアログ画面の最下方にテストボタン6187を設けることによって、課題出題者は、課題内容を登録する段階において、プログラミング課題に対する解答を自分で試作してみるとともに、試作したプログラムについて自動単体テストを実行してみることができる。自動単体テストを実行するためのテストボタン6187の詳細については、後述する。なお、内容のクリアボタン6186をクリックすれば、テストコード登録エリア6185に入力した内容が消去される。
Below the assignment
図7において、登録設定ダイアログ画面の下方に配置された登録ボタン6189は、課題内容登録エリア6183やテストコード登録エリア6185に入力した設定内容に従って、プログラミング課題を登録するためのボタンであり、キャンセルボタン6188は、課題内容登録エリア6183やテストコード登録エリア6185に入力した設定内容を破棄してダイアログを閉じるボタンである。前者の登録ボタン6189について具体的に説明すると、CPU11は、課題内容登録エリア6183やテストコード登録エリア6185に入力された設定内容を、HDD17の課題DB176に登録する。
In FIG. 7, a
次に、課題出題者は、図5に示すトップメニュー画面に戻って、課題の選択を行う(図4のステップS3)。具体的には、課題出題者によってトップメニュー画面の課題URL発行ボタン62がクリックされると、クライアント端末2Aの表示部25に課題URL発行画面が表示される。
Next, the challenger returns to the top menu screen shown in FIG. 5 and selects an assignment (step S3 in FIG. 4). Specifically, when the assignment
図8は、課題URL発行画面の一例である。図8に示す課題URL発行画面の上方には、既に課題出題者によって登録されている課題の一覧が表示される。課題一覧は、図6に示す課題一覧と同じものである。したがって、課題一覧は、図6と図8で2箇所表示されることになり、両方の画面で課題出題者が記入したコメント(「難易度」など)は互いに反映させる必要がある。 FIG. 8 is an example of an assignment URL issue screen. Above the assignment URL issue screen shown in FIG. 8, a list of assignments already registered by the assignment examiner is displayed. The assignment list is the same as the assignment list shown in FIG. Accordingly, the task list is displayed in two places in FIG. 6 and FIG. 8, and comments (such as “difficulty level”) written by the task candidate on both screens must be reflected on each other.
また、課題一覧の下方には、発行履歴一覧が表示されており、その表示項目は、左欄より、発行日621、課題名622、有効期限623、発行者624、目的625の順で並んでいる。発行日621、課題名622、有効期限623の項目は、システムによって自動的に表示される項目であり、発行者624、目的625の項目は、課題出題者が任意に記入するコメントである。特に、有効期限623について詳述すると、課題出題者が発行したURL(で示されたリンク先)の有効期限が過ぎたか否か(そのURLを用いて被験者が受験可能か否か)を示しており、有効期限が過ぎていない場合には、黒丸印がついている。仮に、黒丸印がついている課題を出題した場合には、今回の被験者だけでなく、既にその課題を出題されている被験者からも解答が送られてくる可能性があり、管理が煩雑になる(黒丸印がついていない課題については、解答画面へのアクセス有効期限が過ぎているために、今回の被験者以外の者から解答が送られてくることはない)。したがって、有効期限623の項目を設けることによって、課題発行管理の利便性を高めることができる。なお、URL(で示されたリンク先)の有効期限の詳細については、図9を用いて後述する。また、本明細書では、インターネット等の通信ネットワーク100上で、HTMLファイルや画像等のデータが保存される場所を示す識別子として、URLを用いているが、これはURI(Uniform Resource Identifier)と称することもできる。
The issue history list is displayed below the assignment list, and the display items are arranged in the order of
図8に示す課題URL発行画面から、課題URLを発行する手順としては2つある。1つは、登録されているプログラミング課題を選択して、新規発行ボタン627をクリックする方法であり、もう1つは、過去の発行履歴を選択して、修正/再発行ボタン629をクリックする方法である。これらのいずれの手順でも、後述する発行設定ダイアログ画面(図9参照)が表示部25に表示される。発行設定ダイアログが開いたときの各設定項目は、新規発行ボタン627がクリックされたときには、課題名のみがセットされて他は全て未設定状態で表示(空欄表示)される一方、修正/再発行ボタン629がクリックされたときには、過去に発行したときの条件がセットされた状態で表示される。これにより、過去に発行したURLを再利用する場合には、課題出題者が条件を再度入力する手間を省くことができる。
There are two procedures for issuing a task URL from the task URL issuing screen shown in FIG. One is a method of selecting a registered programming task and clicking a
図9は、発行設定ダイアログ画面の一例である。図9に示す発行設定ダイアログ画面の一番上には、現在登録されている課題を課題名ごとに選択できるリストボックス701が表示される。これにより、過去の発行履歴と全く同じ設定にしつつ、被験者に出題する課題だけを変更してURLを発行するような場合に、URL有効期限などを何度も設定する手間を省くことができる。
FIG. 9 is an example of the issue setting dialog screen. At the top of the issuance setting dialog screen shown in FIG. 9, a
リストボックス701の下には、発行するURL(で示されたリンク先)の有効期限を設定するために、テキストボックス等から構成されるURL有効期限入力欄702が表示される。URL有効期限入力欄702では、日時を指定する、発行からの期間を指定する、或いは、最終アクセスからの期間を指定する、という3種類の条件でURL(で示されたリンク先)の有効期限を設定することができる。これにより、仮にURLが漏洩した場合であっても、有効期限経過後のシステムの無断利用を防ぐことができる。また、URL(で示されたリンク先)の有効期限を設定することができれば、図8を用いて前述したように、有効期限が過ぎているリンク先のURLを一目で把握することができるので、課題発行管理の利便性を高めることができる。
Below the
URL有効期限入力欄702の下には、課題解答時に被験者にパスワード入力を要求するかどうかを設定するパスワード入力欄703が表示され、パスワード入力欄703の下には、時間制限入力欄704が表示されている。なお、パスワードの入力回数のカウントや、解答時間の計測は、CPU11の内蔵タイマや外付けタイマ等を用いることによって実現することができる。
Below the URL expiration
時間制限入力欄704の下には、発行タイトル入力欄705とメッセージ入力エリア706、及び解答入力フィールド設定欄707が表示されている。これらは、被験者が操作するクライアント端末2Bの表示部25に表示させる画面をカスタマイズする設定欄・設定エリアである。特に、解答入力フィールド設定欄707は、被験者が自分の氏名を入力する場合に、入力可能な文字数を制限することを可能にするとともに、被験者が自分の携帯メールアドレスを入力する場合に、入力可能な文字数を制限することを可能にする欄である。
Below the time
図9に示す発行設定ダイアログ画面の一番下には、テストボタン708、キャンセルボタン709、発行ボタン710が横に並べて配置されている。テストボタン708は、設定内容に従って図10に示す発行画面を表示するボタンであり、課題出題者が、実際に被験者に表示される内容を確認するためのボタンである。このテストボタン708は、あくまで確認用の発行画面を表示するためのボタンであって、実際にプログラミング課題に対する解答を入力するためのURLは発行されない。すなわち、後述する発行ボタン710のように、図9に示す設定内容とプログラミング課題とが対応付けられて、発行DB179に格納されるわけではない。また、キャンセルボタン709は、設定内容を破棄して、発行設定ダイアログを閉じるためのボタンである。
At the bottom of the issue setting dialog screen shown in FIG. 9, a
そして、発行ボタン710は、図9に示す設定内容とプログラミング課題とを対応付けて、発行DB179に格納するためのボタンである。具体的に説明すると、課題出題者によって発行ボタン710がクリックされると、発行ボタン710の操作信号を受信したCPU11は、課題DB176から被験者に受けさせたい課題(図9でいえば課題「英単語カウント」)をRAM13上にコピーして読み出す。また、その課題に対し、図9に示す設定内容を対応付けて、HDD17内の発行DB179に格納する。このように、テストボタン708と異なり、発行ボタン710をクリックすることによって、実際に課題と設定内容が対応付けられて、HDD17内の発行DB179に格納される。発行DB179に格納されるファイルは、後述する図10に示す発行画面を、表示部25に表示させるために、HTML文書やXML文書等で格納される。
The
また、発行ボタン710は、図9に示す設定内容に従って、例えば図10に示す発行画面をクライアント端末2Aの表示部25に表示させるためのボタンでもある。具体的に説明すると、課題出題者によって発行ボタン710がクリックされると、図9に示す設定内容に従って、図10に示す発行画面が自動的に生成され、その発行画面がクライアント端末2Aの表示部25に表示される。
Further, the
図10は、課題出題者が操作するクライアント端末2Aの表示部25に表示される発行画面の一例である。図11は、図10に示す発行画面が、課題出題者のクライアント端末2Aにおける表示部25のブラウザ上に表示されている様子を示す。上述のようにして自動的に生成された図10の発行画面のURL(http://www.abc000・・・)、すなわち図11に示すURL1000は、課題出題者が被験者に受けさせたい課題、図9に示すURL有効期限入力欄702に入力された有効期限、図9に示すパスワード入力欄703に入力されたパスワードなどと対応付けられる。また、図10及び図11では、図9の発行タイトル入力欄705とメッセージ入力エリア706に入力した内容が表示されている。なお、この図10に示す発行画面は、後述するように、被験者が操作するクライアント端末2Bの表示部25に表示させる画面になる。
FIG. 10 is an example of an issuance screen displayed on the
次に、課題出題者が、図11に示す発行画面のURL1000をコピー&ペーストして、電子メールで被験者に送った後、電子メールを受信した被験者は、クライアント端末2Bを操作してそのURLにアクセスする(図4に示すステップS5)。具体的には、課題出題者のクライアント端末2A及び被験者のクライアント端末2Bにおいて、HDD27内の電子メールアプリ271が実行され、上述したURLが付された電子メールが、クライアント端末2Aからクライアント端末2Bへと送信される。
Next, after the subject questioner copies and pastes the
被験者は、クライアント端末2Bのウェブブラウザアプリ272を実行し、課題出題者によって選択された課題に対する解答を入力可能なウェブページを取得するために、電子メールに付されたURLにアクセスする(電子メール上で、ハイパーリンクされたURLをクリックすることもできる)。
The test subject executes the
サーバ1は、クライアント端末2Bのウェブブラウザアプリ272からの要求に応じて、発行DB179に格納されているHTML文書等をRAM13上にコピーして読み出して、通信部16を介して、それをクライアント端末2Bに送信する。これにより、課題出題者によって選択されたプログラミング課題に関する課題情報を、図11に示す発行画面を通じて被験者に伝える。
In response to a request from the
次に、被験者は、クライアント端末2Bの表示部25に表示された、図11に示す発行画面を閲覧して、必要事項を入力した後、課題に対する解答入力を行う。すなわち、サーバ1側からみれば、課題に対する解答入力の受付が行われる(図4のステップS6)。
Next, the subject browses the issue screen shown in FIG. 11 displayed on the
図11に示す発行画面には、上から順に、URL1000、課題出題者が発行タイトル入力欄705(図9)に入力した内容801、パスワード入力欄802、課題出題者がメッセージ入力エリア706(図9)に入力した内容(符号省略)、解答者氏名入力欄803、携帯メールアドレス入力欄804、携帯メールアドレス再入力欄805、スタートボタン806が表示される。
In the issuance screen shown in FIG. 11, in order from the top, the
被験者は、パスワード入力欄802に、予め電子メール等で知らされているパスワード「test2009」を入力し、解答者氏名入力欄803及び携帯メールアドレス入力欄804に氏名とメールアドレスを入力した後に、スタートボタン806をクリックする。そうすると、クライアント端末2Bの表示部25にプログラミング画面(図12)が表示される。具体的には、サーバ1のウェブアプリ175は、クライアント端末2Bのウェブブラウザアプリ272からの要求に応じて、発行DB179から、表示部25にプログラミング画面を表示させるためのHTML文書等をRAM13上にコピーして読み出して、それをクライアント端末2Bに送信する。これにより、被験者にプログラミング環境を提供する。なお、図12は、課題表示/編集エリア901にまだ何も入力されていない様子を示している。
The subject enters the password “test2009” that has been previously known by e-mail or the like in the
図12に示すプログラミング画面中、課題表示/編集エリア901の「課題」タブをクリックすると、例えば図13に示すように、課題出題者が被験者に受けさせたい課題の内容(課題文)が表示される(図7に示す課題内容登録エリア6183参照)。上述したように、課題内容が省略されている場合(課題内容は口頭などで既に伝えている場合)には、「課題」タブをクリックしても空欄表示となる。
When the “task” tab in the task display /
図12又は図13において、課題表示/編集エリア901は、「課題」タブによって課題内容を表示するエリアであるとともに、「編集」タブによってソースコードの作成・編集を行わせるエリアである。プログラミングをしている最中に、課題表示とソースコード編集は随時切り替えることができる。これにより、被験者は、課題を忘れた場合であっても課題内容を適宜確認することができる。
In FIG. 12 or 13, an assignment display /
課題表示/編集エリア901の下に表示される出力エリア902は、被験者にとって標準出力(STDOUT)エリアになる。ここにはビルド結果やプログラムの出力結果などが表示される。例えば、図14に示すような警告表示がなされたり、図15に示すようなエラー表示がなされたりする。出力エリア902の下には、ビルドボタン903、実行ボタン904、テストボタン905、及び完了ボタン906が左から順に並んでいる。
An
ビルドボタン903は、サーバ1において作成中プログラムのビルドを行う。具体的に説明すると、被験者が課題表示/編集エリア901に入力したソースコードは、順次サーバ1に送られる。例えば、JavaScriptを利用して非同期通信を行い、サーバ1とクライアント端末2Bの間でXMLデータのやり取りを行うAjax(Asynchronous JavaScript+XML)を用いることができる。これにより、クライアント端末2Bは、被験者のプログラミング過程データ(ログデータ)をサーバ1に非同期で送り続けることができる。
A
なお、ログデータは、被験者がソースコードを1文字入力するごとに送られてもよいし、所定のブロック(例えば任意の関数)を完成させるごとに送られてもよい。本実施形態では、被験者がソースコードを1文字入力するごとに、ログデータ(それまで被験者が記述したソースコード)がサーバ1に送られるものとする。これにより、通信障害等で送信されたログデータが一部失われたとしても、サーバ1は、それ以降のログデータを受信することにより、ログデータを回復(欠落部分を補充)することができ、ひいてはビルド対象となるログデータの信頼性を高めることができる。また、Ajax以外にも、サーバ1がログデータを受信できる技術であれば、如何なる技術を採用してもよい。例えば、サーバ1との同期通信を行うDHTML(Dynamic Hyper Text Markup Language)を用いて、所定のタイミング(例えばリロードタイミング)でログデータをサーバ1に送ってもよい。その他、プラグインのインストールを前提に、より自由度の高いFlash(登録商標)を用いてもよい。
Note that the log data may be sent every time the subject inputs one character of the source code, or may be sent every time a predetermined block (for example, an arbitrary function) is completed. In this embodiment, it is assumed that log data (source code written by the subject so far) is sent to the
サーバ1のCPU11は、クライアント端末2Bから送られてきたログデータを、通信部16を介して受信すると、解答した被験者と対応付けてHDD17内の解答DB180に順次格納する。このとき、CPU11の内蔵タイマ又は外付けタイマ、或いは時計機能等によって、通信部16においてログデータを受信したタイミングが解答DB180に格納される。このタイミングは、後述する[プログラミング能力診断]又は[定量的なスキル評価]に用いられる。
When the
このように、解答DB180にログデータが順次格納されている状態において、被験者がビルドボタン903をクリックすると、クライアント端末2BのCPU21は、通信部26を介してビルド実行命令をサーバ1に送信する。サーバ1のCPU11は、通信部16を介してビルド実行命令を受信すると、解答DB180から現在格納されているログデータ(それまで被験者が作成したソースコードに相当)を読み出して、ビルドを行う。ビルドについては、コンパイルとリンクを連動させて実行形式のファイルを自動生成する処理である。ビルドの過程で、文法エラーがあった場合等には、コンパイラのメッセージは出力エリア902に表示される。なお、本実施形態では、ビルドを行うタイミングで解答DB180からログデータを読み出すこととしたが、もしログデータの欠落があった場合には、ビルド結果の信頼性が低下する。そこで、例えばサーバ1は、ビルド実行命令を受けたタイミングで、クライアント端末2Bから再度ログデータを取り直すこともできる。これにより、ログデータの欠落がない状態でビルドできるので、ビルド結果の信頼性を高めることができる。
As described above, when the test subject clicks the
実行ボタン904は、作成中のプログラムを実行するためのボタンであり、これをクリックすることによって、ビルドにより自動生成された実行形式のファイルが開かれる。プログラムからの標準出力は、出力エリア902に表示される。作成中のソースコードに変更があった状態で実行ボタン904がクリックされると、変更後のソースコードについて未だビルドが行われていないので、「ビルドを行いますか?」といった表示とともに、ビルドを許容するOKボタンが、例えばポップアップウィンドウにより自動的になされる。そして、被験者は、ビルドボタン903を直接クリックすることによって、或いは、実行ボタン904をクリックした後に、ポップアップウィンドウのOKボタンをクリックする等してビルドを許容することで、自分が記述したソースコードに、文法エラーがないか否か等を確認することができる。なお、「ビルドを行いますか?」といった表示をせず、実行ボタン904がクリックされた場合にビルドされていないとき、自動的(強制的)にビルドされ、その後、自動的に実行形式のファイルが開かれるようにしてもよい。
The
ここで、文法エラー等がない場合であっても、課題出題者が意図した出力結果が得られない可能性がある。そこで、被験者は、テストボタン905を利用する。テストボタン905は、自動単体テストを実行するためのボタンであり、自動単体テストとは、課題に対する解答されたソースコードが論理的に正しいか否かを自動的にチェックするためのテストをいう。前述した図7に示すテストコード登録エリア6185には、main関数と、TestCaseという名前(この名前は一例であり、他の名前でもよい)の構造体(struct)が記述されている(一部抜粋)。被験者がテストボタン905をクリックすると、図15に示す課題表示/編集エリア901に記述されたソースコードに、図7に示すテストコード登録エリア6185を通じて課題出題者が登録したテストコードがマージされ、ビルドが行われる。その後、自動生成された実行形式のファイルが開かれ、出力結果が出力エリア902に表示される。このようにして、被験者は、課題出題者が意図した出力結果が得られるか否かを、課題提出前に確認することができる。
Here, even if there is no grammatical error or the like, there is a possibility that the output result intended by the task candidate cannot be obtained. Therefore, the subject uses the
換言すれば、サーバ1のHDD17には、コンパイラやリンカとしての機能を提供するプログラミングアプリケーション(図2では図示せず)がインストールされており、CPU11は、そのプログラミングアプリケーションを実行することによって、上述したソースコードとテストコードをマージしたもののビルドを行う。
In other words, the
ソースコードとテストコードのマージ方法は、如何なる方法であってもよい。例えば、課題表示/編集エリア901に記述されたソースコードの中に、main関数に相当する記述があった場合には、その部分を削除したり、(テストコード中のmain関数が真のmain関数となるように)属性変更を行ったりするなど、必要に応じて編集を行った上で、ソースコードとテストコードをマージすればよい。ビルドが完了すると、CPU11は、得られた実行形式のファイルを実行し、出力結果を表示部25(図15に示すプログラミング画面の出力エリア902)に表示する。
The method for merging the source code and the test code may be any method. For example, when there is a description corresponding to the main function in the source code described in the assignment display /
このように、被験者は、サーバ1のプログラミングアプリケーション機能の提供を受けることで、自己のクライアント端末2B上において、自動単体テストを実行することができる。すなわち、本実施形態では、被験者が操作するクライアント端末2Bは、プログラミング課題を出題された被験者がプログラミング課題を解決するプログラムを作成するプログラム作成装置の一例となる。また、このクライアント端末2Bにおいて、被験者によってプログラムが作成され、プログラミング課題を出題した出題者により設定された所望のプログラム出力が得られるか否かのテストとして、自動単体テストが実行される。換言すれば、サーバ1に登録されているテストコードと、被験者により作成されたソースコードとを組み合わせることによって生成された、テスト用プログラムの出力結果を得るためのテストとして、自動単体テストが実行される。
Thus, the subject can execute the automatic unit test on his / her
なお、図7を用いて説明したテストボタン6187に関して補足すると、このボタンは、上述したように、課題出題者が課題内容を登録する段階において、プログラミング課題に対する解答を自分で試作してみるとともに、試作したプログラムについて自動単体テストを実行してみるためのボタンである。すなわち、課題出題者によってテストボタン6187がクリックされると、図12に示すプログラミング画面が、課題出題者のクライアント端末2Aの表示部25に表示される。そして、課題出題者は、プログラミング画面の課題表示/編集エリア901に、課題に解答するソースコードを試しに記述してみる。課題出題者は、プログラミングが終了すると、図12のプログラミング画面下方のテストボタン905をクリックする。そうすると、被験者が自動単体テストを行うのと同様に、課題表示/編集エリア901に記述されたソースコードに、図7に示すテストコード登録エリア6185を通じて登録されたテストコードがマージされ、ビルドが行われる。このようにして、課題出題者は、課題内容を登録する段階において(図7参照)、図7に示すテストボタン6187をクリックすることにより、試しに課題を解いてみることができる。つまり、自分が作成した模範ソースコードと模範テストコードによって、意図した出力結果が得られるか否かを試すことができる。
In addition, in addition to the
図12に戻って、最後に、被験者が完了ボタン906をクリックすると、プログラミング課題の受験は終了する。ただし、テストボタン905による自動単体テストに合格していない場合は、「全てのテストケースを通過していません。終了しますか?」というメッセージが表示される。すなわち、受付部24から操作信号を受信したクライアント端末2BのCPU21は、その旨をサーバ1に知らせる受験完了信号を送信する一方で、サーバ1のCPU11は、その受験完了信号を受信すると、解答DB180にアクセスして、テストボタン905による自動単体テストの合否履歴を確認する。なお、ここでいう全てのテストケースとは、図7に示すテストコード登録エリア6185を通じて課題出題者が登録したテストコード(例えば、ある変数に第1の値を代入すると、出力結果として第2の値が出力される等)の全てのケースを意味する。そして、自動単体テストのテストケースで1つでも合格していないと判定した場合には、上述したメッセージを表示させるHTML文書を、クライアント端末2Bに送信する。これにより、課題出題者が作った自動単体テストで合格した後に、作成したプログラムを提出するよう被験者に促すことができる。
Returning to FIG. 12, when the subject finally clicks the
このようにして、結果的にサーバ1の解答DB180には、課題出題者により設定された所望のプログラム出力が得られて自動単体テストを通過したプログラム(テスト通過プログラム)と、被験者がテスト通過プログラムを作成する過程で生成された複数のプログラム(中間生成プログラム)とが格納されることになる。本実施形態では、上述したAjax等の技術を用いて、被験者が受付部24を1回操作するごとに、クライアント端末2Bからサーバ1へデータ転送が行われる。なお、テスト通過プログラムについては1個であっても複数であってもよい。
In this manner, as a result, the
図12に戻って、完了ボタン906のクリックによって、被験者によるプログラミング課題の受験が終了すると、上述した図5に示すトップメニュー画面の解答新着件数表示欄64が1だけインクリメントされる。すなわち、サーバ1のCPU11は、クライアント端末2Bからの受験完了信号を受信すると、解答新着件数表示欄64に表示された数字に1を加算する。そうすると、課題出題者は、図5に示すトップメニュー画面の解答確認ボタン63をクリックすることにより、解答確認画面上で被験者の解答を確認することができる(図4に示すステップS7)。
Returning to FIG. 12, when the test of the programming task by the subject is completed by clicking the
図16は、課題出題者が被験者の解答を確認するための解答確認画面の一例である。図16に示す解答確認画面には、トップメニュー画面に表示されていた解答新着件数表示欄64と同じく、解答新着件数表示欄631が表示されている。また、解答新着件数表示欄631の下には、被験者が解答した課題の一覧(結果一覧)が表示される。この結果一覧において、基準632、課題名633、解答日634は、システムによって必ず表示される項目である。また、基準632の欄については、後述する[定量的なスキル評価]に用いられる。
FIG. 16 is an example of an answer confirmation screen for the subject-questioner to confirm the answer of the subject. In the answer confirmation screen shown in FIG. 16, a new answer
結果一覧の下方には、チャート表示ボタン637、ダウンロードボタン638、課題情報ボタン639、発行情報ボタン640が表示されている。結果一覧では、これら4個のボタンのいずれによっても開かれていない新着解答データについては、太字で示されるようになっている。これにより、課題出題者は、まだ開いていない新着データを容易に把握することができる。
Below the result list, a
チャート表示ボタン637は、後述する[定量的なスキルの評価]の評価結果を生産性・品質チャートで表示するためのボタンである。ダウンロードボタン638は、解答DB180から被験者の解答を読み出してダウンロードするためのボタンである。具体的には、課題出題者のクライアント端末2Aの表示部25上で、ダウンロードボタン638がクリックされると、サーバ1のCPU11は、解答DB180に格納された被験者の解答(上述したテスト通過プログラムと中間生成プログラム)を読み出して、クライアント端末2Aに対して送信する。その結果、課題出題者のクライアント端末2Aは、テスト通過プログラムと中間生成プログラムをダウンロードし、読み込むことができる。なお、ダウンロードの対象となるのは、図16に示す解答確認画面において、カーソル等によって現在選択されているカレントデータである(図16では、No.3の解答者Qが作成した解答データ)。また、ここでは中間生成プログラム自体をダウンロードしているが、その中間生成プログラムを復元可能なプログラム構成情報をダウンロードするようにしてもよい。具体例を挙げると、“i”と入力された状態のソースコードからなる中間生成プログラム、“in”と入力された状態のソースコードからなる中間生成プログラム、“int”と入力された状態のソースコードからなる中間生成プログラムをダウンロードすることもできるし、或いは、“i”と入力された状態のソースコード、“n”と入力された状態のソースコード、“t”と入力された状態のソースコードからなるプログラム構成情報をダウンロードすることもできる。このプログラム構成情報があれば、“i”と入力された状態のソースコードからなる中間生成プログラムも、“in”と入力された状態のソースコードからなる中間生成プログラムも、“int”と入力された状態のソースコードからなる中間生成プログラムも、復元することができる。例えば、“i”と入力された状態のソースコードと、“n”と入力された状態のソースコードとを組み合わせれば、“in”と入力された状態のソースコードからなる中間生成プログラムを復元することができる。要は、プログラム構成情報は、中間生成プログラムを復元可能な情報であれば、如何なる情報であってもよい。この趣旨に照らせば、中間生成プログラム自体も、プログラム構成情報となり得る。
The
以上説明したように、プログラミング能力診断装置としてのクライアント端末2Aにおいて被験者のプログラミング能力診断を行うにあたって、プログラミング課題に対する被験者の解答データを、通信ネットワーク100を介してサーバ1からクライアント端末2Aにダウンロードすることができる。
As described above, in performing the diagnosis of the subject's programming ability at the
次に、ダウンロードして取得した解答データ(テスト通過プログラムと中間生成プログラム)を用いて、クライアント端末2A上で行われるプログラミング能力診断について、具体的に説明する。
Next, the programming ability diagnosis performed on the
[プログラミング能力診断]
まず、課題出題者は、図16に示す画面の下方にハイパーリンクされた「再生観察アプリケーションのダウンロードはこちら」の文字641をクリックし、インストーラファイルをダウンロードし、自己のクライアント端末2Aにインストールする。具体的には、サーバ1のHDD17には、ソフトウェアプログラムの再生観察アプリ(図示せず)も格納されており、サーバ1のCPU11は、クライアント端末2Aのウェブブラウザアプリ272の要求に従って、再生観察アプリのインストーラファイルを送信する。クライアント端末2AのCPU21は、受信したインストーラファイルを実行し、その結果生成されたファイルをHDD27に格納する。これにより、クライアント端末2Aに再生観察アプリがインストールされる。なお、本実施形態では、再生観察アプリは、通信ネットワーク100を介してダウンロードされることとしたが、USBやDVDなどの記憶媒体を使ってクライアント端末2Aにインストールすることもできる。
[Programming ability diagnosis]
First, the challenger clicks on the
図17は、再生観察アプリがインストールされた後のクライアント端末2Aのソフトウェア的な機能を示す機能ブロック図である。本実施形態では、このクライアント端末2Aが、被験者のプログラミング能力を診断するプログラミング能力診断装置の一例となる。
FIG. 17 is a functional block diagram showing software functions of the
図17に示すように、クライアント端末2Aは、制御部20と、受付部24と、表示部25と、通信部26と、記憶部27とを有するとともに、再生部31と、可視化図生成部32と、タイミング解析部33と、検索部34と、コード重複率解析部35とを有している。受付部24、表示部25、通信部26、記憶部27は、それぞれ図3に示す受付部24、表示部25、通信部26、HDD27によってソフトウェア的に実現される。
As illustrated in FIG. 17, the
特に、記憶部27は、サーバ1からダウンロードした、複数の関数モジュールから構成されるテスト通過プログラムと、複数の中間生成プログラムを復元可能なプログラム構成情報とを記憶する機能を有する。再生部31は、プログラム構成情報により復元される複数の中間生成プログラムに基づいて、テスト通過プログラムの作成過程を再生する機能を有する。可視化図生成部32は、テスト通過プログラムに基づいて、一の関数モジュール若しくは複数の関数モジュール各々の処理手順又は一の関数モジュール若しくは複数の関数モジュール間の構造が可視化された図を生成する機能を有する。制御部20は、再生部31により再生されるテスト通過プログラムの作成過程と、可視化図生成部32により生成された図とを表示部25に表示させる機能を有する。
In particular, the
また、タイミング解析部33は、複数の中間生成プログラムに基づいて、一の関数モジュール又は複数の関数モジュール各々が生成されたタイミングを解析する機能を有する。検索部34は、一の関数モジュール又は複数の関数モジュール各々について、タイミング解析部33によって解析されたタイミングよりも前に、被験者による関数モジュールの記述があるか否かを、複数の中間生成プログラムを用いて検索する機能を有する。コード重複率解析部35は、一の関数モジュール内又は複数の関数モジュール間でコードの重複度合いを示すコード重複率を解析する機能を有する。
Further, the
また、制御部20は、タイミング解析部33の解析結果、検索部34の検索結果、コード重複率解析部35の解析結果を、表示部25に表示させる機能を有する。加えて、制御部20は、表示部25においてユーザの操作を受け付ける受付部24からの操作信号に基づいて、タイミング解析部33の解析結果、検索部34の検索結果、コード重複率解析部35の解析結果を、選択的に表示部25に表示させる機能(いわゆる選択切替表示機能)を有する。
The
再生部31と、可視化図生成部32と、タイミング解析部33と、検索部34と、コード重複率解析部35と、制御部20との各部の機能は、図3に示すCPU21、ROM22、RAM23、及び、記憶部27に格納される再生観察アプリのソフトウェア等により機能的に実現される。以下、図18〜図40に示す画面例に基づいて、本実施形態に係るプログラミング能力診断方法の詳細について説明する。
The functions of the
図18は、クライアント端末2Aにおいて再生観察アプリを起動したときに、表示部25に表示される起動画面の一例を示す図である。なお、図18に示す起動画面は、大きく横に3つの領域に分かれており、左欄には、画面モード1001、対象データファイル1002、CSV変換1003が表示され、中欄には、再生欄1004、出力欄1005が表示され、右欄には、経過時間1006、再生モード1007が表示されている。
FIG. 18 is a diagram illustrating an example of an activation screen displayed on the
画面モード1001は、テスト通過プログラムの作成過程を再生する「再生モード」と、可視化図生成部32により生成された図など、プログラミング作成過程を分析するための図を表示する「分析モード」とを切り替えるためのものであって、図18ではラジオボタンによって構成されている。プログラミング能力診断を行う者は、このラジオボタンのクリック位置を所望の位置にするだけで、再生モードと分析モードを切り替えることができる。
The
対象データファイル1002は、参照ボタン1002aによって指定された参照フォルダに存在するファイルであって、分析対象とするために、追加ボタン1002bによってファイル選択画面(図示せず)を表示させ、所望のファイルを追加することができる(追加した様子は後述する)。
The target data file 1002 is a file existing in the reference folder designated by the
CSV変換1003は、後述する各パラメータ推移で用いるデータを、EXCEL(登録商標)等の汎用ソフトウェアで分析できるようにCSV形式で出力する機能である。どのファイルのどのデータを出力するかは、設定ボタン1003bによってデータ選択画面(図示せず)を表示させ、所望のデータを設定し、変換ボタン1003cをクリックすることにより、参照ボタン1003aによって指定された参照フォルダへCSV変換されたCSVファイルを出力する。これにより、プログラミング能力診断を行う者は、例えばEXCEL(登録商標)等のCSVファイルを扱うことが可能なソフトウェアを用いて、所望の分析を行うことができる。
The
再生欄1004は、テスト通過プログラムの作成過程を再生するための欄であり、出力欄1005は、被験者によってコンパイルされた結果や自動単体テストが実行された結果を表示するための欄である(再生・表示している様子は後述する)。
The
経過時間1006は、被験者がテスト経過プログラムを作成する過程において実際に経過した時間であり、再生モード1007は、ラジオボタン1007aのクリック位置を切り替えることによって、実時間ベースでの再生と、操作ベースでの再生を切り替えることができるようになっている。すなわち、被験者がテスト経過プログラムを作成する過程において時間の経過に応じて再生する実時間ベースでの再生と、被験者がテスト経過プログラムを作成する過程において操作する回数に応じて再生する操作ベースでの再生とを切り替えることができるようになっている。
The elapsed
例えば、実時間ベースでの再生の場合には、1秒経過後、2秒経過後、3秒経過後の中間生成プログラムが、それぞれ再生欄1004に順次表示される。一方、操作ベースでの再生の場合には、1回目の操作後(例えばキーボードのiを押下した後)、2回目の操作後(例えばキーボードのnを押下した後)、3回目の操作後(例えばキーボードをtを押下した後)の中間生成プログラム(すなわち、“i”と入力された状態のソースコード→“in”と入力された状態のソースコード→“int”と入力された状態のソースコード)が、それぞれ再生欄1004に順次表示される。
For example, in the case of reproduction on a real time basis, intermediate generation programs after 1 second have elapsed, 2 seconds have elapsed, and 3 seconds have elapsed are sequentially displayed in the
速度調整バー1007bを操作することによって、再生欄1004で再生されるスピードを調節することができる。すなわち、速度調整バー1007bを「速い」の方(上方)へ移動させることで、いわゆる早送り再生が可能となり、速度調整バー1007bを「遅い」の方(下方)へ移動させることで、いわゆるスロー再生が可能となる。最も下方へ移動させた場合には、等速再生が可能になる。このように、速度調整バー1007bを移動させるだけで、所望の速度でテスト通過プログラムの作成過程を再生することができる。
By operating the
次に、プログラミング能力診断を行う者は、再生観察アプリを起動した後、図18に示す追加ボタン1002bをクリックして、ファイル選択画面(図示せず)を表示させ、参照ボタン1002aによって指定された参照フォルダ内に存在するファイルを選択することによって、分析対象となるデータファイルを追加する。このようにして、再生部31は、記憶部27に記憶されたテスト通過プログラム及び中間生成プログラムのうち、分析対象となるものを対象ファイルとして読み込む。
Next, the person who performs the programming ability diagnosis activates the playback observation application, and then clicks an
図19は、分析対象となるデータファイルが1個追加された様子を示す図である。図19では、「英単語カウント」のプログラミング課題に対してAさんが作成した対象ファイル(「英単語カウント_A」で示す)が追加されている。なお、Aさんが作成した対象ファイルを追加することで、削除ボタン1002dが有効化されている。
FIG. 19 is a diagram illustrating a state in which one data file to be analyzed is added. In FIG. 19, an object file (indicated by “English word count_A”) created by Mr. A is added to the “English word count” programming task. Note that the
また、追加ボタン1002bの下方には、「自動追加」機能を有効化するか否かのチェックボックス1002cが設けられており、このチェックボックス1002cにチェックを入れることにより、再生観察アプリを起動した際、自動的に、参照ボタン1002aによって指定された参照フォルダに存在するファイルが対象ファイルとして読み込まれる。また、対象ファイルとして自動追加するファイル数は所望の数に制限することができる。図19では、チェックボックス1002cの右側に示すように、1個までに制限されている。
Also, below the
次に、プログラミング能力診断を行う者は、図19の右上に示す経過時間1006の下に配置された再生ボタン1006aをクリックする。そうすると、テスト通過プログラムの作成過程の再生が開始される。
Next, the person who performs the programming ability diagnosis clicks the
図20は、テスト通過プログラムの作成過程が再生されている様子を示す図である。なお、図20では、再生ボタン1006aの右側に配置された一時停止ボタン1006bをクリックした状態になっている。また、一時停止ボタン1006bの右側に配置された停止ボタン1006cをクリックすると、再生欄1004はクリアされる。
FIG. 20 is a diagram showing a state in which the process of creating a test passing program is reproduced. In FIG. 20, the
図20に示すように、再生欄1004には、12行のソースコードが記述されており、これは、経過時間1006を見ると、プログラミング課題に対する解答を開始してから1分47秒後のソースコードであることが分かる。つまり、被験者は、1分47秒の間に12行のソースコードを記述したことが分かる。また、経過時間1006の下方には、操作回数1008aとして180回、文字数1008bとして206文字(コピー&ペースト等を考慮すれば、操作回数よりも文字数の方が多くなる場合はある)、行数として16行(ここでは空欄行もカウントされている)、課題確認時間1008dとして18秒(課題確認時間については図22を用いて後述する)、ビルド回数1008eとして0回、実行回数1008fとして0回、自動テスト回数1008gとして0回が表示されている。
As shown in FIG. 20, in the
ビルド回数1008eは、上述した被験者がテスト通過プログラムを作成する過程で、図12に示すビルドボタン903をクリックした回数を示し、実行回数1008fは、被験者がテスト通過プログラムを作成する過程で、図12に示す実行ボタン904をクリックした回数を示し、自動テスト回数1008gは、被験者がテスト通過プログラムを作成する過程で、図12に示すテストボタン905をクリックした回数を示している。
The
なお、自動テスト回数1008gの下に表示されたサムネイルグラフ1009は、画面モード1001において分析モードを選択したときに表示されるグラフ(詳細は後述する)のサムネイルである。特に、操作回数又は再生時間を横軸にもつサムネイルグラフ1009の中には、重なるようにして、サムネイル用再生位置バー1009aが表示されており、全体のうちどの程度まで再生が済んだかが分かるようになっている。
A
また、図20の下方には、再生位置バー1010が表示されており、全体のうちどの程度まで再生が済んだかが表示されるようになっている。プログラミング能力診断を行う者は、この再生位置バー1010をクリックして、左右に移動させることによって、所望の操作回数(実時間ベースでの再生の場合には所望の経過時間)における中間生成プログラム(ソースコード)を視認することができる。
In addition, a
ここで、再生位置バー1010とサムネイル用再生位置バー1009aは連動表示される。すなわち、再生位置バー1010を左右に移動させると、それに追随してサムネイル用再生位置バー1009aも移動する。このように、テスト通過プログラムの作成過程を再生するときに、操作回数(操作ベースでの再生のとき)又は再生時間(実時間ベースでの再生のとき)の経過状況を示す再生位置バー1010と、プログラミング作成過程を分析するための複数のパラメータ(詳細は後述)を表示するサムネイルグラフ1009に重なるようにして配置され、操作回数又は再生時間の経過状況を示すサムネイル用再生位置バー1009aとを、制御部20によって表示部25に連動表示させている。これにより、サムネイルグラフ1009中のパラメータを視認しながら再生位置バー1010を移動させ、再生欄1004に、所望の中間生成プログラムを迅速に表示させることができる。
Here, the
例えば、サムネイルグラフ1009中に、操作回数のパラメータが急激に増加していた箇所があった場合、プログラミング能力診断を行う者は、被験者がどのような操作を行ったか知りたいことがある。このような場合には、サムネイル用再生位置バー1009aがサムネイルグラフ1009上でその箇所にくるように、再生位置バー1010を移動させればよい。これにより、サムネイルグラフ1009上で操作回数のパラメータが急激に増加していたところで、被験者がどのような操作を行っていたかを迅速に把握することができる。なお、サムネイルグラフ1009上にどのようなパラメータを表示させるかは、グラフ設定1009bをクリックして、パラメータ選択画面(図示せず)を表示させ、所望のパラメータを選択すればよい。なお、ここでは再生位置バー1010のみを移動操作可能としているが、例えば、サムネイル用再生位置バー1009aのみ、或いは、再生位置バー1010及びサムネイル用再生位置バー1009aの双方を、移動操作可能としてもよい。
For example, if there is a location in the
図21は、被験者によってビルドが1回行われている様子を示す図である。図21では、クライアント端末2Bの表示部25において、図12に示す出力エリア902に表示された内容が、クライアント端末2Aの表示部25において、図21に示す出力欄1005にも表示されている。なお、ビルドが1回行われたことに伴って、ビルド回数1008eが1だけインクリメントされている。
FIG. 21 is a diagram illustrating a state in which a build is performed once by a subject. 21, the contents displayed in the
図22は、再生欄1004に、プログラミング課題が表示されている様子を示す図である。具体的には、図22によれば、被験者のAさんは、経過時間1006が2分7秒の時点で、プログラミング課題を見ていたことになる。ということは、実際にAさんがクライアント端末2Bにおいてプログラミングをしている最中に、2分7秒経過した時点で、図13に示すようにプログラミング課題を見ていたことが分かる。そして、プログラミング課題を見ていた時間は、上述した課題確認時間1008dとして計測されている。このように、本実施形態に係るプログラミング能力診断装置としてのクライアント端末2Aは、複数の中間生成プログラムに基づいて、被験者がテスト通過プログラムの作成過程でプログラミング課題を視認していた時間を、課題確認時間として計測する計測機能を有している。
FIG. 22 is a diagram illustrating a state in which a programming task is displayed in the
図23は、図21と比べて更に多くの時間が経過したときの様子を示す図である。経過時間1006は30分27秒を示しており、操作回数1008aは1018回を示している。また、再生位置バー1010は、図21よりも右に移動している。また、ビルド回数1008e及び出力欄1005に示されているように、ビルドは3回行われている。
FIG. 23 is a diagram illustrating a state when more time has elapsed than in FIG. The elapsed
特に、図23では、図21と異なり、再生欄1004にスクロールバー1004aが現れている。中間生成プログラムの行数が増えてくると、自動的にスクロールバー1004aが表示される。プログラミング能力診断を行う者は、スクロールバー1004aを上下に移動させることによって、再生欄1004に、中間生成プログラムの所望箇所を表示させることができる。
In particular, in FIG. 23, unlike FIG. 21, a scroll bar 1004a appears in the
図24は、最後に生成された中間生成プログラムが表示されている様子を示す図である。図24に示すように、再生位置バー1010は最も右の位置にきており、経過時間1006は1時間27分39秒、操作回数1008aは2717回、文字数1008bは2126文字、行数は122行、課題確認時間1008dは1173秒、ビルド回数1008eは35回、実行回数16回、自動テスト回数は0回となっている。また、操作回数1008aの2717回は、サムネイルグラフ1009の横軸右端の数値2717と一致している。
FIG. 24 is a diagram illustrating a state where the last generated intermediate generation program is displayed. As shown in FIG. 24, the
図18〜図24は、再生モード1007のうち、操作ベースでの再生について説明した。上述したように、再生モード1007におけるラジオボタン1007aのクリック位置を切り替えることによって、実時間ベースでの再生と、操作ベースでの再生を切り替えることができる。図25は、実時間ベースでの再生について説明するための図である。図25では、図24と同様に、最後に生成された中間生成プログラムが表示されている様子を示しており、経過時間1006が示す1時間27分39秒(=5259秒)と、サムネイルグラフ1009の横軸右端が示す数値5259とが一致している。
18 to 24, the operation-based reproduction in the
以上が画面モード1001のうち再生観察モードについての説明である。次に、画面モード1001のうち分析モードについて説明する。図26は、プログラミング作成過程を分析するための図を表示する分析モードのうち、各パラメータ推移の様子を示す図である。図26では、左欄の画面モード1001において、ラジオボタンのクリック位置が分析モードになっている。
The above is the description of the playback observation mode in the
図26の中央には、プログラミング作成過程を分析するための図が表示される分析欄1011が設けられている。この分析欄1011には、右欄におけるパラメータ設定1014の設定内容(チェックボックスのチェック状態)が反映される(なお、縦軸のスケールの関係で、又は、線の濃さの関係で、一部の線が見え難くなっている)。図26の右欄には、上から順に、グラフ個数1012、表示内容1013、パラメータ設定1014が表示されている。グラフ個数1012は、1011を分割表示するためのものであるが、図26では縦1×横1に設定され、分割されていない(分割されている様子については後述する)。
In the center of FIG. 26, there is provided an
表示内容1013では、ラジオボタンによって、各パラメータ推移、関数ライフサイクル、フローチャート、コードの重複を選択することができるようになっている。図26では、各パラメータ推移が選択されている。各パラメータ推移で用いるパラメータ設定1014では、正規化1015、横軸値1016、基本項目1017、オプション1018を設定することができるようになっている。正規化1015と横軸値1016の詳細については後述する(後述する図30及び図31と、図35参照)。
In the
基本項目1017としては、操作回数、総文字数、総行数、実コード文字数、実コード行数(空欄行を除いた実際のコード行数)、実コード語数(スペース文字を除いた実際のコード語数)、コメント文字数、コメント行数、課題確認時間、課題確認回数、ビルド回数、実行回数、自動テスト(自動単体テスト)回数、ビルドエラー数、ビルドワーニング(警告)数、自動テストエラー数といった各々のパラメータを、分析欄1011に表示させるか否かをチェックボックスにより選択できるようになっている。これらのパラメータは、特にこれらに限定されるものではなく、必要に応じて増やしたり減らしたりすることができる。
As
また、ビルド回数、実行回数、自動テスト回数については、いずれも回数自体が少なく操作回数等と同じグラフに表示させると見えにくくなるため、別途オプション1018として、ビルドタイミング、実行タイミング、自動テストタイミングを、基本項目1017のパラメータが示すグラフ中に四角印で表示させるようにしている。例えば、分析欄1011中、四角印1018aは、ビルドタイミングを示し、四角印1018bは、実行タイミングを示している。このように、基本項目1017のパラメータ推移が表示されたグラフ中に、ビルドタイミングや実行タイミングを四角印で表示させることによって、ビルドタイミングや実行タイミングを視認しやすくなる。
Also, regarding the number of builds, the number of executions, and the number of automatic tests, the number of times itself is small and difficult to see if displayed on the same graph as the number of operations, etc. The square item is displayed in the graph indicated by the parameter of the
例えば、ビルドや実行をあまりに早いタイミングで繰り返す被験者は、頭の中で見通しが立てられないので試行錯誤している可能性がある。したがって、早い段階でビルドタイミングや実行タイミングを繰り返す被験者よりも、遅い段階でビルドタイミングや実行タイミングを繰り返す被験者の方が、プログラミング能力が優れていると考えられる。また、ビルドタイミングや実行タイミングの回数に着目すれば、回数の多い被験者よりも回数の少ない被験者の方が、プログラミング能力が優れていると考えられる。後者の方が、しっかり考えながらプログラミングを行っていると思われるからである。 For example, a subject who repeats builds and executions too early may not be able to see in his head, and may be trial and error. Therefore, it is considered that the subject who repeats the build timing and execution timing at a later stage has better programming ability than the subject who repeats the build timing and execution timing at an earlier stage. If attention is paid to the number of times of the build timing and the execution timing, it is considered that the subject having a smaller number of times has better programming ability than the subject having a larger number of times. This is because the latter seems to be programming while thinking firmly.
図27は、プログラミング作成過程を分析するための図を表示する分析モードのうち、関数ライフサイクルを示す図である。図27の右欄に示すように、表示内容1013のラジオボタンのクリック位置は、関数ライフサイクルの位置にある。なお、関数ライフサイクルとは、ソースコード中に関数モジュールの各々が生成され消去されるまでの、関数の生存期間を示すものであり(一般的には、プログラミング課題の題意把握ミスなどがない限り、関数モジュールは最後まで消去されることはない)、上述のとおりタイミング解析部33の解析結果に基づいて自動的に作図される。また、関数とは、引数と呼ばれるデータ(入力データ)を受け取って、予め規定された処理を実行して結果を返す命令群を意味し、一般的に、プログラムの構成要素となる。本実施形態では、入力データとして数字を扱うこととしているが、例えば、入力データとして文字が入力され、処理結果としてその文字が画面に表示されるような関数を考えることもできる。なお、横軸は、操作回数を示す(横軸値1016のラジオボタンのクリック位置は、操作回数の位置にある)。
FIG. 27 is a diagram illustrating a function life cycle in an analysis mode for displaying a diagram for analyzing a programming creation process. As shown in the right column of FIG. 27, the click position of the radio button of the
図27に示す関数ライフサイクルによれば、Aさんは、プログラム中に、“IsWordEnd”1021、“IsSmallAlpha”1022、“IsBigAlpha”1023、“IsAlNum”1024、“CountWord”1025、“main”1026の合計6個の関数モジュールを作っていることが分かる。特に、一番下の“main”1026は、プログラムの骨格となる基本関数(一般に、各サブルーチンを呼び出す基本関数)であり、これが早いタイミングでプログラム中に作られている。したがって、Aさんは、最初にmain関数という基本構造を作り、その後、main関数の中で個々の関数モジュールをサブルーチン化したプログラムを作っていることが分かる。 According to the function life cycle shown in FIG. 27, Mr. A is the total of “IsWordEnd” 1021, “IsSmallAlpha” 1022, “IsBigAlpha” 1023, “IsAlNum” 1024, “CountWord” 1025, and “main” 1026 in the program. It turns out that 6 function modules are made. In particular, “main” 1026 at the bottom is a basic function (generally, a basic function that calls each subroutine) serving as a skeleton of the program, and is created in the program at an early timing. Accordingly, it can be seen that Mr. A first creates a basic structure called a main function, and then creates a program in which individual function modules are converted into subroutines within the main function.
また、図27に示す関数ライフサイクルによれば、全ての関数モジュールが、操作回数で半分よりも手前のタイミング(図27でいえば左半分のタイミング)で作られている。関数モジュールは、いわばプログラムの部品であるため、Aさんは、プログラムにどのような部品が必要になるかを早いタイミングで見通せている、すなわち構成を見通す力を有していることが分かる。 In addition, according to the function life cycle shown in FIG. 27, all function modules are created at the timing before the half of the number of operations (the timing of the left half in FIG. 27). Since the function module is a part of the program, it can be seen that Mr. A can see at an early timing what kind of part is necessary for the program, that is, has the power to see the configuration.
ここで、図27に示す関数ライフサイクルの作図は、予め規定された定義に基づいて、その定義に当てはまる記述を関数として認識すればよい。代表的な方法が、コンパイラ等による構文解析である。ここではC言語を用いて記述されたソースコードの構文解析について説明する。C言語における関数は、「“関数型指定子”+“関数名”+“(”+“引数”+“)”+“{”+“関数本文”+“}”」で定義することができる。ここでいう関数型指定子は、“int”や“void”などである。可視化図生成部32やタイミング解析部33が関数モジュールを認識するときには、このような定義に当てはまる記述を検索し、見つかった場合にはその記述を関数として認識する。一部でも、この定義に当てはまらない記述については、関数として認識しない。本実施形態では、全ての中間生成プログラムに対して構文解析を試みている。そのため、上述した6個の関数モジュールの各々において、構文解析が成功した中間生成プログラムのうち、最も操作回数の少ない中間生成プログラムが生成されたタイミングが、その関数モジュールの生成タイミングとして認識される。例えば、“IsWordEnd”1021についていえば、タイミング1021aで生成された中間生成プログラムで構文解析が成功し、ソースコード中に関数モジュール“IsWordEnd”1021が存在することが認識されている。以下同様に、“IsSmallAlpha”1022、“IsBigAlpha”1023、“IsAlNum”1024、“CountWord”1025、“main”1026のそれぞれについて、タイミング1022a、1023a、1024a、1025a、1026aで生成された中間生成プログラムにおいて構文解析が成功し、ソースコード中に関数モジュール“IsSmallAlpha”1022、“IsBigAlpha”1023、“IsAlNum”1024、“CountWord”1025、“main”1026が存在することが認識されている。
Here, in the function life cycle drawing shown in FIG. 27, a description applicable to a definition may be recognized as a function based on a definition defined in advance. A typical method is syntax analysis by a compiler or the like. Here, the syntax analysis of the source code described using the C language will be described. A function in the C language can be defined by ““ function type specifier ”+“ function name ”+“ (”+“ argument ”+“) ”+“ {”+“ function body ”+“} ””. . The function type specifiers here are “int”, “void”, and the like. When the visualization
このように、タイミング解析部33の解析結果に基づけば、ソースコード中に関数モジュールがどのタイミングで生成されたかを認識することができる。しかしながら、ここでいうタイミングとは、あくまでタイミング解析部33による“解析が成功した”タイミングを意味し、実際にAさんが関数モジュールの必要性に気づき、ソースコード中に関数モジュールを“記述した”タイミングを意味するものではない。
Thus, based on the analysis result of the
そこで、本実施形態では、検索部34により、プログラム中で被験者が関数モジュールを記述し始めたタイミングを検索するようにしている。具体的には、タイミング解析部33によって解析されたタイミングよりも前に、被験者による関数モジュールの記述があるか否かを、複数の中間生成プログラムを用いて検索するようにしている。図27でいえば、“IsWordEnd”1021のタイミング1021aの左側にヒゲ1021bが突き出している。これは、検索部34の検索結果により、タイミング1021aよりも前のタイミングで、被験者による関数モジュールの記述があったことを示している。このように、被験者が関数モジュールを記述した直後のタイミングを知ることによって、被験者が関数モジュールの必要性に気づいた時期など、被験者の思考過程を把握することができ、ひいてはプログラミング能力診断に役立てることができる。なお、図27では、被験者が作成したプログラムは複数の関数モジュールから構成されているが、一の関数モジュールから構成される場合もある。
Therefore, in the present embodiment, the
図28は、プログラミング作成過程を分析するための図を表示する分析モードのうち、フローチャートを示す図である。右欄の表示内容1013のラジオボタンのクリック位置は、フローチャートの位置になっている。このフローチャートは、可視化図生成部32によって、テスト通過プログラムに基づいて、複数の関数モジュール各々の処理手順が可視化された図を示す。
FIG. 28 is a diagram showing a flowchart in the analysis mode for displaying a diagram for analyzing the programming creation process. The click position of the radio button of the
図28によれば、図27を用いて上述したように、Aさんが作成したプログラムには、“IsWordEnd”1021、“IsSmallAlpha”1022、“IsBigAlpha”1023、“IsAlNum”1024、“CountWord”1025、“main”1026の合計6個の関数モジュールが作られていることが分かる。また、最も右側の“main”1026の処理手順内には、3個のサブルーチン1026bが組み込まれていることが分かる。同様に、“IsWordEnd”1021や“CountWord”1025にも、一又は複数のサブルーチンが組み込まれている。このように、図28に示すフローチャートを確認すれば、被験者が関数モジュールをサブルーチン化している様子を一見して把握することができる。
According to FIG. 28, as described above with reference to FIG. 27, the program created by Mr. A includes “IsWordEnd” 1021, “IsSmallAlpha” 1022, “IsBigAlpha” 1023, “IsAlNum” 1024, “CountWord” 1025, It can be seen that a total of six function modules of “main” 1026 are created. Further, it can be seen that three
また、図28によれば、最も左側の“CountWord”1025の処理手順内には、入れ子状態の処理手順1025bが組み込まれていることが分かる。同様に、“IsAlNum”1024の処理手順内にも、入れ子状態の処理手順1024bが組み込まれている。ただ、入れ子状態の処理手順1025bは、入れ子状態の処理手順1024bと比べても分かるように、分岐やループを多用されており、複雑なアルゴリズムになっている。したがって、分岐やループが少なくてシンプルなアルゴリズムを実現できているか、という診断基準においては、Aさんは良い評価にならないことになる。なお、シンプルなアルゴリズムかどうかは、Aさんの処理手順だけを見ても分からないことが多い。そのため、複数の被験者の処理手順を見比べ(後述する図33等参照)、相対的な評価(どちらのアルゴリズムがシンプルか)をすることによって、より的確な能力診断を行うことができる。
Further, according to FIG. 28, it can be seen that the
なお、本実施形態では、複数の関数モジュール各々の処理手順が可視化された図として、フローチャートを考えたが、本発明はこれに限られず、記号の近くに説明を入れたHCPチャートなど、プログラムの目的を階層構造で表現した設計図を用いることも可能である。また、可視化図生成部32は、複数の関数モジュール各々の処理手順が可視化された図ではなく、複数の関数モジュール間の構造が可視化された図を生成するようにしてもよい。例えば、クラス図など、システムの構造を記述する構造図や、DFD(データフローダイアグラム)など、関数と関数との間のデータの流れを示す図である。また、複数の関数モジュール各々の処理手順と、複数の関数モジュール間の構造との両方を可視化するような図を生成してもよい。さらに、図28では、複数の関数モジュールが示されているが、一の関数モジュールが示される場合もある。この場合、一の関数モジュールの処理手順が可視化された図や、一の関数モジュールの構造が可視化された図が生成されることになる。
In the present embodiment, the flowchart is considered as a diagram in which the processing procedure of each of the plurality of function modules is visualized. However, the present invention is not limited to this, and the program such as an HCP chart including an explanation near the symbol is used. It is also possible to use a design drawing that expresses the purpose in a hierarchical structure. Further, the visualization
図29は、プログラミング作成過程を分析するための図を表示する分析モードのうち、コードの重複を示す図である。右欄の表示内容1013のラジオボタンのクリック位置は、コードの重複の位置になっている。コードの重複率は、複数の関数モジュール間でコードの重複度合いを示すものであり、コード重複率解析部35によって解析される。コード重複率の低いプログラムを作成した被験者は、無駄が少なく効率的なプログラム構造を構築できる力が優れていることになる。
FIG. 29 is a diagram showing code duplication in an analysis mode for displaying a diagram for analyzing a programming creation process. The click position of the radio button of the
図29に示すコード重複率1030は、0%になっており、全く重複していない。すなわち、ソースコードを記述する際、例えばコピー&ペースト等を全く使用していないことが推測される(図34を用いて後述する例では、コード重複率が50%近くになっている)。したがって、Aさんは、無駄が少なく効率的なプログラム構造を構築できているか、という意味においては、優れたプログラマであることが分かる。また、コード重複率が低いと、仕様変更が発生した場合であっても変更箇所が少なくなるので、この意味において、Aさんのプログラムはメンテナンス性に優れているといえる。なお、コード重複率を解析する技術としては、如何なる技術を採用しても構わない。例えば、主にソースコードのコピー&ペーストを行うことにより生成される、ソースコード中の重複したコード列を検索することにより、コード重複率を解析することができる。具体的には、ソースコード(テスト通過プログラム)を、プログラミング言語の字句規則に従ってトークンに分割するとともに、型や変数、定数に属するトークンは、同一のトークンに置き換える。この置き換えによって、例えば変数名だけが異なるコード列の組を、重複したコード列として検出できるようになる。なお、図29では、複数の関数モジュール間でコードの重複度合いが示されているが、一の関数モジュール内のコードの重複度合いが示されるようにしてもよい。
The
以上、図26〜図29を用いて説明したように、ユーザは、受付部24を通じて、表示内容1013のラジオボタンのクリック位置を変更するだけで、表示部25に各図を選択的に表示させることができる。したがって、プログラムの構造を構築する能力を、様々な視点から簡易かつ迅速に診断することができる。
As described above with reference to FIGS. 26 to 29, the user can selectively display each figure on the
図30は、二人の被験者の各パラメータ推移を比較している様子を示す図である。図30において、上側は、上述したAさんのパラメータ推移1031aを示しており、下側は、新たに追加したBさん(左欄の対象データファイル1002参照)のパラメータ推移1031bを示している。このような比較表示は、右欄のグラフ個数1012において、縦2個×横1個と調整することによって実現することができる。なお、図30は、右欄のグラフ個数1012において、縦2個×横1個と調整した例であるが、縦1個×横2個と調整することによって、横に2個のグラフを並べることも可能である。
FIG. 30 is a diagram illustrating a state in which parameter transitions of two subjects are compared. In FIG. 30, the upper part shows the
ここで、図30では、比較を容易にするために、パラメータ設定1014の正規化1015の機能を使用している。具体的には、正規化1015のチェックボックスにおいて横軸の欄にチェックを入れている。これにより、Aさんのパラメータ推移1031aの横軸右端1031cの値が100になるとともに、Bさんのパラメータ推移1031bの横軸右端1031dの値も100になり、正規化される。なお、図31は、図30と異なり、横軸だけでなく縦軸も正規化されている例を示す。具体的には、Aさんのパラメータ推移1031aの縦軸上端1031eの値が100になるとともに、Bさんのパラメータ推移1031bの縦軸上端1031fの値が100になっている。
Here, in FIG. 30, the function of the
このように、本実施形態に係るプログラミング能力診断装置(クライアント端末2A)は、プログラミング作成過程を分析するための図において横軸又は縦軸を正規化する機能を有している。この正規化機能によって、相対的な比較をし易くすることができる。特に、グラフ各軸の“絶対値”よりも、“グラフ形状”を見たいときに便利である。例えば、文字数の推移を見るときに、「何文字書いたか、何分で書いたか」を視覚化したいときには、正規化機能を使わないグラフの方が便利である一方、「前半と後半とで、どちらが文字数の伸びが激しいか」を視覚化したいときには、正規化機能を使ったグラフの方が便利である。
As described above, the programming capability diagnosis apparatus (
図32は、二人の被験者の関数ライフサイクルを比較している様子を示す図である。図32の下側に示す、Bさんの関数ライフサイクルにおいて、“CheckWord”1032のタイミング1032aの左側にヒゲ1032bが突き出している。これは、上述したように、検索部34の検索結果により、タイミング1032aよりも前のタイミングで、被験者による関数モジュール“CheckWord”1032の記述があったことを示している。図32において、Aさんの関数ライフサイクル(上側)と、Bさんの関数ライフサイクル(下側)とを比較すると、プログラムに必要な関数モジュールが早いタイミングで全て揃っているAさんの方が、プログラムの構造を見通す力が高いといえる。一方、関数モジュールの個数自体が少ないBさんの方が(Aさんは6個、Bさんは3個)、アルゴリズムをシンプル化する力が高いといえる。プログラミング能力を診断する者は、図32に示す関数ライフサイクルのみで評価を決定する必要はなく、フローチャートやコードの重複などを参照しつつ、総合的な評価を下すようにすればよい。また、シンプルなアルゴリズムを構築するプログラマが欲しい場合には、Bさんを高評価にすればよいし、プログラム構造を見通す力の高いプログラマが欲しい場合には、Aさんを高評価にすればよい。
FIG. 32 is a diagram illustrating a state in which the function life cycles of two subjects are compared. In the function life cycle of Mr. B shown at the lower side of FIG. 32, a
図33及び図34は、それぞれ三人の被験者のフローチャート及びコード重複を比較している様子を示す図である。図33に示すように、三人の被験者のフローチャートを縦に並べて表示させると、アルゴリズムが相対的にどの程度シンプルであるかを一見して把握することができる。関数モジュールが3個のBさん、関数モジュールが4個のDさんと比べて、関数モジュールが9個のEさんのフローチャートは、非常に複雑である。このように複雑なフローチャートになる原因の一つとしては、ソースコードを記述する際にコピー&ペーストを多用している可能性がある。そこで、Bさん、Dさん、Eさんのコード重複を比較すると、図34に示すように、それぞれ0%、0%、48%となっている。つまり、Eさんは、半分近くをコピー&ペーストしている可能性があることが分かる。あとは、各パラメータ推移を示すグラフにおいて、総文字数の推移を確認し、急激に文字数が増加している箇所などが発見されれば、コピー&ペーストをしている可能性が高まる。 FIG. 33 and FIG. 34 are diagrams showing a comparison of flowcharts and code duplications of three subjects, respectively. As shown in FIG. 33, when the flowcharts of three subjects are displayed side by side, it is possible to grasp at a glance how much the algorithm is relatively simple. The flowchart of Mr. E with nine function modules is much more complicated than Mr. B with three function modules and Mr. D with four function modules. One of the causes of such a complicated flowchart is that copy and paste is frequently used when describing source code. Therefore, when the code duplications of Mr. B, Mr. D, and Mr. E are compared, they are 0%, 0% and 48%, respectively, as shown in FIG. In other words, it can be seen that Mr. E may have copied and pasted nearly half of it. After that, in the graph showing each parameter transition, if the transition of the total number of characters is confirmed and a portion where the number of characters is rapidly increased is found, the possibility of copying and pasting increases.
図35は、図26と異なり、パラメータ設定1014における横軸値1016のラジオボタンのクリック位置を、操作回数から時間に代えている様子を示す図である。すなわち、図35では、図26と異なり経過時間を横軸にとっており(横軸右端の値が経過時間5259秒となっている)、時間経過に対する各パラメータ推移を一見して把握することができる。これにより、例えば操作回数1041に着目したとき、ソースコードを記述する際に何も操作をしていない時間帯(例えば区間1041a)がどれくらいあるか、といったことを把握することができる。
FIG. 35 is a diagram showing a state where the click position of the radio button of the
図36は、被験者が何も操作していない時間帯(待ち)が所定時間発生したときに、キャラクターの表情を変える表情モード設定画面1051の一例である。図36に示す表示モード設定画面1051は、経過時間1006の右側に配置されたキャラクターボタン1006dをクリックすることによって、ポップアップウィンドウとして中央に現れる。表情モード設定画面1051によれば、0.5秒以内で連続操作されているときには、キャラクターの表情が好調の表情になり、待ち時間が10秒発生した場合には、キャラクターの表情が悩みの表情になり、待ち時間が30秒発生した場合には、キャラクターの表情が睡眠の表情になる。このように、本実施形態に係るプログラミング能力診断装置(クライアント端末2A)は、受付部24を通じた被験者の操作間隔に基づいて、表示部25に表示されるキャラクターの表情を変更する機能を有する。
FIG. 36 shows an example of a facial expression
以上、図17〜図36を用いて説明したように、クライアント端末2Aで行われるプログラミング能力診断によれば、プログラミング課題に対する解決能力、特にプログラムの構造を構築する能力を簡易かつ迅速に診断することができるとともに、プログラミング課題の内容を勘違いして作成されたことによるプログラムの誤評価を防ぐことができる。
As described above with reference to FIGS. 17 to 36, according to the programming ability diagnosis performed at the
ただし、これらは定性的な診断の側面が強いため、プログラミング能力診断を行う者によって診断結果にバラツキが生じる可能性がある。ある程度のバラツキは許容するにしても、誰が診断を行う場合も同じ結果が出るような、何らかの客観的な指標があることが好ましい。例えば、読みやすさを追求してコメントが多く書かれたソースコードが、必ずしも品質の悪いソースコードとは限らない。かといって、一課題に対し、あまりに多くの時間が掛かったのでは生産性の観点から好ましいとはいえない。そこで、以下、被験者のプログラミング能力を定量的な評価について説明する。 However, since these have strong qualitative aspects, there is a possibility that the diagnosis results vary depending on the person who performs the programming ability diagnosis. Even if a certain degree of variation is allowed, it is preferable that there is some objective index that gives the same result when anyone makes a diagnosis. For example, a source code in which many comments are written in pursuit of readability is not necessarily a poor quality source code. However, it is not preferable from the viewpoint of productivity if it takes too much time for one problem. Therefore, a quantitative evaluation of the subject's programming ability will be described below.
[定量的なスキル評価]
本実施形態では、被験者のプログラミング能力を定量的に評価するために、生産性・品質評価アプリ174(図2参照)を用いる。すなわち、CPU11は、生産性・品質評価アプリ174を実行するとともに、解答DB180から上述したログデータやタイミングを読み出して、定量的なスキル評価を行う。
[Quantitative skill evaluation]
In the present embodiment, the productivity / quality evaluation application 174 (see FIG. 2) is used to quantitatively evaluate the programming ability of the subject. That is, the
サーバ1の解答DB180には、ソースコードの時系列の推移情報となる基本情報と、被験者が文法エラーチェックを行った時刻、発生した文法エラーの種類、発生した文法エラーの数、被験者が論理エラーチェックを行った時刻、発生した論理エラーの種類、発生した論理エラーの数等の補正情報とが記憶される。なお、図15を用いて上述したように、ビルドボタン903やテストボタン905をクリックした時刻、その結果、出力された文法エラーの種類や数などが記憶される。
The
図37は、解答DB180に記憶されるデータ構成の例示図である。図37(a)は、入力情報テーブルのデータ構成の例示図である。基本情報であるソースコードの時系列の推移情報は、被験者のプログラミング作業における特定のタイミングにてソースコードが復元可能なフォーマットで記憶される。復元可能であればフォーマットは特に問わない。例えば図37(a)では、入力されたテキストデータ等を一文字ずつ入力時刻及び削除時刻とともに記憶している。入力情報テーブルを先頭から解析することにより、任意のタイミングでのソースコードを復元することができる。入力情報には、テキストデータだけではなく、改行、タブ、スペース、各種制御コード等を含めてもよい。また別の記憶方法として、一文字ずつの入力時刻と、各入力時刻における全ソースコードとを対応付けて記憶してもよい。この場合、データ容量は比較的大きくなるものの、任意のタイミングにおけるソースコードの復元アルゴリズムは単純となる。
FIG. 37 is a view showing an example of the data structure stored in the
いずれの方法であっても、文字が入力されたタイミング毎に推移情報を記憶しているので、被験者のプログラミング作業における任意のタイミングでのソースコードを復元することができる。実際には必ずしも全てのタイミングでソースコードを復元する必要はないが、後述する複雑度の時系列推移データからの近似曲線の算出において、所定の精度を維持することが可能な程度のサンプリング数は必要となる。例えば、予め定めたキー入力の数の単位、リターンキーを操作したタイミング又は予め定めた特定の文字が入力されたタイミング等、予め定めた条件に合致した所定のタイミングにて中間生成プログラムとしてのソースコードを取得するようにしてもよい。 In any method, since the transition information is stored for each timing when the character is input, the source code at any timing in the programming work of the subject can be restored. Actually, it is not always necessary to restore the source code at all timings, but in the calculation of the approximate curve from the time series transition data of complexity described later, the number of samplings that can maintain the predetermined accuracy is Necessary. For example, a source as an intermediate generation program at a predetermined timing that matches a predetermined condition such as a unit of a predetermined number of key inputs, a timing at which a return key is operated, or a timing at which a predetermined character is input. You may make it acquire a code.
図37(b)は、文法エラーテーブルのデータ構成の例示図であり、図37(c)は、論理エラーテーブルのデータ構成の例示図である。補正情報である文法エラーチェックに関する情報、論理エラーチェックに関わる情報は、例えば図37(b)、(c)に示すように、それぞれ文法エラーテーブル、論理エラーテーブルに記憶される。文法エラーの種類又は論理エラーの種類に対応付けて文法チェック実行時刻又は論理チェック実行時刻も記憶している。別途カウンタを用いて、文法エラー、論理エラーそれぞれの発生個数の累計値をカウントすることもできる。これらの各種テーブルは、解答DB180に格納することができる。なお、上述したように、文法エラーチェックの実行時刻は、ビルドボタン903又は実行ボタン904(図15)がクリックされたタイミングを認識することで記憶可能であるし、また、論理エラーチェックの実行時刻は、テストボタン905(図15)がクリックされたタイミングを認識することで記憶可能である。
FIG. 37B is an exemplary diagram of the data configuration of the grammatical error table, and FIG. 37C is an exemplary diagram of the data configuration of the logical error table. Information related to the grammatical error check, which is correction information, and information related to the logical error check are stored in a grammatical error table and a logical error table, respectively, as shown in FIGS. 37B and 37C, for example. A grammar check execution time or a logic check execution time is also stored in association with a grammatical error type or a logical error type. A separate counter can be used to count the total number of occurrences of grammatical errors and logic errors. These various tables can be stored in the
サーバ1のCPU11は、ソースコードの時系列の推移情報に基づいて、複雑度の推移を時系列に演算した複雑度推移データを算出する。ここで「複雑度」とは、単に分岐が多い、階層が多い等の構造的複雑さを示す概念のみならず、ソースコード全体として無駄な論理構造、無駄なサブルーチン等を含むか否か等の評価も含む構造化されたソースコードであるか否かを評価する指標値を意味する概念である。一般にプログラム作成開始当初は、複雑度は0(ゼロ)であり、コーディングが進むごとに上昇する。そして、プログラムの完成時期には特定の値に収束する。
The
「複雑度」の概念について、以下詳述する。本実施形態では、作成されたプログラムを完全にテストするのに必要なテストケース数(テストパターン数)、及び作成されたプログラムを変更、保守等するのに要する工数と相関のある定量値を、そのプログラムの複雑度と呼んでいる。テストケース数とプログラム変更、保守等に要する工数との間にも相互に相関があるので、概念としてどちらかに代表させてもよい。説明を簡単にするため、テストケース数のみを用いる場合について説明する。 The concept of “complexity” will be described in detail below. In the present embodiment, the number of test cases necessary to completely test the created program (the number of test patterns), and the quantitative value correlated with the man-hour required to change, maintain, etc. the created program, This is called the complexity of the program. Since there is a correlation between the number of test cases and the man-hours required for program change, maintenance, etc., the concept may be represented by either one. In order to simplify the description, a case where only the number of test cases is used will be described.
図38は、提示されるプログラミング課題の具体例を示す例示図である。なお、ここでは上述したプログラミング課題とは内容が異なる例を示している。また、図39は、提示されたプログラミング課題に応じて被験者が作成したC言語によるプログラムの例示図である。複雑度の算出には、プログラム中に現れる様々な定量値を用いることができる。最も一般的な複雑度は、プログラム中の分岐の数である。単純な数え方としては、図39に示すプログラムには、if文が6個(13、20、21、34、36、38行目)、while文が1個(33行目)存在するので、合計7個の分岐が存在する。一般に分岐の数は、他の条件が全て同じであれば、多ければ多いほど完全なテストをするためのテストケースが多くなることから、分岐数7は複雑度を示す定量値として用いることができる。
FIG. 38 is an exemplary diagram showing a specific example of the presented programming task. Here, an example in which the content is different from the programming task described above is shown. FIG. 39 is a view showing an example of a program in C language created by the subject according to the presented programming task. For calculation of complexity, various quantitative values appearing in the program can be used. The most common complexity is the number of branches in the program. As a simple way of counting, in the program shown in FIG. 39, there are six if statements (
同じく分岐に着目する場合でも、20行目のif文のように、1つのif文の中に2つの判定条件を含む場合には、このif文は分岐を2つ含むという数え方もある。また9行目のreturn文に含まれる判定条件も暗黙の分岐と考え、4つの分岐と数える場合もある。斯かる考え方で分岐数を数えた場合、図39に示すプログラム中に存在する分岐は、9行目に4個、13行目に1個、20行目に2個、21行目に1個、22行目に1個、26行目に1個、33行目に1個、34行目に1個、36行目に2個、38行目に2個、それぞれ存在し、総分岐数は16個となる。 Similarly, even when focusing on a branch, if there are two determination conditions in one if statement as in the if statement on the 20th line, there is a way of counting that this if statement includes two branches. The judgment condition included in the return statement on the ninth line is also considered as an implicit branch and may be counted as four branches. When counting the number of branches in this way, there are 4 branches in the program shown in FIG. 39, 1 in the 13th line, 2 in the 20th line, and 1 in the 21st line. 1 in the 22nd line, 1 in the 26th line, 1 in the 33rd line, 1 in the 34th line, 2 in the 36th line, 2 in the 38th line, and the total number of branches Will be 16.
また、テストケース数と相関のある定量値として、各言語仕様で定義されている様々な型の変数の数を用いてもよい。例えば図39に示すプログラムには、5個のローカル変数が宣言されている(18、19、30、31、32行目)ので、ローカル変数の数に着目すれば図39のプログラムの複雑度は5であると考えられる。これも、グローバル変数を加えてもよいし、引数も一種の変数とみなして加えてもよい。
In addition, the number of various types of variables defined in each language specification may be used as a quantitative value correlated with the number of test cases. For example, since five local variables are declared in the program shown in FIG. 39 (
また、複雑度としてインタフェース数を用いてもよい。例えば図39に示すプログラムには、引数を1つ持つ関数が4個(7、11、24、28行目)、引数を2つ持つ関数が1個(16行目)含まれている。引数の数がインタフェース数であると考えた場合、このプログラムのインタフェース数として定量値6を得ることができる。インタフェース数は、どのような単位で外部とのインタフェースを考えるかにも依存する。例えばクラスにおけるパブリック関数の数、ファイル単位での外部公開関数の数等をインタフェース数としてもよい。
The number of interfaces may be used as the complexity. For example, the program shown in FIG. 39 includes four functions having one argument (
同じ理由で、ネストレベルが採用される場合もある。例えば図39に示すプログラムには、33行目のwhile文の中に34行目のif文があり、さらにその中に36行目のif文がある。つまり分岐が3段階の入れ子になっており、プログラム全体での最大ネストレベルとして定量値3が得られる。さらに、単に最大ネストレベルを用いるのではなく、例えば分岐の中にある分岐は悪影響が強い等の考え方で、各定量値にネストレベルに応じた重み付け係数を乗じた値として複雑度を算出してもよい。
For the same reason, nesting levels may be adopted. For example, in the program shown in FIG. 39, there is an if statement on the 34th line in the while statement on the 33rd line, and an if statement on the 36th line. That is, the branch is nested in three stages, and a
他にも、例えば状態の数等の様々な定量値が採用されているが、一般にテストケース数、保守又は変更に要する工数と相関のある定量値であれば、複雑度として用いることができる。また、複雑度の計算精度を上げる目的で、複数の定量値を組み合わせてもよい。例えば、分岐数をB、変数の数をV、インタフェース数をI、ネストレベルをNとして、f(B、V、I、N)のように所定の重み付けを付して計算してもよい。計算方法は、プログラム全体で一括して計算してもよいし、関数等の単位ごとに個別に計算したものを全体として再計算してもよい。どの定量値を用い、どのように計算するかは、要求される計算精度や複雑度の算出目的に応じて決定すれば足りる。 In addition, for example, various quantitative values such as the number of states are adopted, but generally, any quantitative value correlated with the number of test cases and the man-hour required for maintenance or change can be used as the complexity. Further, a plurality of quantitative values may be combined for the purpose of increasing the calculation accuracy of the complexity. For example, assuming that the number of branches is B, the number of variables is V, the number of interfaces is I, and the nest level is N, a predetermined weighting may be applied as in f (B, V, I, N). The calculation method may be calculated collectively for the entire program, or may be recalculated as a whole for each unit such as a function. It is sufficient to determine which quantitative value is used and how it is calculated according to the calculation purpose of the required calculation accuracy and complexity.
また、複雑度を示す定量値は、使用するプログラミング言語の仕様を考慮して決定される場合もある。例えば図39に示すプログラムはC言語で記述されているが、C++、JAVA(登録商標)等のようにクラスの概念を有する言語である場合、クラス構造の複雑度を評価する定量値を考慮してもよい。また、直接ソースコードから複雑度を算出することに限定されるものではなく、中間コード、フローチャート等の設計図から計算してもよい。 Further, the quantitative value indicating the complexity may be determined in consideration of the specification of the programming language to be used. For example, the program shown in FIG. 39 is written in the C language, but in the case of a language having a class concept such as C ++, JAVA (registered trademark), etc., the quantitative value for evaluating the complexity of the class structure is considered. May be. Further, the complexity is not directly calculated from the source code, but may be calculated from a design drawing such as an intermediate code or a flowchart.
逆に、テストケース数、保守又は変更に要する工数との相関の無いパラメータは、複雑度を示す定量値として用いることはできない。例えば、ソースコードの単純な文字数、行数等は、事後メンテナンスを容易にするために丁寧にコメントを付したソースコードであるほど複雑度が高く評価されると考えられ、少なくとも単独では複雑度を示す指標として用いることは不適当である。また図39のプログラムでは、比較的長い変数名(30、31、32行目)を使用しているが、このような長さ(トークンの長さ)はテストケース数とは全く関係なく、保守又は変更に要する工数の点でも一概に長い(短い)方が良いとは言えないので、少なくとも単独では複雑度として用いることはできない。ファンクションポイントの数、画面数等も、単独で複雑度として用いるには不適当である。一般に、単にソフトウェア規模を表すような定量値は、単独で複雑度として用いるには不適当である(ただし、複雑度を算出する場合に、本来の複雑度を表す定量値と共に計算される場合は除く)。
Conversely, parameters that do not correlate with the number of test cases and the man-hours required for maintenance or change cannot be used as quantitative values indicating complexity. For example, the simple number of characters and the number of lines in the source code are considered to be highly evaluated as the source code is carefully commented to facilitate post-maintenance. It is inappropriate to use it as an indicator. In the program of FIG. 39, relatively long variable names (
さらに、特定のコーディング規約に沿っているか否かを示す定量値等は、そもそも複雑度と無関係である場合が多く、少なくとも単独では複雑度として用いることはない。ただし、コーディング規約自体に複雑度を下げる効果が認められる場合に限り、用いる場合も生じうる。 Further, a quantitative value indicating whether or not a specific coding rule is satisfied is often unrelated to the complexity in the first place, and at least alone, it is not used as the complexity. However, it may be used only when the coding convention itself has an effect of reducing complexity.
また、サーバ1のCPU11は、複雑度の時系列の推移データに基づいて、被験者の能力評価値を算出する。能力評価値は、複雑度数値が低い状態で推移した被験者であればあるほど、また短時間に完了した被験者であればあるほど、能力が高いと評価する値とする。すなわち、より短時間によりシンプルな解を見つけた被験者ほど能力が高いと評価する値に設定する。
The
能力評価値は、品質能力に関する評価値と生産性能力に関する評価値とを独立して算出
することができる。例えば、複雑度は元来品質を示す指標であり、被験者Aと被験者Bとが同程度の所要時間であり、Aの複雑度がBの複雑度よりも低く推移した場合、Aの品質能力はBの品質能力よりも高いと評価することができる。またAの複雑度とBの複雑度とは同程度で推移しているが、Aの方がBよりも短期間に完了した場合は、Aの方がBよりも生産性が高いと評価することができる。
The capability evaluation value can be calculated independently from the evaluation value related to the quality capability and the evaluation value related to the productivity capability. For example, complexity is an index that originally indicates quality, and subject A and subject B have similar durations, and if A's complexity is lower than B's complexity, A's quality capability is It can be evaluated that it is higher than the quality capability of B. In addition, the complexity of A and the complexity of B have changed at the same level, but if A is completed in a shorter time than B, it is evaluated that A is more productive than B be able to.
さらに補正情報として記憶されている、被験者が文法エラーを発生させた時刻、エラー
の種類、文法エラーの数の累計値、論理エラーを発生させた時刻、エラーの種類、論理エ
ラーの数の累計値等々を使用して、評価者は、得られた評価値に被験者が実際に発生させ
たエラーという観点からの補正を加えることもできる。
Furthermore, stored as correction information, the time when the subject generated a grammatical error, the type of error, the cumulative value of the number of grammatical errors, the time when the logical error was generated, the type of error, the cumulative value of the number of logical errors Etc., the evaluator can also correct the obtained evaluation value from the viewpoint of an error actually generated by the subject.
以下、被験者にプログラミング課題を提示(出題)し、被験者のプログラミング作業から能力評価のためのデータを収集するまでの処理手順を説明する。図40は、サーバ1のCPU11のデータ収集処理の手順を示すフローチャートである。
In the following, a processing procedure from presenting a programming task to the subject (taking the question) and collecting data for ability evaluation from the subject's programming work will be described. FIG. 40 is a flowchart illustrating a procedure of data collection processing performed by the
図40において、サーバ1のCPU11は、クライアント端末2Bの表示部25に、図11を用いて前述したように、プログラミング課題の課題名を表示させる(ステップS11)。そして、クライアント端末2Bから、プログラミング開始を示唆するスタートボタン806(図11参照)の操作信号を受信すると、タイマによる計時を開始し(ステップS12)、文字入力を受け付けたか否かを判断する(ステップS13)。なお、文字入力とは、テキストデータの入力に限定されるものではなく、削除、改行、タブ、カーソル移動、コピー&ペースト、検索操作等の編集操作に関連する制御コードの入力も含む。
40, the
CPU11が、文字入力を受け付けていないと判断した場合(ステップS13:NO)、CPU11は、文字入力の待ち状態となる。CPU11が、文字入力を受け付けたと判断した場合(ステップS13:YES)、CPU11は、被験者のプログラミング作業の任意のタイミングでのソースコードを復元することができるフォーマットで解答DB180に記憶する(ステップS14)。なお、全ての基本情報を記憶してもよいし、評価値の算出精度を維持することができる範囲で間引いて記憶してもよい。
When the
CPU11は、被験者から文法エラーチェックの開始指示を受け付けたか否か(すなわち、図15に示すプログラミング画面において、ビルドボタン903がクリックされたか否か)を判断し(ステップS15)、CPU11が、開始指示を受け付けていないと判断した場合(ステップS15:NO)、CPU11は、開始指示の待ち状態となる。CPU11が、開始指示を受け付けたと判断した場合(ステップS15:YES)、CPU11は、被験者が開始指示の受け付け時点で作成していたソースコードに対して文法エラーチェックを実行し、文法エラーチェックの開始指示を受け付けた時刻を解答DB180に記憶して(ステップS16)、文法エラーが存在するか否かを判断する(ステップS17)。なお、文法エラーが存在するか否かは、コンパイラ言語である場合には、市販のコンパイラがコンパイル結果として出力する文字列に基づいて判断すればよい。また同時に実行可能モジュールを生成してもよい。さらに、解答DB180に文法エラーチェックの開始指示を受け付けた時刻を記憶することに限定されるものではなく、例えば文法エラーチェックの完了時刻であってもよい。
The
CPU11が、文法エラーが存在すると判断した場合(ステップS17:YES)、CPU11は、存在する文法エラーの種類及び数を、解答DB180に追加して記憶し(ステップS18)、処理をステップS13へ戻して、上述した処理を繰り返す。なお、フローには示していないが、文法エラーが存在しない場合であっても、文法エラーが存在しない旨を示す情報は、文法エラーチェックの完了時刻に対応付けて解答DB180に記憶される。
If the
CPU11が、文法エラーが存在しないと判断した場合(ステップS17:NO)、CPU11は、ステップS18をスキップして、被験者から論理エラーチェックの開始指示を受け付けたか否か(すなわち、図15に示すプログラミング画面において、テストボタン905がクリックされたか否か)を判断する(ステップS19)。CPU11が、開始指示を受け付けていないと判断した場合(ステップS19:NO)、CPU11は、開始指示の待ち状態となる。CPU11が、開始指示を受け付けたと判断した場合(ステップS19:YES)、CPU11は、被験者が開始指示の受け付け時点で作成していたプログラムに対して、テストケースに従った自動単体テストを実行し、論理エラーチェックの開始指示を受け付けた時刻を解答DB180に記憶して(ステップS20)、論理エラーが存在するか否かを判断する(ステップS21)。なお、論理エラーが存在するか否かは、テストケースの入力に対して、想定されている正しい出力を得ることができたか否かに基づいて判断すればよい。
When the
CPU11が、論理エラーが存在しないと判断した場合(ステップS21:NO)、CPU11は、プログラムが完成したと判断して処理を終了する。CPU11が、論理エラーが存在すると判断した場合(ステップS21:YES)、CPU11は、存在する論理エラーの種類及び数を、解答DB180に追加して記憶し(ステップS22)、処理をステップS23へ戻して、上述した処理を繰り返す。なお、フローには示していないが、論理エラーが存在しない場合であっても、論理エラーが存在しない旨を示す情報は、論理エラーチェックの完了時刻に対応付けて解答DB180に記憶される。また、被験者が、ソースコード整形等を行う意思を有する場合に備えて、処理を終了するか、さらにプログラミング作業を継続するかの判断を被験者に任せてもよい。
When the
以上のように図40に示すフローチャートには、文法エラー及び論理エラーが除去される除去過程が含まれている。該除去過程は外部仕様の同一性を保証する上で重要である。プログラミング課題が同一であっても、それだけでは作成されたプログラムの外部仕様が同一であることは保証されない。例えば被験者Aのプログラムにはバグが残存し、被験者Bのプログラムにはバグが存在しない場合、これは外部仕様に相違があるのと等価であり、その相違は複雑度に影響する。この状態で被験者Aと被験者Bとの複雑度推移を比較しても、その差異が外部仕様の差異によるのか被験者の能力の差異によるのか判別できない。図40に示すフローチャートでは、文法エラー及び論理エラーが除去される除去過程が含まれているので、このような懸念はない。 As described above, the flowchart shown in FIG. 40 includes a removal process in which grammatical errors and logic errors are removed. The removal process is important in ensuring the identity of external specifications. Even if the programming tasks are the same, it is not guaranteed that the external specifications of the created programs are the same. For example, if a bug remains in the program of the subject A and no bug exists in the program of the subject B, this is equivalent to a difference in external specifications, and the difference affects the complexity. Even if the complexity transitions of the subject A and the subject B are compared in this state, it cannot be determined whether the difference is due to a difference in external specifications or a difference in ability of the subject. In the flowchart shown in FIG. 40, there is no such concern because a removal process in which grammatical errors and logic errors are removed is included.
以上、定量的なスキル評価のためのデータ収集プロセスを説明した。なお、図40では説明の便宜上、ビルドによって文法エラーを検出し、自動単体テストによって論理エラーを検出することとしたが、ビルドによって両者を検出してもよいし、自動単体テストによって両者を検出してもよい。以下、サーバ1が収集したデータに基づいて能力評価値を算出する処理手順を説明する。図41は、CPU11の能力評価値算出の処理手順のフローチャートを示す。
The data collection process for quantitative skill evaluation has been described above. In FIG. 40, for convenience of explanation, a grammatical error is detected by a build and a logical error is detected by an automatic unit test. However, both may be detected by a build or both may be detected by an automatic unit test. Good. Hereinafter, a processing procedure for calculating a capability evaluation value based on data collected by the
まずCPU11は、解答DB180に記憶されているソースコードの時系列の推移情報を用いて、プログラミング作業の過程におけるソースコードを順次復元しながら複雑度を時系列に算出し、複雑度の時系列推移データを作成する(ステップS31)。
First, the
複雑度は、ソースコードを入力として算出される。簡便な算出方法として、例えばMcCabeの複雑度における判定条件(複合条件も含む)の数に1を加えた値である基本パス数を算出の基礎として用いてもよい。基本パス数が増大するほど、複雑度も増大していると考えることができる。 The complexity is calculated using the source code as input. As a simple calculation method, for example, the number of basic paths that is a value obtained by adding 1 to the number of determination conditions (including complex conditions) in McCabe complexity may be used as the basis of calculation. It can be considered that the complexity increases as the number of basic paths increases.
より評価精度を上げる必要がある場合、上述した複雑度の算出の基礎に、変数の種類及び数、関数等の手続きの数、モジュール間インタフェースの数、ソースコードの規模(例えば語数)等のソースコードの複雑さに関連するパラメータを加え、所定の重み付けを行って演算してもよい。また算出の基礎としてMcCabe以外の指標を用いることも可能である。 If it is necessary to improve the accuracy of the evaluation, the sources such as the types and number of variables, the number of procedures such as functions, the number of interfaces between modules, the size of the source code (for example, the number of words), etc. The calculation may be performed by adding a parameter related to the complexity of the code and performing predetermined weighting. It is also possible to use an index other than McCabe as the basis of calculation.
複雑度の算出に用いる指標、パラメータは、要求される評価精度に応じて決定すればよい。例えば初心者に近いプログラマと、企業において定常的に高難易度モジュールを担当している優秀なプログラマとの差異を検出するのであれば、複雑度の差が非常に大きいと考えられることから、単にMcCabe指標を適用するだけで能力の差異を検出することができる。一方、被験者Aと被験者Bとの能力の差異が非常に小さい場合(例えば2倍程度の場合)は、より多面的な指標、パラメータ等を用いて複雑度の算出精度を上げればよい。 The index and parameter used for calculating the complexity may be determined according to the required evaluation accuracy. For example, if a difference between a programmer close to a beginner and an excellent programmer who is regularly in charge of a high difficulty module in a company is detected, the difference in complexity is considered to be very large. Capability differences can be detected simply by applying indicators. On the other hand, when the difference in ability between the subject A and the subject B is very small (for example, about twice), the complexity calculation accuracy may be increased using more multifaceted indexes, parameters, and the like.
図42は、サーバ1によって算出された複雑度の推移データの例示図である。図42に示すように、タイマによる計時を開始してからのサンプリング経過時間ごとの複雑度91が算出されている。図42では、複雑度91の算出に、上記McCabe指標に加えてプログラムの語数も併用している。
FIG. 42 is an exemplary diagram of the transition data of the complexity calculated by the
図41に戻って、CPU11は、被験者の姿勢による影響を除去するため、得られた複雑度推移データから能力評価に使用する有効区間を抽出する。「被験者の姿勢による影響」とは、例えば、被験者Aは充分に自動単体テスト、ソース整形等を行い、プログラミング作業を完了したのに対し、被験者Bはコーディング中に偶然論理エラーチェックが存在しないと判断され、そのままプログラミング作業を完了した、といった場合に発生する。この例では、たとえ被験者Aと被験者Bとの所要時間、最終複雑度が同じであったとしても、当然ながら評価値としては被験者Aの方が高く算出されなければならない。このような場合の評価値を正確に算出するために複雑度推移データから有効区間を抽出する。
Returning to FIG. 41, the
有効区間を抽出するために、CPU11は、得られた複雑度の推移データに対して近似曲線を作成する(ステップS32)。近似曲線の作成方法としては、例えば二次曲線による最小二乗近似を組み合わせてもよいし、あらかじめ複数の曲線パターンを解答DB180に記憶しておき、パターンマッチングにより最も近似する曲線パターンで近似してもよい。
In order to extract an effective section, the
なお、近似曲線は、原理的には数点のサンプリング点からでも作成することができるが、精度を確保する上では数十点以上のサンプリング点が存在することが望ましい。サンプリング点を決定する方法としては、所定時間毎にサンプリング点を設ける方法、所定個数の文字入力があったタイミングをサンプリング点とする方法等、特に限定されるものではない。また、サンプリング点における代表値の決定方法としては、上述した各所定時間又は各所定個数内の複雑度の平均値を求める方法等を用いることができる。 Although an approximate curve can be created in principle from several sampling points, it is desirable that there are several tens or more sampling points in order to ensure accuracy. The method of determining the sampling point is not particularly limited, such as a method of providing a sampling point every predetermined time, a method of using a timing when a predetermined number of characters are input as a sampling point, and the like. Further, as a method for determining the representative value at the sampling point, the above-described method for obtaining the average value of the complexity within each predetermined time or each predetermined number can be used.
図43は、サーバ1によって算出された近似曲線の例示図である。図43では、所要時間を100分割し、それぞれの区間の複雑度91の平均値を代表値として近似曲線101を作成している。また近似方法としては、被験者が作成したソースコードの最終複雑度と所要時間から曲線の縦横比を決定した後に、あらかじめ解答DB180に記憶されている約2000通りの曲線とのパターンマッチングを行っている。解答DB180に記憶されている曲線パターン群は、処理を簡便にするために、複雑度が一定時間0で推移した後に単調増加に転じ、ある複雑度で収束するパターンに統一している。なお、ここではパターンマッチングを行うこととしているが、加重移動平均など他の方法を用いることとしてもよい。
FIG. 43 is an illustration of an approximate curve calculated by the
図41に戻って、近似曲線101が得られた時点で、CPU11は有効区間を抽出する(ステップS33)。図44は、サーバ1によって抽出された有効区間の例示図である。有効区間112は、処理を簡便にするために、複雑度が0から単調増加に転じた点を起点とし、単調増加が終了した点を終点としている。有効区間112は、初期設計区間111やテスト区間113を含まない純粋なプログラミング作業部分とみなすことができる。ここで、初期設計区間111やテスト区間113を全て除外するのも精度上問題があるとの考え方もあるので、初期設計区間111やテスト区間113を所定の重み付けで考慮して有効区間112を抽出してもよい。
Returning to FIG. 41, when the
図45は、有効区間112を補正する必要がある場合の、サーバ1によって作成された近似曲線101の例示図である。抽出される有効区間112としては、図44では全体の一部分として抽出されている。しかし、図45に示すように有効区間112は拡大された有効区間112’として抽出するべき場合もある。
FIG. 45 is an exemplary diagram of the
図45に示すようなケースとしては、被験者がプログラミング中に試しに論理エラーチェックをした場合に、偶然にも論理エラーが検出されなかったケース、被験者がテストを軽視する姿勢であるケース等が想定される。斯かる場合、被験者は本来もっと所要時間がかかったものと解釈することができ、有効区間112を拡大して能力評価することが妥当である。
As a case as shown in FIG. 45, a case where a test subject performs a logic error check during programming and a logic error is not detected by chance, a case where the test subject is in a position to neglect the test, etc. Is done. In such a case, it can be interpreted that the subject originally took more time, and it is appropriate to evaluate the ability by expanding the
図41に戻って、最後にCPU11は、抽出された有効区間112に対して所定の演算を行い、能力評価値を算出する(ステップS34)。能力評価値の簡便な算出方法としては、例えば有効区間112の近似曲線101に対して積分値を求める方法がある。すなわち、時間軸と近似曲線101で囲まれた面積を求める方法である。斯かる面積は、被験者がプログラミング作業中に取り組んだ複雑度の総量であると考えられる。面積がより小さい被験者は、プログラミング課題を、より短時間に、よりシンプルに解決したことになるので、面積が小さいほど能力が高いと評価することができる。したがって、積分値(面積)がそのまま評価値となる。
Returning to FIG. 41, finally, the
上記積分値(面積)は、絶対値を算出するのではなく、別途基準となる評価値を設けておき、基準となる評価値との比率で算出しても良い。例えば既知の被験者Aに特定のプログラミング課題を解いてもらい、被験者Aのデータを課題情報記憶部132に記憶しておく。そして、以後の未知の被験者に同じプログラミング課題を解いてもらう場合、記憶してある「被験者Aのデータ」との比率で能力評価値を算出できる。このように既知の人物の能力との比率で算出する方法は、開発現場にとって評価値の意味合いを直感的に理解しやすいというメリットがある。 The integral value (area) may not be calculated as an absolute value, but may be calculated as a ratio with a reference evaluation value provided separately as a reference evaluation value. For example, a known subject A solves a specific programming task, and the data of the subject A is stored in the task information storage unit 132. When the unknown subject is asked to solve the same programming task thereafter, the ability evaluation value can be calculated by the ratio with the stored “subject A data”. Thus, the method of calculating by the ratio with the ability of the known person has an advantage that it is easy for the development site to intuitively understand the meaning of the evaluation value.
また積分値(面積)の算出に当たって、近似曲線101を使用するのではなく、複雑度の生データを使用してもよい。例えば複雑度の推移データの区間平均値を加算する方法であってもよい。この場合、意味的には積分であっても、演算としては単なる加算となり、演算処理負荷を軽減することができる。さらに近似曲線101を用いた場合でも、曲線が充分に単純である場合は、有効区間112の時間幅と特定位置の複雑度データと所定の係数とを用いて、単なる乗算で評価値を算出してもよい。
Further, in calculating the integral value (area), instead of using the
また別の側面からの能力評価として、上記有効区間112において、あるサンプリング点の複雑度が直前のサンプリング点の複雑度よりも小さくなった回数を計数して評価値としてもよい。複雑度は、プログラミング作業が順調に進んでいるうちは単調に増加するが、被験者が設計の誤りに気付いた場合、文法エラーや論理エラー等による修正作業が発生した場合等には、一時的に複雑度が下がる場合がある。計数した回数が多い人ほど初期の設計の見通しが甘く、試行錯誤の度合が高いと判断することができる。
Further, as an ability evaluation from another aspect, the number of times that the complexity of a certain sampling point is smaller than the complexity of the immediately preceding sampling point in the
有効区間112の抽出された位置、大きさ等から被験者の傾向を示す評価値も得ることができる。例えば抽出された有効区間112が複雑度の全推移データの中で極端に前半に位置していた場合は、プログラミング課題をよく読まずに取り掛かる傾向が強いと判断することができる。仕様をよく理解せずにプログラミングを開始するのは、品質に悪影響を与えやすい開発姿勢である。
An evaluation value indicating the tendency of the subject can also be obtained from the extracted position, size, etc. of the
逆に、抽出された有効区間112が複雑度の全推移データの中で極端に後半に位置していた場合は、よく動作チェックを行わずに完了したと判断することができる。そのような姿勢は、当然ながら品質に悪影響を与える。また、全体の所要時間が非常に長いにもかかわらず、抽出された有効区間112が極端に狭い場合は、仕様理解や動作チェックにあまりに時間をかけすぎた可能性があり、生産性改善の余地が大きいと判断することができる。有効区間112の位置の偏りや全体に占める比率を定量化することは容易である。
On the other hand, if the extracted
能力評価値は、被験者の品質能力と生産性能力とに独立に算出することも可能である。これは複雑度の推移データ自体が、縦軸に品質に関連の深い複雑度をとり、横軸に生産性に関連の深い時間をとって作成されているからである。 The ability evaluation value can also be calculated independently on the quality ability and productivity ability of the subject. This is because the complexity transition data itself is created with the vertical axis taking the complexity deeply related to quality and the horizontal axis taking the time deeply related to productivity.
図46は、特徴的な4名の被験者A、B、C、Dの複雑度の推移データを示す例示図である。図46において、被験者Aは短時間に高い複雑度に到達したグラフとなっている。手は速いがコードは乱雑な傾向の被験者であり、生産性能力は高いが品質能力が低いパターンを有している。以下同様に、被験者Bは生産性能力も品質能力も低く、被験者Cは生産性能力も品質能力も高く、被験者Dは、生産性能力は低いが品質能力は高い、と解釈することができる。 FIG. 46 is an exemplary diagram showing transition data of complexity of four characteristic subjects A, B, C, and D. FIG. In FIG. 46, the subject A is a graph that has reached high complexity in a short time. The hand is fast but the code tends to be messy, and has a pattern of high productivity but low quality. Similarly, it can be interpreted that subject B has low productivity ability and quality ability, subject C has high productivity ability and quality ability, and subject D has low productivity ability but high quality ability.
品質や生産性に関する特性は容易に定量化することができる。最も簡便な定量化方法は、曲線を包含する矩形を描き、矩形の面積と縦横比とを得る方法である。面積と縦横比とに基づいて、図46に示す4パターンのどこに位置するかを定量的に算出することができる。位置算出の結果は図31のプロット(黒丸)で示されている。矩形を求めるに当たっては、複雑度の推移データ全体を用いても良いが、有効区間112の抽出を考慮した方が評価精度は高い。
Quality and productivity characteristics can be easily quantified. The simplest quantification method is a method of drawing a rectangle including a curve and obtaining the area and aspect ratio of the rectangle. Based on the area and the aspect ratio, the position of the four patterns shown in FIG. 46 can be quantitatively calculated. The result of the position calculation is shown by the plot (black circle) in FIG. In obtaining the rectangle, the entire transition data of complexity may be used, but the evaluation accuracy is higher when the extraction of the
このように、複雑度の推移データを用いることで、近似曲線の作成、有効区間の抽出等を実行することにより、被験者の能力評価値のみならず特性にまで踏み込んだ定量値を算出することができる。上述した例の他にも、複雑度に基づいて算出され、プログラミング能力を評価するに値する評価指標であれば、評価値として用いることができる。 In this way, by using the transition data of complexity, it is possible to calculate not only the ability evaluation value of the subject but also the quantitative value that goes into the characteristic by executing the creation of the approximate curve, the extraction of the effective interval, etc. it can. In addition to the examples described above, any evaluation index that is calculated based on the complexity and deserves evaluation of programming ability can be used as an evaluation value.
最後にCPU11は、解答DB180に記憶されている補正情報(被験者のエラーチェックタイミング、発生したエラーの情報等)を、一覧表又はグラフの形式にて評価者に提示する。提示するフォーマットは、その被験者が、いつエラーチェックを行い、そのときにどんなエラーが発生したのかが評価者にわかれば、どのようなフォーマットでも構わない。また提示方法は、課題出題者のクライアント端末2Aの表示部25(或いはサーバ1の表示部15)に表示してもよいし、印刷してもよいし、後に他のソフトウェアや他のコンピュータで閲覧されることを想定して所定の形式で記憶又は送信しても構わない。
Finally, the
図41のフローチャートでは、能力評価値の算出にあたって補正情報(被験者のエラーチェックタイミング、発生したエラーの情報等)を使用していない。使用しない理由は、サーバ1を企業における入社試験等に利用する場合、30分〜2時間程度で完了するプログラミング課題であることが望まれるが、そのような短時間で被験者が発生させるエラーは偶発性が強く(従って再現性が低く)、能力評価値のパラメータとしては不適当なためである。
In the flowchart of FIG. 41, correction information (subject error check timing, information on an error that has occurred, etc.) is not used in calculating the ability evaluation value. The reason for not using the
ただし、あまりにも極端なエラー状況であった場合、例えば文法エラーチェックも論理エラーチェックも1回で通過させるような優秀な被験者、逆にあまりにも大量のエラーを出しながらプログラミングを行う被験者等がいた場合は、能力評価値に加えてエラー情報も考慮すべきである。このような理由から、補正情報は能力評価値の算出には用いないが、評価者に提示はしている。 However, if the error situation was too extreme, there were, for example, excellent subjects who passed the grammatical error check and logical error check at once, and conversely, subjects who programmed while giving too many errors. In this case, error information should be considered in addition to the capability evaluation value. For this reason, the correction information is not used for calculation of the ability evaluation value, but is presented to the evaluator.
しかし、被験者の時間的制約が緩い場合、例えば企業における教育研修で統計的に有意な期間(例えば数日等)が許される場合はこの限りではなく、補正情報を能力評価値の算出に用いてもよい。 However, if the subject's time constraints are relaxed, for example, if a statistically significant period (such as several days) is allowed in educational training in a company, this is not the case, and the correction information is used to calculate the ability evaluation value. Also good.
なお、ここでは能力評価のため被験者にC言語プログラミングの作業をさせる場合について説明したが、C言語プログラミング作業は1つの例であり、ここでの能力評価値算出の本質ではない。作業内容としては、被験者によって作成されるテスト通過プログラム及び中間生成プログラムから複雑度を算出可能であれば、どのような作業であってもよい。 In addition, although the case where a test subject was made to perform C language programming work for ability evaluation was described here, C language programming work is one example, and is not the essence of the ability evaluation value calculation here. The work content may be any work as long as the complexity can be calculated from the test passing program and the intermediate generation program created by the subject.
以上説明した[定量的なスキル評価法]によれば、被験者が作成したソースコードの中間生成プログラム(ログデータ)をクライアント端末2Bから所定タイミングで取得し、そのタイミングと中間生成プログラムの複雑度に基づいて、被験者のスキルを定量的に評価できるので、被験者のプログラミングスキルを容易に客観的に評価することができる。
According to the [quantitative skill evaluation method] described above, the intermediate generation program (log data) of the source code created by the subject is acquired from the
具体的に説明すると、課題出題者が視認し得る図16に戻って、チャート表示ボタン637をクリックすれば、例えば図47に示す生産性・品質チャート6371の表示画面が、クライアント端末2Aの表示部25に現れる。この図47に示すチャート表示画面は、図46に示す例示図によって示される画面に相当するものであり、被験者のプログラミングにおける生産性能力や品質能力を相対的に図示している。横軸は、品質能力(図46では品質と表記)を示し、縦軸は生産性能力(図46では生産性と表記)を示している。また、図47では、図46と異なり正方向を逆転させている。すなわち、図47では、横軸の品質能力についていえば、左方向に行くほど品質能力が高くなり、縦軸の生産性能力についていえば、下方向に行くほど生産性能力が高くなる。また、図47では、被験者2(四角枠で囲まれた2で示す)、被験者3(四角枠で囲まれた3で示す)、被験者5(四角枠で囲まれた5で示す)、被験者6(四角枠で囲まれた6で示す)の能力評価を行っているが、これは、図16に示す解答確認画面において、課題出題者がNo.2、No.3、No.5、No.6を選択したからである。
More specifically, returning to FIG. 16 that can be visually recognized by the subject, when the
図47に示すように、被験者3の生産性、品質は、ともに2.0である。また、被験者6の生産性、品質は、ともに5.0である。これは、被験者3が被験者6と比べて生産性が2.5倍高く、品質が約2.5倍良いことを意味する(つまり、生産性・品質チャート6371の左下にいくほど能力が高いように配置される)。したがって、仮に、被験者6が既存の社員で、被験者2,3,5が採用試験の応募者である場合には、被験者3は既存のある社員(被験者6)よりも数倍能力が高いため採用する、といった適切な判断を下すことができる。このように、被験者のスキルを相対的に判断するためには、生産性・品質チャートで基準となるデータが必要になるため、図16に示す基準632の項目を設けている。そして、図47に示す生産性・品質チャート6371で、被験者6(基準となる者)を示す四角枠内に色を着けることによって、課題出題者は被験者のスキルを容易に相対判断することができる。
As shown in FIG. 47, the productivity and quality of the subject 3 are both 2.0. The productivity and quality of the subject 6 are both 5.0. This means that the
また、図47では、基準となる者の位置を自由に変更することができるように、基準位置調整ボックスが表示されている。詳細には、生産性能力基準位置調整ボックス6372、このボックス内の数値を増減させるスピンボタン6373、品質能力基準位置調整ボックス6374、このボックス内の数値を増減させるスピンボタン6375が表示されている。変更ピッチは、0.1刻みである。また、基準位置のデフォルトは、(5.0,5.0)である。基準位置を変更する場合には、課題出題者は、スピンボタン6373やスピンボタン6375をクリックすればよい。
In FIG. 47, a reference position adjustment box is displayed so that the position of the reference person can be freely changed. Specifically, a productivity capability reference
さらに、図47では、生産性・品質チャート6371に面積一定線6377を描画するか否かを選択するためのチェックボックス6376が設けられている。生産性・品質チャート6371内に描画された面積一定線6373は、生産性能力値×品質能力値が一定になるように一本又は複数本描画される。これにより、各被験者のスキルを、基準となる被験者6と比べて、総合的に優れているか劣っているかを相対判断することができる。なお、閉じるボタン6378がクリックされると、図47に示す画面は閉じられる。
Further, in FIG. 47, a
以上、図37〜図47を用いて説明した生産性・品質チャートは、図26に示すパラメータ設定1014にチェックボックスを設け(図26では図示せず)、分析欄1011に表示させることができる。具体的には、テスト通過プログラムと中間生成プログラムをクライアント端末2Aにダウンロードする際、これを一緒にダウンロードし、記憶部27に記憶させておけばよい。
As described above, the productivity / quality chart described with reference to FIGS. 37 to 47 can be displayed in the
また、本実施形態に係るプログラミング能力診断装置(クライアント端末2A)の機能として、診断レポート出力機能がある。図48は、診断レポート(1枚目)の一例であり、図49は、診断レポート(2枚目)の一例である。図48及び図49に示すレポートには、図37〜図47を用いて説明した生産性・品質チャートを縮小した縮小版生産性・品質チャート1071と、図26〜図35を用いて説明したプログラミング作成過程を分析するための各図を縮小した図(縮小版複雑度推移グラフ1072、縮小版コード重複図1073、縮小版関数ライフサイクル図1074、縮小版フローチャート1075)とが印刷されている。また、各図の近辺には、コメント欄が印刷されており、プログラミング能力診断を行う者は、コメントを記入した上でレポート出力可能となっている。
In addition, as a function of the programming ability diagnostic apparatus (
このように、診断レポート出力機能を設けることで、被験者に対し、定性的かつ定量的な診断結果を提供することができる。なお、この診断レポート出力機能は、クライアント端末2Aの制御部20が、縮小版生産性・品質チャート1071などを記憶部27から読み出して、プリンタ等から構成される印刷部(図17では図示せず)に印刷信号を送信することによって実現することができる。この印刷部は、クライアント端末2Aに(USBなどで)外部接続されるプリンタ等であってもよい。或いは、診断レポート出力機能として、Excel(登録商標)形式でデータ出力するようにしてもよい。
Thus, by providing a diagnostic report output function, a qualitative and quantitative diagnostic result can be provided to a subject. Note that this diagnostic report output function is such that the
[実施形態の主な効果]
以上説明したように、本発明の第1実施形態に係るプログラミング能力診断装置(クライアント端末2A)によれば、複数の関数モジュール各々の処理手順(図28に示すフローチャートなど)又は複数の関数モジュール間の構造が可視化された図(例えばクラス図など)を視認することによって、自身がプログラミングに熟知していなくても、また、被験者が大勢いた場合であっても、プログラムの構造を構築する能力を簡易かつ迅速に診断することができる。
[Main effects of the embodiment]
As described above, according to the programming capability diagnosis device (
また、図12のテストボタン905を用いることによって、プログラミング課題の内容を勘違いして作成されたプログラムは、プログラミング能力診断の対象から排除することができるので、プログラミング課題の内容を勘違いしてプログラムが作成されたことに起因する誤評価を防ぐことができる。
Also, by using the
また、タイミング解析部33の機能により、複数の関数モジュールの各々が生成されたタイミングを知ることができ、ひいてはプログラムの構造を頭の中で如何に早く構築することができるか、といった能力を診断することができる。また、検索部34の機能によれば、関数モジュールが被験者によって記述されたタイミングを把握することができる。また、コード重複率解析部35の機能により、プログラムの構造を効率的に構築できているか、といった能力を診断することができる。
Further, the function of the
さらに、プログラミング能力診断を行う者は、受付部24を操作して、可視化図生成部32により生成された図と、タイミング解析部33の解析結果と、コード重複率解析部35の解析結果とを、表示部25において選択的に切り替えることができるので、プログラムの構造を構築する能力を様々な視点から簡易かつ迅速に診断することができる。
Furthermore, the person who performs the programming ability diagnosis operates the
1 サーバ
2A,2B クライアント端末
20 制御部
24 受付部
25 表示部
26 通信部
27 記憶部
31 再生部
32 可視化図生成部
33 タイミング解析部
34 検索部
35 コード重複率解析部
DESCRIPTION OF
Claims (7)
前記テスト通過プログラムと前記プログラム構成情報とを記憶する記憶部と、
前記プログラム構成情報により復元される前記複数の中間生成プログラムに基づいて、前記テスト通過プログラムの作成過程を再生する再生部と、
前記テスト通過プログラムに基づいて、前記一の処理モジュール若しくは前記複数の処理モジュール各々の処理手順又は前記一の処理モジュール若しくは前記複数の処理モジュール間の構造が可視化された図を生成する可視化図生成部と、
前記再生部により再生される前記テスト通過プログラムの作成過程と、前記可視化図生成部により生成された図とを表示部に表示させる制御部と、を備えることを特徴とするプログラミング能力診断装置。 In a program creation device in which a subject who has given a programming task creates a program that solves the programming task, the subject is created by the subject, and a desired program output set by the questioner who has given the programming task is obtained. And a test passing program that is composed of one processing module or a plurality of processing modules and that has obtained the desired program output and passed the test, and the subject passes the test. A program capability diagnosis device that reads a program configuration information capable of restoring a plurality of intermediate generation programs generated in the process of creating a program, and diagnoses the programming capability of the subject,
A storage unit for storing the test passing program and the program configuration information;
Based on the plurality of intermediate generation programs restored by the program configuration information, a playback unit that plays back the creation process of the test passing program;
Based on the test passing program, a visualization diagram generation unit that generates a diagram in which a processing procedure of each of the one processing module or the plurality of processing modules or a structure between the one processing module or the plurality of processing modules is visualized When,
A programming capability diagnosis apparatus comprising: a control unit that causes a display unit to display a process for creating the test passing program reproduced by the reproduction unit and a diagram generated by the visualization diagram generation unit.
前記制御部は、前記タイミング解析部の解析結果を前記表示部に表示させることを特徴とする請求項1記載のプログラミング能力診断装置。 Based on the plurality of intermediate generation programs restored by the program configuration information, comprising a timing analysis unit that analyzes the timing at which the one processing module or each of the plurality of processing modules is generated,
The programming ability diagnosis apparatus according to claim 1, wherein the control unit displays the analysis result of the timing analysis unit on the display unit.
前記制御部は、前記検索部の検索結果を前記表示部に表示させることを特徴とする請求項2記載のプログラミング能力診断装置。 For each of the one processing module or the plurality of processing modules, whether or not there is a description of the processing module by the subject before the timing analyzed by the timing analysis unit is restored by the program configuration information. A search unit for searching using the plurality of intermediate generation programs,
The programming capability diagnosis apparatus according to claim 2, wherein the control unit displays a search result of the search unit on the display unit.
前記制御部は、前記コード重複率解析部の解析結果を前記表示部に表示させることを特徴とする請求項1から3のいずれか記載のプログラミング能力診断装置。 A code duplication rate analysis unit for analyzing a code duplication rate indicating the degree of code duplication within the one processing module or between the plurality of processing modules;
The said control part displays the analysis result of the said code duplication rate analysis part on the said display part, The programming capability diagnostic apparatus in any one of Claim 1 to 3 characterized by the above-mentioned.
前記制御部は、前記受付部からの操作信号に基づいて、前記可視化図生成部により生成された図と、前記タイミング解析部の解析結果と、前記コード重複率解析部の解析結果とを選択的に前記表示部に表示させる請求項4記載のプログラミング能力診断装置。 The display unit includes a reception unit that receives a user operation,
The control unit selectively selects a diagram generated by the visualization diagram generation unit, an analysis result of the timing analysis unit, and an analysis result of the code duplication rate analysis unit based on an operation signal from the reception unit. The programming ability diagnosis apparatus according to claim 4, wherein the display is displayed on the display unit.
前記テスト通過プログラムと前記プログラム構成情報とを記憶する記憶ステップと、
前記プログラム構成情報により復元される前記複数の中間生成プログラムに基づいて、前記テスト通過プログラムの作成過程を再生する再生ステップと、
前記テスト通過プログラムに基づいて、前記一の処理モジュール若しくは前記複数の処理モジュール各々の処理手順又は前記一の処理モジュール若しくは前記複数の処理モジュール間の構造が可視化された図を生成する可視化図生成ステップと、
前記再生ステップにより再生される前記テスト通過プログラムの作成過程と、前記可視化図生成ステップにより生成された図とを表示部に表示させるステップと、を含むことを特徴とするプログラミング能力診断方法。 In a program creation device in which a subject who has given a programming task creates a program that solves the programming task, the program is created by the subject, and a desired program output set by the questioner who has presented the programming task is obtained. And a test passing program that is composed of one processing module or a plurality of processing modules and that has obtained the desired program output and passed the test, and the subject passes the test. A program capability information diagnosis method for diagnosing the programming capability of the subject by reading program configuration information capable of restoring a plurality of intermediate generation programs generated in the process of creating a program,
A storage step for storing the test passing program and the program configuration information;
A reproduction step of reproducing the creation process of the test passing program based on the plurality of intermediate generation programs restored by the program configuration information;
Visualization diagram generation step of generating a diagram in which the processing procedure of each of the one processing module or the plurality of processing modules or the structure between the one processing module or the plurality of processing modules is visualized based on the test passing program When,
A method for diagnosing a programming ability, comprising: a process of creating the test passing program reproduced by the reproducing step, and a step of displaying a diagram generated by the visualized diagram generating step on a display unit.
前記テスト通過プログラムと前記プログラム構成情報とを記憶する記憶部と、
前記プログラム構成情報により復元される前記複数の中間生成プログラムに基づいて、前記テスト通過プログラムの作成過程を再生する再生部と、
前記テスト通過プログラムに基づいて、前記一の処理モジュール若しくは前記複数の処理モジュール各々の処理手順又は前記一の処理モジュール若しくは前記複数の処理モジュール間の構造が可視化された図を生成する可視化図生成部と、
前記再生部により再生される前記テスト通過プログラムの作成過程と、前記可視化図生成部により生成された図とを表示部に表示させる制御部と、を備えるプログラミング能力診断装置として、コンピュータを機能させるためのコンピュータプログラム。 In a program creation device in which a subject who has given a programming task creates a program that solves the programming task, the program is created by the subject, and a desired program output set by the questioner who has presented the programming task is obtained. And a test passing program that is composed of one processing module or a plurality of processing modules and that has obtained the desired program output and passed the test, and the subject passes the test. A computer program for causing a computer to function as a programming ability diagnosis apparatus that reads program configuration information capable of restoring a plurality of intermediate generation programs generated in the process of creating a program and diagnoses the programming ability of the subject. A-time,
A storage unit for storing the test passing program and the program configuration information;
Based on the plurality of intermediate generation programs restored by the program configuration information, a playback unit that plays back the creation process of the test passing program;
Based on the test passing program, a visualization diagram generation unit that generates a diagram in which a processing procedure of each of the one processing module or the plurality of processing modules or a structure between the one processing module or the plurality of processing modules is visualized When,
In order to cause a computer to function as a programming ability diagnostic apparatus including a process for creating the test passing program reproduced by the reproduction unit and a control unit for displaying a diagram generated by the visualization diagram generation unit on a display unit Computer program.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009151714A JP2011008554A (en) | 2009-06-26 | 2009-06-26 | Programming ability diagnosis device, programming ability diagnosis method, and computer program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009151714A JP2011008554A (en) | 2009-06-26 | 2009-06-26 | Programming ability diagnosis device, programming ability diagnosis method, and computer program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011008554A true JP2011008554A (en) | 2011-01-13 |
Family
ID=43565128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009151714A Pending JP2011008554A (en) | 2009-06-26 | 2009-06-26 | Programming ability diagnosis device, programming ability diagnosis method, and computer program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011008554A (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015069368A (en) * | 2013-09-27 | 2015-04-13 | Kddi株式会社 | Communication terminal, management server, message exchange system, message exchange method, and message exchange program |
JP2015146176A (en) * | 2014-09-04 | 2015-08-13 | ギノ株式会社 | Programming skill evaluation apparatus, programming skill evaluation method, recruiting information selection apparatus, and recruiting information selection method |
JP2015185090A (en) * | 2014-03-26 | 2015-10-22 | Necソリューションイノベータ株式会社 | Operation shift support server, operation shift support method and program, and allocation time determination server, allocation time determination method and program |
JP2016192093A (en) * | 2015-03-31 | 2016-11-10 | 富士通株式会社 | Information processor and program |
JP2019185679A (en) * | 2018-04-17 | 2019-10-24 | カシオ計算機株式会社 | Web service providing method, program for web service provision, information processing device, and system equipped with the same |
JP2021060597A (en) * | 2020-12-14 | 2021-04-15 | 合同会社オフィス・ゼロ | Program creation support system and method and program therefor |
-
2009
- 2009-06-26 JP JP2009151714A patent/JP2011008554A/en active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015069368A (en) * | 2013-09-27 | 2015-04-13 | Kddi株式会社 | Communication terminal, management server, message exchange system, message exchange method, and message exchange program |
JP2015185090A (en) * | 2014-03-26 | 2015-10-22 | Necソリューションイノベータ株式会社 | Operation shift support server, operation shift support method and program, and allocation time determination server, allocation time determination method and program |
JP2015146176A (en) * | 2014-09-04 | 2015-08-13 | ギノ株式会社 | Programming skill evaluation apparatus, programming skill evaluation method, recruiting information selection apparatus, and recruiting information selection method |
JP2016192093A (en) * | 2015-03-31 | 2016-11-10 | 富士通株式会社 | Information processor and program |
JP2019185679A (en) * | 2018-04-17 | 2019-10-24 | カシオ計算機株式会社 | Web service providing method, program for web service provision, information processing device, and system equipped with the same |
JP7147240B2 (en) | 2018-04-17 | 2022-10-05 | カシオ計算機株式会社 | CONTENT DATA PROCESSING METHOD, WEB SERVICE PROVISION METHOD, PROGRAM, SERVER DEVICE, AND CONTENT DATA PROCESSING SYSTEM |
JP7416162B2 (en) | 2018-04-17 | 2024-01-17 | カシオ計算機株式会社 | Content data processing method, web service provision method, and program |
JP2021060597A (en) * | 2020-12-14 | 2021-04-15 | 合同会社オフィス・ゼロ | Program creation support system and method and program therefor |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10514998B2 (en) | Diagnostic tool and method for efficient software development | |
Kevic et al. | Tracing software developers' eyes and interactions for change tasks | |
JP2011008554A (en) | Programming ability diagnosis device, programming ability diagnosis method, and computer program | |
Moreira et al. | Automatic evaluation of digital libraries with 5SQual | |
Hayes et al. | Towards traceable test-driven development | |
Häser et al. | An integrated tool environment for experimentation in domain specific language engineering | |
Bass et al. | A comparison of requirements specification methods from a software architecture perspective | |
Elekes et al. | Assessing the specification of modelling language semantics: a study on UML PSSM | |
Eichelberger et al. | A comprehensive survey of UML compliance in current modelling tools | |
Ragnarsson et al. | ModRec: a tool to support empirical study design for Papyrus and the Eclipse Modeling Framework | |
Frank et al. | dqualizer: Domain-Centric Runtime Quality Analysis of Business-Critical Application Systems | |
Pourali | A User-Centric Approach to Improve the Quality of UML-like Modelling Tools and Reduce the Efforts of Modelling | |
Zou et al. | Understanding interaction differences between newcomer and expert programmers | |
JP2010282578A (en) | Skill diagnostic system, server, computer program, and skill diagnostic method | |
Hess et al. | On the Use of Scientific Workflows for Digital Humanities Research | |
Käsznar | A process and tool support for human-centred ontology verification | |
Braver et al. | How Developers Extract Functions: An Experiment | |
Zorn | Concern-driven reporting of declarative performance analysis results using natural language and visualization | |
Maciel | Model based testing-from requirements to tests | |
Li et al. | Technical Debt Management in OSS Projects: An Empirical Study on GitHub | |
Ding et al. | An Exploratory Study for GUI Posts on Stack Overflow | |
Sørhus | Applying Learning Analytics in the course TDT4100 at NTNU | |
Cuomo | A methodology and encoding scheme for evaluating the usability of graphical, direct manipulation style interfaces | |
Wautelet et al. | Investigating Quality Attributes in Behavior-Driven Development Scenarios: An Evaluation Framework and an Experimental Supporting Tool | |
Svoboda | Effectively Combining Static Code Analysis and Manual Code Reviews |