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 PDF

Info

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
Application number
JP2009151714A
Other languages
Japanese (ja)
Inventor
Takayuki Karaki
崇行 唐木
Chikafumi Yamane
慎史 山根
Yusuke Sadamori
祐亮 貞森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Keyence Corp
Original Assignee
Keyence Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Keyence Corp filed Critical Keyence Corp
Priority to JP2009151714A priority Critical patent/JP2011008554A/en
Publication of JP2011008554A publication Critical patent/JP2011008554A/en
Pending legal-status Critical Current

Links

Images

Abstract

PROBLEM TO BE SOLVED: To easily and rapidly diagnose the ability of solving a programming task while preventing a program from being incorrectly evaluated due to misunderstanding of content of the programming task.SOLUTION: The programming ability diagnosis device (client terminal 2A) reads, after a test whether a desired program output can be obtained is performed in the client terminal 2B, a successful program and program configuration information for restoring a plurality of intermediate programs generated in the process that a subject forms the successful program, to diagnose the programming ability of the subject. The process of forming the successful program is regenerated, and a drawing for visualizing each processing procedure of one or a plurality of processing modules or a structure of one processing module or that between a plurality of processing modules is generated. The process of forming the successful program and the generated drawing are displayed on a display part 25.

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, Patent Document 1 is a technique for reproducing the programming process, measuring the time elapsed in the programming process, counting the number of compilations in the programming process, and the like. There is a system. Specifically, the answering (coding) process of a programming task is grasped in real time and made into a database, the answering process (programming process) is reproduced based on the recorded data, the elapsed time of programming is measured, the progress By visualizing the number of input characters with respect to time and a graph of compilation timing, it is possible to grasp the thinking process of each learner (subject) and the part of lack of understanding, and thus the degree of programming proficiency.

特開2006−227218号公報(段落[0007]等)JP 2006-227218 A (paragraph [0007] etc.)

一般に、ある程度規模の大きなプログラムを作成する場合には、バグ修正のしやすさ、メンテナンス効率等の観点から、論理構造がシンプルかつ明確なプログラムが好ましい。例えば、個々の関数モジュールを単に先頭から順番に羅列していくプログラムよりも、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.

本発明の実施形態に係るプログラミング能力診断装置(クライアント端末)が用いられるシステムのシステム構成を示す概念図である。It is a conceptual diagram which shows the system configuration | structure of the system by which the programming capability diagnostic apparatus (client terminal) which concerns on embodiment of this invention is used. 図1に示すサーバのハードウェア構成例を示すブロック図である。It is a block diagram which shows the hardware structural example of the server shown in FIG. クライアント端末のハードウェア構成例を示すブロック図である。It is a block diagram which shows the hardware structural example of a client terminal. プログラミング課題に対する被験者の解答データをサーバからクライアント端末にダウンロードするまでのプロセスを示すフローチャートである。It is a flowchart which shows the process until it downloads the test subject's answer data with respect to a programming subject from a server to a client terminal. トップメニュー画面の一例である。It is an example of a top menu screen. 課題登録画面の一例である。It is an example of an assignment registration screen. 登録設定ダイアログ画面の一例である。It is an example of a registration setting dialog screen. 課題URL発行画面の一例である。It is an example of an assignment URL issue screen. 発行設定ダイアログ画面の一例である。It is an example of an issue setting dialog screen. 課題出題者が操作するクライアント端末の表示部に表示される発行画面の一例である。It is an example of the issue screen displayed on the display part of the client terminal which a subject questioner operates. 発行画面の一例である。It is an example of an issue screen. 課題表示/編集エリアにまだ何も入力されていない様子を示している。This shows that nothing has been entered in the assignment display / edit area. 課題出題者が被験者に受けさせたい課題の内容(課題文)が表示されている様子を示す図である。It is a figure which shows a mode that the content (problem sentence) of the task which a subject question person wants a test subject to receive is displayed. 警告表示がなされている様子を示す図である。It is a figure which shows a mode that the warning display is made. エラー表示がなされている様子を示す図である。It is a figure which shows a mode that the error display is made. 課題出題者が被験者の解答を確認するための解答確認画面の一例である。It is an example of the answer confirmation screen for a subject questioner to confirm a test subject's answer. 再生観察アプリがインストールされた後のクライアント端末のソフトウェア的な機能を示す機能ブロック図である。It is a functional block diagram which shows the software function of the client terminal after the reproduction | regeneration observation application is installed. クライアント端末において再生観察アプリを起動したときに、表示部に表示される起動画面を示す図である。It is a figure which shows the starting screen displayed on a display part when a reproduction | regeneration observation application is started in a client terminal. 分析対象となるデータファイルが1個追加された様子を示す図である。It is a figure which shows a mode that one data file used as analysis object was added. テスト通過プログラムの作成過程が再生されている様子を示す図である。It is a figure which shows a mode that the creation process of the test passing program is reproduced | regenerated. 被験者によってビルドが1回行われている様子を示す図である。It is a figure which shows a mode that the build is performed once by the test subject. 再生欄に、プログラミング課題が表示されている様子を示す図である。It is a figure which shows a mode that the programming task is displayed on the reproduction | regeneration column. 図21と比べて更に多くの時間が経過したときの様子を示す図である。It is a figure which shows a mode when more time has passed compared with FIG. 最後に生成された中間生成プログラムが表示されている様子を示す図である。It is a figure which shows a mode that the intermediate production | generation program produced | generated last is displayed. 実時間ベースでの再生について説明するための図である。It is a figure for demonstrating reproduction | regeneration on a real time basis. プログラミング作成過程を分析するための図を表示する分析モードのうち、各パラメータ推移の様子を示す図である。It is a figure which shows the mode of each parameter transition among the analysis modes which display the figure for analyzing a programming preparation process. プログラミング作成過程を分析するための図を表示する分析モードのうち、関数ライフサイクルを示す図である。It is a figure which shows a function life cycle among the analysis modes which display the figure for analyzing a programming creation process. プログラミング作成過程を分析するための図を表示する分析モードのうち、フローチャートを示す図である。It is a figure which shows a flowchart among analysis modes which display the figure for analyzing a programming preparation process. プログラミング作成過程を分析するための図を表示する分析モードのうち、フローチャートを示す図である。It is a figure which shows a flowchart among analysis modes which display the figure for analyzing a programming preparation process. 二人の被験者の各パラメータ推移を比較している様子を示す図である。It is a figure which shows a mode that each parameter transition of two test subjects is compared. 横軸だけでなく、縦軸も正規化されている様子を示す図である。It is a figure which shows a mode that not only a horizontal axis but the vertical axis | shaft is also normalized. それぞれ二人の被験者の関数ライフサイクルを比較している様子を示す図である。It is a figure which shows a mode that each compares the function life cycle of two test subjects. それぞれ三人の被験者のフローチャートを比較している様子を示す図である。It is a figure which shows a mode that each compares the flowchart of three test subjects. それぞれ三人の被験者のコード重複を比較している様子を示す図である。It is a figure which shows a mode that the code duplication of each of three test subjects is compared. 図26と異なり、パラメータ設定における横軸値のラジオボタンのクリック位置を、操作回数から時間に代えている様子を示す図である。FIG. 27 is a diagram showing a state where the click position of the radio button of the horizontal axis value in parameter setting is changed from the number of operations to time, unlike FIG. 被験者が何も操作していない時間帯(待ち)が所定時間発生したときに、キャラクターの表情を変える表情モード設定画面の一例である。It is an example of a facial expression mode setting screen that changes the facial expression of a character when a time period (waiting) during which the subject is not operating anything occurs for a predetermined time. 解答DBに記憶されるデータ構成の例示図である。It is an illustration figure of the data structure memorize | stored in answer DB. 提示されるプログラミング課題の具体例を示す例示図である。It is an illustration figure which shows the specific example of the programming subject shown. 提示されたプログラミング課題に応じて被験者が作成したC言語によるプログラムの例示図である。It is an illustration figure of the program by the C language which the test subject created according to the presented programming subject. サーバのCPUのデータ収集処理の手順を示すフローチャートである。It is a flowchart which shows the procedure of the data collection process of CPU of a server. CPUの能力評価値算出の処理手順のフローチャートを示す。The flowchart of the process sequence of capability evaluation value calculation of CPU is shown. サーバによって算出された複雑度の推移データの例示図である。It is an illustration figure of transition data of the complexity calculated by the server. サーバによって算出された近似曲線の例示図である。It is an illustration figure of the approximated curve calculated by the server. サーバによって抽出された有効区間の例示図である。It is an illustration figure of the effective area extracted by the server. 有効区間を補正する必要がある場合の、サーバによって作成された近似曲線の例示図である。It is an illustration figure of the approximated curve created by the server when it is necessary to correct | amend an effective area. 特徴的な4名の被験者A、B、C、Dの複雑度の推移データを示す例示図である。It is an illustration figure which shows the transition data of the complexity of four characteristic subjects A, B, C, and D. FIG. 図46と異なり正方向を逆転させている様子を示す図である。It is a figure which shows a mode that the positive direction is reversed unlike FIG. 診断レポート(1枚目)の一例を示す図である。It is a figure which shows an example of a diagnostic report (1st sheet). 診断レポート(2枚目)の一例を示す図である。It is a figure which shows an example of a diagnostic report (2nd sheet).

以下、本発明の実施の形態に係るプログラミング能力診断装置について、図面を参照しながら具体的に説明する。まずは、プログラミング能力診断装置が用いられるシステムの概要について説明する。   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 (client terminal 2A in FIG. 1) according to an embodiment of the present invention is used. A usage example of this system will be described as a specific example.

第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 client terminal 2A as a programming ability diagnostic device and a server 1. As the system operation company, for example, a company that operates a temporary staffing business can be considered. The server 1 is installed in a predetermined data center by a system operating company, and is connected to a client terminal 2A in the system operating company via a communication network 100 such as the Internet. The server 1 is also connected to client terminals 2B (for example, home PCs) owned by a plurality of programmers registered with the system operating company (for example, personnel dispatch registration).

システム運用企業に在籍する人材評価担当者は、クライアント端末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 server 1 by operating the client terminal 2A, registers a programming task to be received by a programmer as a test subject (for example, a programmer who has registered personnel dispatch), and The URL of the link destination that can input the answer to the programming task is acquired. Then, the URL is separately notified to the subject by e-mail or telephone. The URL indicates the location of a programming task (file) that exists in the server 1. The subject operates his / her client terminal 2B at his convenience or within a predetermined time limit, accesses the link destination (web page) indicated by the URL, and inputs an answer to the programming task. The input answer is sent to the server 1 and stored in a predetermined storage area in the server 1. Thereafter, the person in charge of personnel evaluation operates the client terminal 2A to access the server 1, confirms the content of the answer input by the subject, downloads the content to the client terminal 2A, and diagnoses the programming ability of the subject. . Details of the diagnostic contents of the programming ability will be described later in [Programming ability diagnosis].

第2の利用形態は、サーバ1のみを、システム運用企業が保有している利用形態である。プログラミング能力診断装置としてのクライアント端末2A、被験者が操作するクライアント端末2Bは、システム運用企業とシステム利用契約を締結したシステム利用企業が保有している。システム運用企業としては、プログラミング能力診断サービスを提供するSaaS(Software as a Service)企業、システム利用企業としては、プログラマを数多く抱えるソフトウェア会社などである。企業ではないが、プログラミング授業が数多くある情報系大学なども、システム利用者になり得る。   The second usage mode is a usage mode in which only the server 1 is owned by the system operating company. A client terminal 2A as a programming ability diagnostic device and a client terminal 2B operated by a subject are owned by a system use company that has concluded a system use contract with a system operation company. Examples of system operating companies include software as a service (SaaS) companies that provide a programming ability diagnosis service, and examples of system using companies include software companies that have many programmers. An information university that is not a company but has many programming classes can be a system user.

システム運用企業に在籍するSaaS担当者は、サーバ1を所定のデータセンター内に設置し、システム利用企業のシステム利用契約を締結する。システム利用企業に在籍する人事担当者は、被験者となるプログラマ(例えば採用を検討しているプログラマ)に受けさせたいプログラミング課題を登録する。あとは、第1の利用形態と同様である。すなわち、被験者となるプログラマにURLが連絡され、被験者はクライアント端末2Bを操作して、URLが示すサーバ1内のリンク先にアクセスし、プログラミング課題に対する解答を入力する。その後、人事担当者は、クライアント端末2Aを操作してサーバ1にアクセスし、被験者によって入力された解答の内容を確認し、その内容をクライアント端末2Aにダウンロードし、被験者のプログラミング能力を診断する。   The SaaS person in charge at the system operation company installs the server 1 in a predetermined data center and concludes a system use contract of the system use company. A person in charge of personnel in a system user company registers a programming task that a programmer (for example, a programmer who is considering hiring) as a test subject wants to receive. The rest is the same as the first usage pattern. That is, the URL is communicated to the programmer as the subject, and the subject operates the client terminal 2B to access the link destination in the server 1 indicated by the URL, and inputs an answer to the programming task. Thereafter, the personnel officer operates the client terminal 2A to access the server 1, confirms the content of the answer input by the subject, downloads the content to the client terminal 2A, and diagnoses the programming ability of the subject.

このように、本実施形態では、上述した第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 server 1 to the client terminal via the communication network 100. Download to 2A. Thereby, the answer content of the subject can be acquired easily and quickly on the client terminal 2A, and the programming ability of the subject can be diagnosed easily and quickly. In particular, when the number of subjects increases, diagnosis can be performed more easily and more quickly.

なお、プログラミング能力診断装置としてのクライアント端末2Aは、必ずしも図1に示すシステムに組み込まれる必要はない。プログラミング課題に対する被験者の各種解答データを、USBやDVDなどの記録媒体でクライアント端末2Aに移動させることによって、クライアント端末2A上でのプログラミング能力診断は可能になる。   Note that the client terminal 2A as the programming capability diagnosis device does not necessarily have to be incorporated in the system shown in FIG. By moving various answer data of the test subject to the programming task to the client terminal 2A using a recording medium such as USB or DVD, the programming ability diagnosis on the client terminal 2A becomes possible.

以下では、クライアント端末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 client terminal 2A. First, the process up to downloading the answer data of the subject to the programming task from the server 1 to the client terminal 2A via the communication network 100 will be described in detail (see [Acquisition of Answer Data]). Thereafter, the programming ability diagnosis performed on the client terminal 2A will be described in detail using the answer data obtained by downloading (see [Programming ability diagnosis] described later).

[解答データの取得]
図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 server 1 illustrated in FIG. In the system shown in FIG. 1, the number of servers 1 is one, but the number of servers 1 may be distributed. Further, when considering a multi-tenant (for example, a case where a plurality of companies become system use companies in the second usage mode described above), more client terminals 2A and 2B are connected to the server 1. .

図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 server 1 stores a CPU (Central Processing Unit) 11 that performs numerical calculation and information processing based on various programs and controls each part of the hardware, a startup program, an initialization program, and the like. A ROM (Read Only Memory) 12, a RAM (Random Access Memory) 13 that functions as a work area when the CPU 11 executes various programs, a communication unit 16 that is communicably connected to the external communication network 100, And an HDD (Hard Disk Drive) 17 functioning as auxiliary storage means, and communication between them is performed via a bus such as a data bus or an address bus.

サーバ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 HDD 17 of the server 1 is installed with an OS (Operating System) that executes various applications and manages the entire server 1 in an integrated manner (not shown). In addition, as an application (application) to be executed on the OS, a task to be presented to the subject is selected and set, and a task setting / answer confirmation application 172 for confirming the subject's answer and the subject's skill are quantitatively determined. Information such as HTML (Hyper Text Markup Language) documents, XML (Extensible Markup Language) documents, images, etc. in response to requests from the productivity / quality evaluation application 174 and the web browser application 272 of the client terminals 2A and 2B Is installed to the client terminals 2A and 2B. By installing the web application 175, the server 1 can function as a web server. Each application is loaded (deployed) from the HDD 17 to the RAM 13 and executed by the CPU 11 based on each application program.

このように、サーバ1は、ユーザによるクライアント端末2A,2Bの受付部24の操作によって、サーバ1から送信された画像などの情報を表示部25に表示させるユーザインタフェースを提供するために、OSやウェブアプリ175などを有する。   As described above, the server 1 provides the user interface for displaying information such as an image transmitted from the server 1 on the display unit 25 by the operation of the reception unit 24 of the client terminals 2A and 2B by the user. A web application 175 is included.

さらに、サーバ1のHDD17は、被験者に出題する課題を登録する課題データベース(DBと略す。以下同様)176と、システム利用権限を有する課題出題者を登録するための出題者DB178と、クライアント端末2A,2Bに送信するHTML文書や画像などが格納される発行DB179と、被験者から取得した解答を格納する解答DB180と、を有している。   Further, the HDD 17 of the server 1 has an assignment database (DB, abbreviated hereinafter) 176 for registering assignments to be given to subjects, a question assignment DB 178 for registering assignment candidates having system use authority, and a client terminal 2A. , 2B, an issue DB 179 for storing HTML documents and images to be transmitted, and an answer DB 180 for storing answers obtained from subjects.

より具体的に説明すると、課題DB176は、過去の課題(ソフトウェア資産)を容易に再利用することができるようにするために、課題出題者によって作成されたプログラミング課題の課題名や課題内容を登録(記憶)しておくDBである。出題者DB178は、課題出題者としてシステムの利用する権限があるか否かを確認するために、課題出題者のログインIDやパスワードを登録しておくDBである。発行DB179は、被験者がプログラミング課題に対する解答を入力するための画面を被験者のクライアント端末2Bに表示させるHTML文書や画像などを格納しておくDBである。それらのHTML文書や画像などは、後述するクライアント端末2Bのウェブブラウザアプリ272(図3)からの要求に応じて、被験者のクライアント端末2Bに送信される。解答DB180は、被験者から取得した解答、すなわち(例えば被験者がソースコードを1文字入力するごとに)クライアント端末2Bから送られてきたログデータ(被験者が作成したソースコード)を格納(記憶)しておくDBである。詳細は後述するが、そのログデータをサーバ1が受信したタイミングも解答DB180に格納される。   More specifically, the assignment DB 176 registers the assignment name and contents of the programming assignment created by the assignment examiner so that past assignments (software assets) can be easily reused. This is a DB to be stored. The question-taker DB 178 is a DB in which the login ID and password of the question-taker questioner are registered in order to confirm whether or not there is an authority to use the system as the question-taker questioner. The issue DB 179 is a DB that stores an HTML document, an image, or the like that causes the subject's client terminal 2B to display a screen for the subject to input an answer to the programming task. Those HTML documents and images are transmitted to the client terminal 2B of the subject in response to a request from the web browser application 272 (FIG. 3) of the client terminal 2B described later. The answer DB 180 stores (stores) the answer obtained from the subject, that is, log data (source code created by the subject) sent from the client terminal 2B (for example, every time the subject inputs a source code). This DB Although details will be described later, the timing at which the server 1 receives the log data is also stored in the answer DB 180.

なお、サーバ1のHDD17は、フラッシュメモリやUSB(Universal Serial Bus)メモリ(及びメモリコントローラ)、光ディスクドライブ等で代替することもできる。また、各アプリケーションプログラムは、予めHDD17に格納することもできるし、CDやDVD等の記録媒体からHDD17に格納することもできるし、通信ネットワーク100を介して外部のコンピュータからダウンロードされ、HDD17に格納することもできる。さらに、説明の便宜上、上述したアプリは別々に一のHDD17に格納されていることとするが、複数のHDD17に分散して格納することもできるし、また、複数のアプリが統合されたものが一のHDD17に格納することもできる。   The HDD 17 of the server 1 can be replaced with a flash memory, a USB (Universal Serial Bus) memory (and a memory controller), an optical disk drive, or the like. Each application program can be stored in the HDD 17 in advance, or can be stored in the HDD 17 from a recording medium such as a CD or DVD, or downloaded from an external computer via the communication network 100 and stored in the HDD 17. You can also Further, for convenience of explanation, the above-described applications are separately stored in one HDD 17, but can be distributed and stored in a plurality of HDDs 17, and a plurality of applications are integrated. It can also be stored in one HDD 17.

図3は、クライアント端末2のハードウェア構成例を示すブロック図である。なお、課題出題者が操作するクライアント端末2Aのハードウェア構成と、被験者が操作するクライアント端末2Bのハードウェア構成とは同様であるので、特に区別することなく、クライアント端末2のハードウェア構成として説明する。なお、プログラミング能力診断装置として機能するクライアント端末2Aの詳細については、図17に示す機能ブロック図を用いて別途後述する。   FIG. 3 is a block diagram illustrating a hardware configuration example of the client terminal 2. Note that the hardware configuration of the client terminal 2A operated by the subject person and the hardware configuration of the client terminal 2B operated by the subject are the same, and therefore, the hardware configuration of the client terminal 2 will be described without particular distinction. To do. Note that details of the client terminal 2A functioning as a programming ability diagnostic device will be separately described later using a functional block diagram shown in FIG.

図3に示すように、クライアント端末2は、CPU21と、ROM22と、RAM23と、マウスやキーボード等によりユーザの操作を受け付ける受付部24と、モニタ等の表示部25と、ネットワークカード等の通信部26とがバスを介して接続されている。これら各部が提供する機能は、基本的にサーバ1の対応する各部と同様である。また、クライアント端末2はHDD27を有しており、このHDD27には、受付部24及び表示部25による入出力機能や、各種アプリケーションを実行するための機能、および、表示部25においてGUIを利用するための機能などを提供するとともに、クライアント端末2全体を統合的に管理するOSがインストールされている(図示せず)。   As shown in FIG. 3, the client terminal 2 includes a CPU 21, a ROM 22, a RAM 23, a receiving unit 24 that receives a user operation using a mouse or a keyboard, a display unit 25 such as a monitor, and a communication unit such as a network card. 26 is connected via a bus. The functions provided by these units are basically the same as the corresponding units of the server 1. The client terminal 2 has an HDD 27, and the HDD 27 uses an input / output function by the receiving unit 24 and the display unit 25, a function for executing various applications, and a GUI in the display unit 25. For example, an OS for managing the entire client terminal 2 is installed (not shown).

また、OS上で実行されるアプリケーション(アプリ)として、電子メールの送受信を行う電子メールアプリ271と、課題出題者が出題したプログラミング課題をウェブ上で閲覧するためのウェブブラウザアプリ272とがインストールされている。ウェブブラウザアプリ272のインストールによって、クライアント端末2はウェブクライアントとして機能し得る。これらの各アプリケーションは、アプリケーションプログラムがHDD27からRAM23にロード(展開)され、各アプリケーションプログラムに基づきCPU21によって実行される。なお、サーバ1のHDD17と同様に、クライアント端末2のHDD27も、フラッシュメモリやUSBメモリ(及びメモリコントローラ)、光ディスクドライブ等で代替することが可能である。   In addition, as an application (application) executed on the OS, an e-mail application 271 that transmits and receives e-mails and a web browser application 272 for browsing a programming problem on which questions are given by the challenger are installed. ing. By installing the web browser application 272, the client terminal 2 can function as a web client. For each of these applications, an application program is loaded (expanded) from the HDD 27 to the RAM 23 and is executed by the CPU 21 based on each application program. As with the HDD 17 of the server 1, the HDD 27 of the client terminal 2 can be replaced with a flash memory, a USB memory (and a memory controller), an optical disk drive, or the like.

図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 server 1 to the client terminal 2A via the communication network 100 using the system shown in FIG. The outline of each process will be explained. Step S1 for logging in to the server 1 in order to register the programming task in the server 1 in order to register the programming task in the server 1, and creating the programming task that the questioner wants the subject to receive Then, in step S2, which is registered in the server 1, the questioning person wants to give the subject a programming task (which may be registered in step S2, may be one that he has registered in the past, or another questioning person may Step S3 for selecting (which may have been registered in), Step S4 for setting (issuing) a URL indicating a website for inputting an answer to the selected programming task, and a subject who is informed of the URL by e-mail or the like Accesses the website indicated by the URL in step S5, subject's program Step S6 accepting input of answers to timing issues, questions who question the programming challenge, step S7 confirms answers of the subject and, to diagnose and programming capability, step S8 to perform the skill evaluation consists flow of.

図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 client terminal 2 </ b> A and accesses the server 1 (to a predetermined link destination) via the communication network 100. When the client terminal 2A requests the server 1 to transmit an HTML document or the like for displaying a login screen on the display unit 25, the CPU 11 transmits the HTML document or the like to the client terminal 2A.

課題出題者は、クライアント端末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 client terminal 2A. Then, after the login ID and password are sent to the server 1 and collation thereof is performed, the login of the subject questioner is completed. As described above, the login ID and password are collated by the CPU 11 accessing the questioner DB 178 in the HDD 17. As a result, it is confirmed that the task candidate has the authority to use the skill diagnosis system. If verification fails, login is rejected.

課題出題者のログインが完了すると、プログラミングスキル診断システムのトップメニューが表示される。具体的には、サーバ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 CPU 11 of the server 1 receives the operation signal from the reception unit 24 of the client terminal 2A and recognizes the login of the questioning person, the CPU 11 displays the top menu screen on the display unit 25 of the client terminal 2A.

図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 assignment registration button 61 for registering a new assignment and editing assignment contents, an assignment URL issue button 62 for setting and issuing a URL for setting a programming assignment. An answer confirmation button 63 for confirming the answer of the subject is arranged in this order from the top. In this way, buttons for performing task registration, URL issuance, and task confirmation are arranged on one screen of the top menu screen, so that the task candidate creates a programming task that the subject wants to receive, and the server 1 (Step S2 in FIG. 4), selecting a programming task that the subject wants to receive (step S3 in FIG. 4), and setting a URL indicating a website for inputting an answer to the selected programming task A series of operations of (issuing) (step S4 in FIG. 4) and confirming the answer of the subject (step S7 in FIG. 4) can be performed easily and quickly.

解答確認ボタン63の右方には、新着解答の件数を示す解答新着件数表示欄64が配置されている。これにより、課題出題者は、トップメニュー画面を視認すると同時に、被験者からの解答がサーバ1に届いているかどうかを確認することができる。   On the right side of the answer confirmation button 63, an answer newly arrived number display column 64 indicating the number of newly arrived answers is arranged. As a result, the challenger can check whether the answer from the subject has arrived at the server 1 at the same time as viewing the top menu screen.

次に、課題出題者は、図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 assignment registration button 61 on the top menu screen is clicked by the assignment examiner, the assignment registration screen is displayed on the display unit 25 of the client terminal 2A.

図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 server 1. The “difficulty” is a comment by the registrant. Whether the difficulty level is high or low is displayed as a comment based on the personal opinion of the registrant. In addition, when there is no assignment registered by the assignment candidate, it is displayed blank.

図6に示す課題登録画面において、課題一覧表の下方には、新しい課題を登録するための新規登録ボタン617と、選択されている課題を編集目的で開くための開くボタン618とが配置され、これらのボタンの更に下方に、トップメニュー画面にリンクが張られた文字「TOP」619が表示されている。   In the assignment registration screen shown in FIG. 6, a new registration button 617 for registering a new assignment and an open button 618 for opening the selected assignment for editing are arranged below the assignment list. Further below these buttons, a letter “TOP” 619 linked to the top menu screen is displayed.

課題の登録手順としては、上述した新規登録ボタン617をクリックして新しく課題を登録するか、上述した開くボタン618をクリックして過去の課題を編集するか、の2種類がある。いずれの登録手順でも、登録設定ダイアログ画面が表示され、登録条件の設定に移る。   There are two types of procedure for registering assignments: clicking the above-mentioned new registration button 617 to register a new assignment, or clicking the above-mentioned open button 618 to edit a past assignment. Regardless of the registration procedure, the registration setting dialog screen is displayed, and the process proceeds to setting the registration conditions.

図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 open button 618 is clicked. When the new registration button 617 is clicked, all the dialog screens are not set (blank display). )become. As described above, the open button 618 is arranged side by side under the new registration button 617, and the registration setting dialog screen in which past assignments are automatically read is displayed by clicking the open button 618. Thus, the issuer can easily reuse past issues (past assets).

例えば、課題「英単語カウント」の派生課題を作りたい場合には、図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 open button 618. Then, the content is arranged on the registration setting dialog screen shown in FIG. 7, another task name (such as “English word count 2”) is input in the task name text box 6181, and the registration button 6189 is clicked. As a result, the issuer can easily create a derivative issue of a past issue.

図7に示す登録設定ダイアログ画面の上方には、課題名を新規入力できる課題名テキストボックス6181、CかJAVA(登録商標)などの言語を選択できる言語リストボックス(プルダウンメニュー)6182が設けられている。課題名テキストボックス6181を設けておけば、上述したように、容易に派生課題を作ることができる。また、言語リストボックス6182を設けておけば、課題出題者がC言語かJAVA(登録商標)言語かを自由に選択することができるとともに、将来的に、課題サポート言語(Rubyなど)が増えた場合に容易に追加することができる。   Above the registration setting dialog screen shown in FIG. 7, an assignment name text box 6181 in which an assignment name can be newly entered, and a language list box (pull-down menu) 6182 in which a language such as C or JAVA (registered trademark) can be selected are provided. Yes. If an assignment name text box 6181 is provided, a derived assignment can be easily created as described above. In addition, if the language list box 6182 is provided, the question candidate can freely select C language or JAVA (registered trademark) language, and the number of issue support languages (such as Ruby) will increase in the future. Can be easily added to the case.

言語リストボックス6182の下方には、プログラミング課題の内容を直接入力するための課題内容登録エリア6183が配置されている。文章のみの課題の場合には、テキスト形式で課題を作成することができるし、課題に図を入れたい場合には、PDF形式或いはJPEG形式で課題を作成することができる。本実施形態では、課題内容登録エリア6183の初期状態はテキストボックスとしている。したがって、課題出題者が課題文を登録するときには、この課題内容登録エリア6183に直接課題文を書いてもよいし、別の文書からコピー&ペーストしてもよい。   Below the language list box 6182, an assignment content registration area 6183 for directly inputting the contents of the programming assignment is arranged. In the case of a text-only task, the task can be created in a text format, and in the case where it is desired to add a diagram to the task, the task can be created in a PDF format or a JPEG format. In this embodiment, the initial state of the task content registration area 6183 is a text box. Therefore, when a task candidate registers a task text, the task text may be directly written in the task content registration area 6183, or may be copied and pasted from another document.

課題内容登録エリア6183の下方には、自動単体テストのためのテストコードを直接入力し、登録するためのテストコード登録エリア6185が配置されている。自動単体テストとは、被験者が作成したプログラムについて、プログラミング課題を出題した出題者により設定された所望のプログラム出力が得られるか否かのテストのことであり、サーバ1を通じて被験者のクライアント端末2Bにおいて実行される。本来は、この自動単体テストは被験者がクライアント端末2Bにおいて実行するものであるが、図7に示す登録設定ダイアログ画面の最下方にテストボタン6187を設けることによって、課題出題者は、課題内容を登録する段階において、プログラミング課題に対する解答を自分で試作してみるとともに、試作したプログラムについて自動単体テストを実行してみることができる。自動単体テストを実行するためのテストボタン6187の詳細については、後述する。なお、内容のクリアボタン6186をクリックすれば、テストコード登録エリア6185に入力した内容が消去される。   Below the assignment contents registration area 6183, a test code registration area 6185 for directly inputting and registering a test code for automatic unit testing is arranged. The automatic unit test is a test of whether or not a desired program output set by a questioner who has given a programming task can be obtained for a program created by the subject, and is executed at the client terminal 2B of the subject through the server 1. Is done. Originally, this automatic unit test is performed by the subject on the client terminal 2B, but by providing a test button 6187 at the bottom of the registration setting dialog screen shown in FIG. At the stage, you can try out the answers to your programming tasks yourself and run automated unit tests on the prototyped program. Details of the test button 6187 for executing the automatic unit test will be described later. If the clear content button 6186 is clicked, the content entered in the test code registration area 6185 is deleted.

図7において、登録設定ダイアログ画面の下方に配置された登録ボタン6189は、課題内容登録エリア6183やテストコード登録エリア6185に入力した設定内容に従って、プログラミング課題を登録するためのボタンであり、キャンセルボタン6188は、課題内容登録エリア6183やテストコード登録エリア6185に入力した設定内容を破棄してダイアログを閉じるボタンである。前者の登録ボタン6189について具体的に説明すると、CPU11は、課題内容登録エリア6183やテストコード登録エリア6185に入力された設定内容を、HDD17の課題DB176に登録する。   In FIG. 7, a registration button 6189 arranged at the bottom of the registration setting dialog screen is a button for registering a programming task in accordance with the setting content input in the task content registration area 6183 and the test code registration area 6185, and a cancel button. Reference numeral 6188 denotes a button for discarding the setting contents input in the assignment contents registration area 6183 and the test code registration area 6185 and closing the dialog. The former registration button 6189 will be specifically described. The CPU 11 registers the setting contents input in the assignment content registration area 6183 and the test code registration area 6185 in the assignment DB 176 of the HDD 17.

次に、課題出題者は、図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 URL issue button 62 on the top menu screen is clicked by the assignment examiner, the assignment URL issue screen is displayed on the display unit 25 of the client terminal 2A.

図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 issue date 621, assignment name 622, expiration date 623, issuer 624, and purpose 625 from the left column. Yes. The items of issue date 621, assignment name 622, and expiration date 623 are items that are automatically displayed by the system, and the issuer 624 and purpose 625 items are comments that are arbitrarily entered by the issuer. In particular, the expiry date 623 will be described in detail. It indicates whether or not the expiry date of the URL (the link destination indicated by the URL) issued by the question candidate has passed (whether or not the subject can use the URL). If the expiration date has not passed, a black circle is attached. If a question with a black circle is given, answers may be sent not only from the subject this time, but also from subjects who have already given the task, and management becomes complicated ( For tasks that are not marked with a black circle, the answer will not be sent from anyone other than the subject because the expiration date for access to the answer screen has passed. Therefore, by providing the item of the expiration date 623, the convenience of issue issue management can be enhanced. The details of the expiration date of the URL (link destination indicated by) will be described later with reference to FIG. In this specification, a URL is used as an identifier indicating a location where data such as an HTML file or an image is stored on the communication network 100 such as the Internet. This is called a URI (Uniform Resource Identifier). You can also

図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 new issue button 627, and the other is a method of selecting a past issue history and clicking a correction / reissue button 629. It is. In any of these procedures, a later-described issue setting dialog screen (see FIG. 9) is displayed on the display unit 25. Each setting item when the issue setting dialog is opened is that when the new issue button 627 is clicked, only the assignment name is set and all others are displayed in an unset state (displayed blank), while being corrected / reissued When the button 629 is clicked, it is displayed in a state where the conditions when it was issued in the past are set. As a result, when reusing URLs issued in the past, it is possible to save time and effort for the task giver to input the conditions again.

図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 list box 701 capable of selecting a currently registered issue for each issue name is displayed. This makes it possible to save the trouble of setting the URL expiration date and times when the URL is issued by changing only the task to be presented to the subject while setting the same as the past issue history.

リストボックス701の下には、発行するURL(で示されたリンク先)の有効期限を設定するために、テキストボックス等から構成されるURL有効期限入力欄702が表示される。URL有効期限入力欄702では、日時を指定する、発行からの期間を指定する、或いは、最終アクセスからの期間を指定する、という3種類の条件でURL(で示されたリンク先)の有効期限を設定することができる。これにより、仮にURLが漏洩した場合であっても、有効期限経過後のシステムの無断利用を防ぐことができる。また、URL(で示されたリンク先)の有効期限を設定することができれば、図8を用いて前述したように、有効期限が過ぎているリンク先のURLを一目で把握することができるので、課題発行管理の利便性を高めることができる。   Below the list box 701, a URL expiration date input field 702 composed of a text box or the like is displayed in order to set the expiration date of the URL to be issued (the link destination indicated by). In the URL expiry date input field 702, the expiry date of the URL (link destination indicated by) is specified under three types of conditions: designating the date and time, designating the period from issuance, or designating the period from the last access. Can be set. Thereby, even if the URL is leaked, unauthorized use of the system after the expiration date can be prevented. If the expiration date of the URL (link destination indicated by) can be set, the URL of the link destination that has expired can be grasped at a glance as described above with reference to FIG. The convenience of issue issue management can be improved.

URL有効期限入力欄702の下には、課題解答時に被験者にパスワード入力を要求するかどうかを設定するパスワード入力欄703が表示され、パスワード入力欄703の下には、時間制限入力欄704が表示されている。なお、パスワードの入力回数のカウントや、解答時間の計測は、CPU11の内蔵タイマや外付けタイマ等を用いることによって実現することができる。   Below the URL expiration date entry field 702, a password entry field 703 for setting whether or not the subject is requested to enter a password when answering the task is displayed. Below the password entry field 703, a time limit entry field 704 is displayed. Has been. Note that counting the number of times the password is input and measuring the answer time can be realized by using a built-in timer or an external timer of the CPU 11.

時間制限入力欄704の下には、発行タイトル入力欄705とメッセージ入力エリア706、及び解答入力フィールド設定欄707が表示されている。これらは、被験者が操作するクライアント端末2Bの表示部25に表示させる画面をカスタマイズする設定欄・設定エリアである。特に、解答入力フィールド設定欄707は、被験者が自分の氏名を入力する場合に、入力可能な文字数を制限することを可能にするとともに、被験者が自分の携帯メールアドレスを入力する場合に、入力可能な文字数を制限することを可能にする欄である。   Below the time limit input field 704, an issue title input field 705, a message input area 706, and an answer input field setting field 707 are displayed. These are setting fields / setting areas for customizing the screen to be displayed on the display unit 25 of the client terminal 2B operated by the subject. In particular, the answer input field setting field 707 allows the number of characters that can be entered to be limited when the subject inputs his / her name and can be entered when the subject inputs his / her mobile mail address. This is a field that makes it possible to limit the number of characters.

図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 test button 708, a cancel button 709, and an issue button 710 are arranged side by side. The test button 708 is a button for displaying the issuance screen shown in FIG. 10 according to the set content, and is a button for the subject questioner to confirm the content actually displayed to the subject. The test button 708 is a button for displaying an issuance screen for confirmation only, and a URL for actually inputting an answer to the programming task is not issued. That is, unlike the issue button 710 described later, the setting contents shown in FIG. 9 and the programming task are not associated with each other and stored in the issue DB 179. A cancel button 709 is a button for discarding the setting contents and closing the issue setting dialog.

そして、発行ボタン710は、図9に示す設定内容とプログラミング課題とを対応付けて、発行DB179に格納するためのボタンである。具体的に説明すると、課題出題者によって発行ボタン710がクリックされると、発行ボタン710の操作信号を受信したCPU11は、課題DB176から被験者に受けさせたい課題(図9でいえば課題「英単語カウント」)をRAM13上にコピーして読み出す。また、その課題に対し、図9に示す設定内容を対応付けて、HDD17内の発行DB179に格納する。このように、テストボタン708と異なり、発行ボタン710をクリックすることによって、実際に課題と設定内容が対応付けられて、HDD17内の発行DB179に格納される。発行DB179に格納されるファイルは、後述する図10に示す発行画面を、表示部25に表示させるために、HTML文書やXML文書等で格納される。   The issue button 710 is a button for associating the setting contents shown in FIG. 9 with the programming task and storing them in the issue DB 179. More specifically, when the issue button 710 is clicked by the issuer, the CPU 11 that has received the operation signal of the issue button 710 issues the subject that the subject wants to receive from the issue DB 176 (in FIG. Count “)” is copied onto the RAM 13 and read out. Further, the setting contents shown in FIG. 9 are associated with the problem and stored in the issue DB 179 in the HDD 17. As described above, unlike the test button 708, when the issue button 710 is clicked, the assignment and the setting contents are actually associated with each other and stored in the issue DB 179 in the HDD 17. The file stored in the issue DB 179 is stored as an HTML document, an XML document, or the like in order to display an issue screen shown in FIG.

また、発行ボタン710は、図9に示す設定内容に従って、例えば図10に示す発行画面をクライアント端末2Aの表示部25に表示させるためのボタンでもある。具体的に説明すると、課題出題者によって発行ボタン710がクリックされると、図9に示す設定内容に従って、図10に示す発行画面が自動的に生成され、その発行画面がクライアント端末2Aの表示部25に表示される。   Further, the issue button 710 is also a button for displaying, for example, the issue screen shown in FIG. 10 on the display unit 25 of the client terminal 2A in accordance with the setting contents shown in FIG. More specifically, when the issue button 710 is clicked by the issuer, the issue screen shown in FIG. 10 is automatically generated according to the setting contents shown in FIG. 9, and the issue screen is displayed on the display unit of the client terminal 2A. 25.

図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 display unit 25 of the client terminal 2A that is operated by the challenger. FIG. 11 shows a state where the issue screen shown in FIG. 10 is displayed on the browser of the display unit 25 in the client terminal 2A of the question giver. The URL (http: //www.abc000...) Of the issuance screen of FIG. 10 automatically generated as described above, that is, the URL 1000 shown in FIG. It is associated with the expiration date input in the URL expiration date input field 702 shown in FIG. 9, the password input in the password input field 703 shown in FIG. 10 and 11, the contents input in the issue title input field 705 and the message input area 706 in FIG. 9 are displayed. The issue screen shown in FIG. 10 is a screen displayed on the display unit 25 of the client terminal 2B operated by the subject, as will be described later.

次に、課題出題者が、図11に示す発行画面のURL1000をコピー&ペーストして、電子メールで被験者に送った後、電子メールを受信した被験者は、クライアント端末2Bを操作してそのURLにアクセスする(図4に示すステップS5)。具体的には、課題出題者のクライアント端末2A及び被験者のクライアント端末2Bにおいて、HDD27内の電子メールアプリ271が実行され、上述したURLが付された電子メールが、クライアント端末2Aからクライアント端末2Bへと送信される。   Next, after the subject questioner copies and pastes the URL 1000 of the issuance screen shown in FIG. 11 and sends it to the subject by e-mail, the subject who has received the e-mail operates the client terminal 2B to set the URL. Access is made (step S5 shown in FIG. 4). Specifically, the e-mail application 271 in the HDD 27 is executed in the client terminal 2A of the challenger and the client terminal 2B of the subject, and the e-mail with the URL described above is transferred from the client terminal 2A to the client terminal 2B. Is sent.

被験者は、クライアント端末2Bのウェブブラウザアプリ272を実行し、課題出題者によって選択された課題に対する解答を入力可能なウェブページを取得するために、電子メールに付されたURLにアクセスする(電子メール上で、ハイパーリンクされたURLをクリックすることもできる)。   The test subject executes the web browser application 272 of the client terminal 2B, and accesses the URL attached to the e-mail in order to obtain a web page in which an answer to the task selected by the task candidate can be input (e-mail) You can also click on the hyperlinked URL above).

サーバ1は、クライアント端末2Bのウェブブラウザアプリ272からの要求に応じて、発行DB179に格納されているHTML文書等をRAM13上にコピーして読み出して、通信部16を介して、それをクライアント端末2Bに送信する。これにより、課題出題者によって選択されたプログラミング課題に関する課題情報を、図11に示す発行画面を通じて被験者に伝える。   In response to a request from the web browser application 272 of the client terminal 2B, the server 1 copies and reads out an HTML document or the like stored in the issuance DB 179 on the RAM 13, and sends it to the client terminal via the communication unit 16. Send to 2B. As a result, task information related to the programming task selected by the task giver is transmitted to the subject through the issue screen shown in FIG.

次に、被験者は、クライアント端末2Bの表示部25に表示された、図11に示す発行画面を閲覧して、必要事項を入力した後、課題に対する解答入力を行う。すなわち、サーバ1側からみれば、課題に対する解答入力の受付が行われる(図4のステップS6)。   Next, the subject browses the issue screen shown in FIG. 11 displayed on the display unit 25 of the client terminal 2 </ b> B, inputs necessary items, and then inputs an answer to the task. That is, when viewed from the server 1 side, an answer input for the task is accepted (step S6 in FIG. 4).

図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 URL 1000, the content 801 entered by the assignment candidate in the issue title input field 705 (FIG. 9), the password entry field 802, and the assignment person in the message input area 706 (FIG. 9) ) (Symbol omitted), answerer name input field 803, mobile mail address input field 804, mobile mail address re-input field 805, and start button 806 are displayed.

被験者は、パスワード入力欄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 password input field 802, and enters the name and mail address in the answerer name input field 803 and the mobile mail address input field 804, and then starts. Click the button 806. Then, a programming screen (FIG. 12) is displayed on the display unit 25 of the client terminal 2B. Specifically, in response to a request from the web browser application 272 of the client terminal 2B, the web application 175 of the server 1 stores an HTML document or the like for displaying a programming screen on the display unit 25 on the RAM 13 from the issuance DB 179. Copy and read, and send it to the client terminal 2B. This provides a programming environment for the subject. FIG. 12 shows a state in which nothing has been entered in the assignment display / edit area 901 yet.

図12に示すプログラミング画面中、課題表示/編集エリア901の「課題」タブをクリックすると、例えば図13に示すように、課題出題者が被験者に受けさせたい課題の内容(課題文)が表示される(図7に示す課題内容登録エリア6183参照)。上述したように、課題内容が省略されている場合(課題内容は口頭などで既に伝えている場合)には、「課題」タブをクリックしても空欄表示となる。   When the “task” tab in the task display / edit area 901 is clicked in the programming screen shown in FIG. 12, the content (task text) of the task that the task giver wants to receive is displayed as shown in FIG. (See the task content registration area 6183 shown in FIG. 7). As described above, when the task content is omitted (when the task content has already been communicated verbally or the like), even if the “task” tab is clicked, a blank is displayed.

図12又は図13において、課題表示/編集エリア901は、「課題」タブによって課題内容を表示するエリアであるとともに、「編集」タブによってソースコードの作成・編集を行わせるエリアである。プログラミングをしている最中に、課題表示とソースコード編集は随時切り替えることができる。これにより、被験者は、課題を忘れた場合であっても課題内容を適宜確認することができる。   In FIG. 12 or 13, an assignment display / edit area 901 is an area for displaying assignment contents on the “issue” tab, and an area for creating and editing source code on the “edit” tab. You can switch between task display and source code editing at any time during programming. Thereby, the test subject can confirm the task content as appropriate even when the task is forgotten.

課題表示/編集エリア901の下に表示される出力エリア902は、被験者にとって標準出力(STDOUT)エリアになる。ここにはビルド結果やプログラムの出力結果などが表示される。例えば、図14に示すような警告表示がなされたり、図15に示すようなエラー表示がなされたりする。出力エリア902の下には、ビルドボタン903、実行ボタン904、テストボタン905、及び完了ボタン906が左から順に並んでいる。   An output area 902 displayed below the assignment display / edit area 901 is a standard output (STDOUT) area for the subject. The build results and program output results are displayed here. For example, a warning display as shown in FIG. 14 is made, or an error display as shown in FIG. 15 is made. Below the output area 902, a build button 903, an execution button 904, a test button 905, and a completion button 906 are arranged in order from the left.

ビルドボタン903は、サーバ1において作成中プログラムのビルドを行う。具体的に説明すると、被験者が課題表示/編集エリア901に入力したソースコードは、順次サーバ1に送られる。例えば、JavaScriptを利用して非同期通信を行い、サーバ1とクライアント端末2Bの間でXMLデータのやり取りを行うAjax(Asynchronous JavaScript+XML)を用いることができる。これにより、クライアント端末2Bは、被験者のプログラミング過程データ(ログデータ)をサーバ1に非同期で送り続けることができる。   A build button 903 builds a program being created in the server 1. More specifically, the source code input by the subject into the assignment display / edit area 901 is sequentially sent to the server 1. For example, it is possible to use Ajax (Asynchronous JavaScript + XML) that performs asynchronous communication using JavaScript and exchanges XML data between the server 1 and the client terminal 2B. Thereby, the client terminal 2B can continue sending the test subject's programming process data (log data) to the server 1 asynchronously.

なお、ログデータは、被験者がソースコードを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 server 1 every time the subject inputs one character of the source code. As a result, even if a part of the log data transmitted due to a communication failure or the like is lost, the server 1 can recover the log data (replenish the missing part) by receiving the subsequent log data. As a result, the reliability of the log data to be built can be improved. In addition to Ajax, any technique may be adopted as long as the server 1 can receive log data. For example, the log data may be sent to the server 1 at a predetermined timing (for example, reload timing) using DHTML (Dynamic Hyper Text Markup Language) that performs synchronous communication with the server 1. In addition, Flash (registered trademark) having a higher degree of freedom may be used on the premise of installation of a plug-in.

サーバ1のCPU11は、クライアント端末2Bから送られてきたログデータを、通信部16を介して受信すると、解答した被験者と対応付けてHDD17内の解答DB180に順次格納する。このとき、CPU11の内蔵タイマ又は外付けタイマ、或いは時計機能等によって、通信部16においてログデータを受信したタイミングが解答DB180に格納される。このタイミングは、後述する[プログラミング能力診断]又は[定量的なスキル評価]に用いられる。   When the CPU 11 of the server 1 receives the log data transmitted from the client terminal 2 </ b> B via the communication unit 16, the CPU 11 sequentially stores the log data in the answer DB 180 in the HDD 17 in association with the answered subject. At this time, the timing at which the communication unit 16 receives the log data is stored in the answer DB 180 by a built-in timer or an external timer of the CPU 11 or a clock function. This timing is used for [programming ability diagnosis] or [quantitative skill evaluation] described later.

このように、解答DB180にログデータが順次格納されている状態において、被験者がビルドボタン903をクリックすると、クライアント端末2BのCPU21は、通信部26を介してビルド実行命令をサーバ1に送信する。サーバ1のCPU11は、通信部16を介してビルド実行命令を受信すると、解答DB180から現在格納されているログデータ(それまで被験者が作成したソースコードに相当)を読み出して、ビルドを行う。ビルドについては、コンパイルとリンクを連動させて実行形式のファイルを自動生成する処理である。ビルドの過程で、文法エラーがあった場合等には、コンパイラのメッセージは出力エリア902に表示される。なお、本実施形態では、ビルドを行うタイミングで解答DB180からログデータを読み出すこととしたが、もしログデータの欠落があった場合には、ビルド結果の信頼性が低下する。そこで、例えばサーバ1は、ビルド実行命令を受けたタイミングで、クライアント端末2Bから再度ログデータを取り直すこともできる。これにより、ログデータの欠落がない状態でビルドできるので、ビルド結果の信頼性を高めることができる。   As described above, when the test subject clicks the build button 903 in a state where the log data is sequentially stored in the answer DB 180, the CPU 21 of the client terminal 2B transmits a build execution command to the server 1 via the communication unit 26. When the CPU 11 of the server 1 receives the build execution command via the communication unit 16, the CPU 11 reads the log data currently stored (corresponding to the source code created by the subject so far) from the answer DB 180 and performs the build. The build is a process for automatically generating an executable file by linking compile and link. If there is a syntax error during the build process, a compiler message is displayed in the output area 902. In the present embodiment, the log data is read from the answer DB 180 at the time when the build is performed. However, if the log data is missing, the reliability of the build result is lowered. Therefore, for example, the server 1 can retrieve log data from the client terminal 2B again at the timing of receiving the build execution instruction. As a result, the build can be performed without any missing log data, so that the reliability of the build result can be improved.

実行ボタン904は、作成中のプログラムを実行するためのボタンであり、これをクリックすることによって、ビルドにより自動生成された実行形式のファイルが開かれる。プログラムからの標準出力は、出力エリア902に表示される。作成中のソースコードに変更があった状態で実行ボタン904がクリックされると、変更後のソースコードについて未だビルドが行われていないので、「ビルドを行いますか?」といった表示とともに、ビルドを許容するOKボタンが、例えばポップアップウィンドウにより自動的になされる。そして、被験者は、ビルドボタン903を直接クリックすることによって、或いは、実行ボタン904をクリックした後に、ポップアップウィンドウのOKボタンをクリックする等してビルドを許容することで、自分が記述したソースコードに、文法エラーがないか否か等を確認することができる。なお、「ビルドを行いますか?」といった表示をせず、実行ボタン904がクリックされた場合にビルドされていないとき、自動的(強制的)にビルドされ、その後、自動的に実行形式のファイルが開かれるようにしてもよい。   The execution button 904 is a button for executing the program being created. By clicking this button, an executable file automatically generated by the build is opened. Standard output from the program is displayed in an output area 902. If the execution button 904 is clicked when the source code being created has been changed, the build has not yet been performed for the changed source code. The OK button to allow is automatically made by a pop-up window, for example. Then, the subject directly clicks the build button 903, or after clicking the execute button 904, allows the build by clicking the OK button in the pop-up window, etc. It is possible to check whether there are any grammatical errors. In addition, when it is not built when the execution button 904 is clicked without displaying “Do you want to build?”, It is built automatically (forced), and then automatically the executable file May be opened.

ここで、文法エラー等がない場合であっても、課題出題者が意図した出力結果が得られない可能性がある。そこで、被験者は、テストボタン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 test button 905. The test button 905 is a button for executing an automatic unit test, and the automatic unit test is a test for automatically checking whether or not the source code answered to the task is logically correct. In the test code registration area 6185 shown in FIG. 7 described above, a main function and a structure (struct) of the name TestCase (this name is an example and may be another name) are described (partially extracted). ). When the test subject clicks the test button 905, the test code registered by the question candidate through the test code registration area 6185 shown in FIG. 7 is merged with the source code described in the assignment display / edit area 901 shown in FIG. Is done. Thereafter, the automatically generated executable file is opened, and the output result is displayed in the output area 902. In this way, the subject can confirm whether or not the output result intended by the task candidate is obtained before submitting the task.

換言すれば、サーバ1のHDD17には、コンパイラやリンカとしての機能を提供するプログラミングアプリケーション(図2では図示せず)がインストールされており、CPU11は、そのプログラミングアプリケーションを実行することによって、上述したソースコードとテストコードをマージしたもののビルドを行う。   In other words, the HDD 17 of the server 1 is installed with a programming application (not shown in FIG. 2) that provides functions as a compiler and a linker. Build the merged source code and test code.

ソースコードとテストコードのマージ方法は、如何なる方法であってもよい。例えば、課題表示/編集エリア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 / edit area 901, the part is deleted or the main function in the test code is a true main function. You can merge the source code and test code after editing as necessary, such as changing attributes). When the build is completed, the CPU 11 executes the obtained execution format file and displays the output result on the display unit 25 (the output area 902 of the programming screen shown in FIG. 15).

このように、被験者は、サーバ1のプログラミングアプリケーション機能の提供を受けることで、自己のクライアント端末2B上において、自動単体テストを実行することができる。すなわち、本実施形態では、被験者が操作するクライアント端末2Bは、プログラミング課題を出題された被験者がプログラミング課題を解決するプログラムを作成するプログラム作成装置の一例となる。また、このクライアント端末2Bにおいて、被験者によってプログラムが作成され、プログラミング課題を出題した出題者により設定された所望のプログラム出力が得られるか否かのテストとして、自動単体テストが実行される。換言すれば、サーバ1に登録されているテストコードと、被験者により作成されたソースコードとを組み合わせることによって生成された、テスト用プログラムの出力結果を得るためのテストとして、自動単体テストが実行される。   Thus, the subject can execute the automatic unit test on his / her client terminal 2B by receiving the programming application function of the server 1. That is, in the present embodiment, the client terminal 2B operated by the subject is an example of a program creation device in which the subject who has been asked the programming task creates a program that solves the programming task. In the client terminal 2B, a program is created by the subject, and an automatic unit test is executed as a test of whether or not a desired program output set by a questioner who has given a programming task can be obtained. In other words, an automatic unit test is executed as a test for obtaining the output result of the test program generated by combining the test code registered in the server 1 and the source code created by the subject. .

なお、図7を用いて説明したテストボタン6187に関して補足すると、このボタンは、上述したように、課題出題者が課題内容を登録する段階において、プログラミング課題に対する解答を自分で試作してみるとともに、試作したプログラムについて自動単体テストを実行してみるためのボタンである。すなわち、課題出題者によってテストボタン6187がクリックされると、図12に示すプログラミング画面が、課題出題者のクライアント端末2Aの表示部25に表示される。そして、課題出題者は、プログラミング画面の課題表示/編集エリア901に、課題に解答するソースコードを試しに記述してみる。課題出題者は、プログラミングが終了すると、図12のプログラミング画面下方のテストボタン905をクリックする。そうすると、被験者が自動単体テストを行うのと同様に、課題表示/編集エリア901に記述されたソースコードに、図7に示すテストコード登録エリア6185を通じて登録されたテストコードがマージされ、ビルドが行われる。このようにして、課題出題者は、課題内容を登録する段階において(図7参照)、図7に示すテストボタン6187をクリックすることにより、試しに課題を解いてみることができる。つまり、自分が作成した模範ソースコードと模範テストコードによって、意図した出力結果が得られるか否かを試すことができる。   In addition, in addition to the test button 6187 described with reference to FIG. 7, as described above, this button tries to prototype the answer to the programming task at the stage where the task questioner registers the task content. It is a button for trying to execute an automatic unit test for the prototype program. In other words, when the test button 6187 is clicked by the task giver, the programming screen shown in FIG. 12 is displayed on the display unit 25 of the client terminal 2A of the issuer. Then, the task giver tries to describe the source code for answering the task as a test in the task display / edit area 901 on the programming screen. When the task is completed, the test subject clicks a test button 905 at the bottom of the programming screen in FIG. Then, the test code registered through the test code registration area 6185 shown in FIG. 7 is merged with the source code described in the task display / edit area 901 in the same manner as when the subject performs the automatic unit test, and the build is performed. . In this way, at the stage of registering the task content (see FIG. 7), the task taker can click on the test button 6187 shown in FIG. In other words, it is possible to test whether the intended output result can be obtained by the model source code and the model test code created by the user.

図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 completion button 906, the test of the programming task is completed. However, if the automatic unit test by the test button 905 is not passed, a message “All test cases have not been passed. Do you want to finish?” Is displayed. In other words, the CPU 21 of the client terminal 2B that has received the operation signal from the accepting unit 24 transmits an examination completion signal that informs the server 1 of the fact, while the CPU 11 of the server 1 receives the examination completion signal, the answer DB 180 To check the pass / fail history of the automatic unit test by the test button 905. Note that all the test cases referred to here are test codes registered by the challenger through the test code registration area 6185 shown in FIG. 7 (for example, if a first value is assigned to a certain variable, the output result is the second Meaning all cases). If it is determined that even one test case of the automatic unit test has not passed, an HTML document for displaying the above-described message is transmitted to the client terminal 2B. As a result, the subject can be encouraged to submit the created program after passing the automatic unit test created by the subject.

このようにして、結果的にサーバ1の解答DB180には、課題出題者により設定された所望のプログラム出力が得られて自動単体テストを通過したプログラム(テスト通過プログラム)と、被験者がテスト通過プログラムを作成する過程で生成された複数のプログラム(中間生成プログラム)とが格納されることになる。本実施形態では、上述したAjax等の技術を用いて、被験者が受付部24を1回操作するごとに、クライアント端末2Bからサーバ1へデータ転送が行われる。なお、テスト通過プログラムについては1個であっても複数であってもよい。   In this manner, as a result, the answer DB 180 of the server 1 obtains a desired program output set by the task giver and passes the automatic unit test (test passing program), and the test subject passes the test passing program. A plurality of programs (intermediate generation programs) generated during the creation process are stored. In the present embodiment, data transfer is performed from the client terminal 2 </ b> B to the server 1 every time the subject operates the reception unit 24 once using the technique such as Ajax described above. Note that one or more test passing programs may be used.

図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 completion button 906, the answer newly arrived number display column 64 of the top menu screen shown in FIG. 5 is incremented by 1. That is, when the CPU 11 of the server 1 receives an examination completion signal from the client terminal 2 </ b> B, it adds 1 to the number displayed in the answer newly arrived number display column 64. Then, the subject person can check the answer of the subject on the answer confirmation screen by clicking the answer confirmation button 63 on the top menu screen shown in FIG. 5 (step S7 shown in FIG. 4).

図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 number display field 631 is displayed as in the new answer number display field 64 displayed on the top menu screen. In addition, below the answer newly arrived number display column 631, a list (result list) of tasks answered by the subject is displayed. In the result list, the reference 632, the assignment name 633, and the answer date 634 are items that are always displayed by the system. The column of the standard 632 is used for [quantitative skill evaluation] described later.

結果一覧の下方には、チャート表示ボタン637、ダウンロードボタン638、課題情報ボタン639、発行情報ボタン640が表示されている。結果一覧では、これら4個のボタンのいずれによっても開かれていない新着解答データについては、太字で示されるようになっている。これにより、課題出題者は、まだ開いていない新着データを容易に把握することができる。   Below the result list, a chart display button 637, a download button 638, an assignment information button 639, and an issue information button 640 are displayed. In the result list, newly arrived answer data that is not opened by any of these four buttons is shown in bold. As a result, the challenger can easily grasp new arrival data that has not yet been opened.

チャート表示ボタン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 chart display button 637 is a button for displaying an evaluation result of [quantitative skill evaluation] described later in a productivity / quality chart. The download button 638 is a button for reading the subject's answer from the answer DB 180 and downloading it. Specifically, when the download button 638 is clicked on the display unit 25 of the client terminal 2A of the question giver, the CPU 11 of the server 1 answers the test subject's answer stored in the answer DB 180 (the test passing program and Intermediate generation program) is read out and transmitted to the client terminal 2A. As a result, the client terminal 2A of the question giver can download and read the test passing program and the intermediate generation program. Note that what is to be downloaded is current data currently selected by a cursor or the like on the answer confirmation screen shown in FIG. 16 (in FIG. 16, answer data created by answerer Q of No. 3). Although the intermediate generation program itself is downloaded here, program configuration information that can restore the intermediate generation program may be downloaded. For example, an intermediate generation program composed of source code in a state where “i” is input, an intermediate generation program composed of source code in a state where “in” is input, and a source where “int” is input An intermediate generation program consisting of codes can be downloaded, or source code with "i" input, source code with "n" input, source with "t" input Program configuration information consisting of codes can also be downloaded. If this program configuration information is present, both an intermediate generation program composed of source code in a state where “i” is input and an intermediate generation program composed of source code in a state where “in” is input are input as “int”. It is also possible to restore an intermediate generation program consisting of the source code in a state of being restored. For example, if the source code with "i" input is combined with the source code with "n" input, the intermediate generation program consisting of the source code with "in" input is restored. can do. In short, the program configuration information may be any information as long as the information can restore the intermediate generation program. In light of this, the intermediate generation program itself can also be program configuration information.

以上説明したように、プログラミング能力診断装置としてのクライアント端末2Aにおいて被験者のプログラミング能力診断を行うにあたって、プログラミング課題に対する被験者の解答データを、通信ネットワーク100を介してサーバ1からクライアント端末2Aにダウンロードすることができる。   As described above, in performing the diagnosis of the subject's programming ability at the client terminal 2A as the programming ability diagnosis device, the answer data of the subject with respect to the programming task is downloaded from the server 1 to the client terminal 2A via the communication network 100. Can do.

次に、ダウンロードして取得した解答データ(テスト通過プログラムと中間生成プログラム)を用いて、クライアント端末2A上で行われるプログラミング能力診断について、具体的に説明する。   Next, the programming ability diagnosis performed on the client terminal 2A using the downloaded answer data (test passing program and intermediate generation program) will be specifically described.

[プログラミング能力診断]
まず、課題出題者は、図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 text 641 “Click here to download the playback observation application” hyperlinked at the bottom of the screen shown in FIG. 16, downloads the installer file, and installs it on his client terminal 2A. Specifically, the HDD 17 of the server 1 also stores a software program reproduction observation application (not shown), and the CPU 11 of the server 1 performs the reproduction observation application according to the request of the web browser application 272 of the client terminal 2A. Send the installer file. The CPU 21 of the client terminal 2A executes the received installer file and stores the file generated as a result in the HDD 27. Thereby, the reproduction observation application is installed in the client terminal 2A. In the present embodiment, the playback observation application is downloaded via the communication network 100, but it can also be installed on the client terminal 2A using a storage medium such as a USB or DVD.

図17は、再生観察アプリがインストールされた後のクライアント端末2Aのソフトウェア的な機能を示す機能ブロック図である。本実施形態では、このクライアント端末2Aが、被験者のプログラミング能力を診断するプログラミング能力診断装置の一例となる。   FIG. 17 is a functional block diagram showing software functions of the client terminal 2A after the reproduction observation application is installed. In the present embodiment, the client terminal 2A is an example of a programming capability diagnostic device that diagnoses the programming capability of the subject.

図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 client terminal 2A includes a control unit 20, a reception unit 24, a display unit 25, a communication unit 26, and a storage unit 27, a reproduction unit 31, and a visualization diagram generation unit 32. A timing analysis unit 33, a search unit 34, and a code duplication rate analysis unit 35. The receiving unit 24, the display unit 25, the communication unit 26, and the storage unit 27 are realized by software by the receiving unit 24, the display unit 25, the communication unit 26, and the HDD 27 shown in FIG.

特に、記憶部27は、サーバ1からダウンロードした、複数の関数モジュールから構成されるテスト通過プログラムと、複数の中間生成プログラムを復元可能なプログラム構成情報とを記憶する機能を有する。再生部31は、プログラム構成情報により復元される複数の中間生成プログラムに基づいて、テスト通過プログラムの作成過程を再生する機能を有する。可視化図生成部32は、テスト通過プログラムに基づいて、一の関数モジュール若しくは複数の関数モジュール各々の処理手順又は一の関数モジュール若しくは複数の関数モジュール間の構造が可視化された図を生成する機能を有する。制御部20は、再生部31により再生されるテスト通過プログラムの作成過程と、可視化図生成部32により生成された図とを表示部25に表示させる機能を有する。   In particular, the storage unit 27 has a function of storing a test passing program composed of a plurality of function modules downloaded from the server 1 and program configuration information capable of restoring a plurality of intermediate generation programs. The reproduction unit 31 has a function of reproducing the test passing program creation process based on a plurality of intermediate generation programs restored by the program configuration information. The visualization diagram generation unit 32 has a function of generating a diagram in which a processing procedure of each function module or a plurality of function modules or a structure between one function module or a plurality of function modules is visualized based on the test passing program. Have. The control unit 20 has a function of causing the display unit 25 to display a process of creating a test passing program reproduced by the reproduction unit 31 and a diagram generated by the visualization diagram generation unit 32.

また、タイミング解析部33は、複数の中間生成プログラムに基づいて、一の関数モジュール又は複数の関数モジュール各々が生成されたタイミングを解析する機能を有する。検索部34は、一の関数モジュール又は複数の関数モジュール各々について、タイミング解析部33によって解析されたタイミングよりも前に、被験者による関数モジュールの記述があるか否かを、複数の中間生成プログラムを用いて検索する機能を有する。コード重複率解析部35は、一の関数モジュール内又は複数の関数モジュール間でコードの重複度合いを示すコード重複率を解析する機能を有する。   Further, the timing analysis unit 33 has a function of analyzing the timing at which one function module or each of a plurality of function modules is generated based on a plurality of intermediate generation programs. The search unit 34 determines whether or not there is a description of the function module by the subject before the timing analyzed by the timing analysis unit 33 for each of the one function module or the plurality of function modules. It has a function to search using. The code duplication rate analysis unit 35 has a function of analyzing a code duplication rate indicating the degree of code duplication within one function module or between a plurality of function modules.

また、制御部20は、タイミング解析部33の解析結果、検索部34の検索結果、コード重複率解析部35の解析結果を、表示部25に表示させる機能を有する。加えて、制御部20は、表示部25においてユーザの操作を受け付ける受付部24からの操作信号に基づいて、タイミング解析部33の解析結果、検索部34の検索結果、コード重複率解析部35の解析結果を、選択的に表示部25に表示させる機能(いわゆる選択切替表示機能)を有する。   The control unit 20 has a function of causing the display unit 25 to display the analysis result of the timing analysis unit 33, the search result of the search unit 34, and the analysis result of the code duplication rate analysis unit 35. In addition, the control unit 20 uses the analysis result of the timing analysis unit 33, the search result of the search unit 34, and the code duplication rate analysis unit 35 based on an operation signal from the reception unit 24 that receives a user operation on the display unit 25. A function of selectively displaying the analysis result on the display unit 25 (so-called selection switching display function) is provided.

再生部31と、可視化図生成部32と、タイミング解析部33と、検索部34と、コード重複率解析部35と、制御部20との各部の機能は、図3に示すCPU21、ROM22、RAM23、及び、記憶部27に格納される再生観察アプリのソフトウェア等により機能的に実現される。以下、図18〜図40に示す画面例に基づいて、本実施形態に係るプログラミング能力診断方法の詳細について説明する。   The functions of the playback unit 31, visualization diagram generation unit 32, timing analysis unit 33, search unit 34, code duplication rate analysis unit 35, and control unit 20 are the CPU 21, ROM 22, and RAM 23 shown in FIG. And functionally realized by software of a reproduction observation application stored in the storage unit 27. Hereinafter, based on the example of a screen shown in Drawing 18-Drawing 40, the details of the programming ability diagnostic method concerning this embodiment are explained.

図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 display unit 25 when the reproduction observation application is activated on the client terminal 2A. The startup screen shown in FIG. 18 is roughly divided into three areas. The screen mode 1001, the target data file 1002, and the CSV conversion 1003 are displayed in the left column, and the playback column 1004 is displayed in the middle column. , An output column 1005 is displayed, and an elapsed time 1006 and a playback mode 1007 are displayed on the right column.

画面モード1001は、テスト通過プログラムの作成過程を再生する「再生モード」と、可視化図生成部32により生成された図など、プログラミング作成過程を分析するための図を表示する「分析モード」とを切り替えるためのものであって、図18ではラジオボタンによって構成されている。プログラミング能力診断を行う者は、このラジオボタンのクリック位置を所望の位置にするだけで、再生モードと分析モードを切り替えることができる。   The screen mode 1001 includes a “playback mode” for playing back a test passing program creation process and an “analysis mode” for displaying a diagram for analyzing the programming creation process, such as a diagram generated by the visualization diagram generation unit 32. This is for switching, and is composed of radio buttons in FIG. A person who performs a programming ability diagnosis can switch between the reproduction mode and the analysis mode only by setting the click position of the radio button to a desired position.

対象データファイル1002は、参照ボタン1002aによって指定された参照フォルダに存在するファイルであって、分析対象とするために、追加ボタン1002bによってファイル選択画面(図示せず)を表示させ、所望のファイルを追加することができる(追加した様子は後述する)。   The target data file 1002 is a file existing in the reference folder designated by the reference button 1002a, and in order to make it an analysis target, a file selection screen (not shown) is displayed by the add button 1002b, and a desired file is selected. It can be added (how it is added will be described later).

CSV変換1003は、後述する各パラメータ推移で用いるデータを、EXCEL(登録商標)等の汎用ソフトウェアで分析できるようにCSV形式で出力する機能である。どのファイルのどのデータを出力するかは、設定ボタン1003bによってデータ選択画面(図示せず)を表示させ、所望のデータを設定し、変換ボタン1003cをクリックすることにより、参照ボタン1003aによって指定された参照フォルダへCSV変換されたCSVファイルを出力する。これにより、プログラミング能力診断を行う者は、例えばEXCEL(登録商標)等のCSVファイルを扱うことが可能なソフトウェアを用いて、所望の分析を行うことができる。   The CSV conversion 1003 is a function for outputting data used in each parameter transition described later in a CSV format so that it can be analyzed by general-purpose software such as EXCEL (registered trademark). Which data of which file is output is designated by the reference button 1003a by displaying a data selection screen (not shown) by the setting button 1003b, setting desired data, and clicking the conversion button 1003c. Output CSV file converted to CSV to the reference folder. Thus, a person who performs a programming ability diagnosis can perform a desired analysis using software capable of handling a CSV file such as EXCEL (registered trademark).

再生欄1004は、テスト通過プログラムの作成過程を再生するための欄であり、出力欄1005は、被験者によってコンパイルされた結果や自動単体テストが実行された結果を表示するための欄である(再生・表示している様子は後述する)。   The reproduction column 1004 is a column for reproducing the process of creating the test passing program, and the output column 1005 is a column for displaying the result compiled by the subject and the result of executing the automatic unit test (reproduction / reproduction). The display state will be described later).

経過時間1006は、被験者がテスト経過プログラムを作成する過程において実際に経過した時間であり、再生モード1007は、ラジオボタン1007aのクリック位置を切り替えることによって、実時間ベースでの再生と、操作ベースでの再生を切り替えることができるようになっている。すなわち、被験者がテスト経過プログラムを作成する過程において時間の経過に応じて再生する実時間ベースでの再生と、被験者がテスト経過プログラムを作成する過程において操作する回数に応じて再生する操作ベースでの再生とを切り替えることができるようになっている。   The elapsed time 1006 is the time actually passed in the process of creating the test progress program by the subject, and the playback mode 1007 switches the click position of the radio button 1007a, thereby reproducing on the real time basis and on the operation basis. You can switch between playback. That is, the reproduction on the basis of real time that the subject reproduces according to the passage of time in the process of creating the test progress program, and the operation base that is reproduced according to the number of times the subject operates in the process of creating the test progress program. You can switch between playback.

例えば、実時間ベースでの再生の場合には、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 reproduction column 1004. On the other hand, in the case of operation-based playback, after the first operation (eg, after pressing i on the keyboard), after the second operation (eg, after pressing n on the keyboard), after the third operation ( For example, after t is pressed on the keyboard, the intermediate generation program (ie, source code with "i" entered → source code with "in" entered → source with "int" entered Code) are sequentially displayed in the reproduction field 1004.

速度調整バー1007bを操作することによって、再生欄1004で再生されるスピードを調節することができる。すなわち、速度調整バー1007bを「速い」の方(上方)へ移動させることで、いわゆる早送り再生が可能となり、速度調整バー1007bを「遅い」の方(下方)へ移動させることで、いわゆるスロー再生が可能となる。最も下方へ移動させた場合には、等速再生が可能になる。このように、速度調整バー1007bを移動させるだけで、所望の速度でテスト通過プログラムの作成過程を再生することができる。   By operating the speed adjustment bar 1007b, the speed reproduced in the reproduction column 1004 can be adjusted. That is, by moving the speed adjustment bar 1007b toward “fast” (upward), so-called fast-forward playback is possible, and by moving the speed adjustment bar 1007b toward “slow” (downward), so-called slow playback is possible. Is possible. When moved downward, constant speed reproduction is possible. In this manner, the test passing program creation process can be reproduced at a desired speed only by moving the speed adjustment bar 1007b.

次に、プログラミング能力診断を行う者は、再生観察アプリを起動した後、図18に示す追加ボタン1002bをクリックして、ファイル選択画面(図示せず)を表示させ、参照ボタン1002aによって指定された参照フォルダ内に存在するファイルを選択することによって、分析対象となるデータファイルを追加する。このようにして、再生部31は、記憶部27に記憶されたテスト通過プログラム及び中間生成プログラムのうち、分析対象となるものを対象ファイルとして読み込む。   Next, the person who performs the programming ability diagnosis activates the playback observation application, and then clicks an add button 1002b shown in FIG. 18 to display a file selection screen (not shown), which is designated by the reference button 1002a. Add data files to be analyzed by selecting files that exist in the reference folder. In this way, the reproducing unit 31 reads the test pass program and the intermediate generation program stored in the storage unit 27 as an analysis target file.

図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 deletion button 1002d is activated by adding the target file created by Mr. A.

また、追加ボタン1002bの下方には、「自動追加」機能を有効化するか否かのチェックボックス1002cが設けられており、このチェックボックス1002cにチェックを入れることにより、再生観察アプリを起動した際、自動的に、参照ボタン1002aによって指定された参照フォルダに存在するファイルが対象ファイルとして読み込まれる。また、対象ファイルとして自動追加するファイル数は所望の数に制限することができる。図19では、チェックボックス1002cの右側に示すように、1個までに制限されている。   Also, below the add button 1002b, a check box 1002c for determining whether or not to enable the “automatic add” function is provided. When the check box 1002c is checked, the playback observation application is activated. The file existing in the reference folder designated by the reference button 1002a is automatically read as the target file. Further, the number of files automatically added as target files can be limited to a desired number. In FIG. 19, as shown on the right side of the check box 1002c, the number is limited to one.

次に、プログラミング能力診断を行う者は、図19の右上に示す経過時間1006の下に配置された再生ボタン1006aをクリックする。そうすると、テスト通過プログラムの作成過程の再生が開始される。   Next, the person who performs the programming ability diagnosis clicks the playback button 1006a arranged under the elapsed time 1006 shown in the upper right of FIG. Then, the reproduction of the test passing program creation process is started.

図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 pause button 1006b arranged on the right side of the play button 1006a is clicked. When the stop button 1006c arranged on the right side of the pause button 1006b is clicked, the reproduction column 1004 is cleared.

図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 reproduction column 1004, 12 lines of source code are described. When the elapsed time 1006 is viewed, the source code is 1 minute 47 seconds after the start of the answer to the programming task. It turns out to be a code. That is, it can be seen that the subject described 12 lines of source code in 1 minute 47 seconds. Below the elapsed time 1006, the number of operations 1008a is 180 times, the number of characters 1008b is 206 characters (in consideration of copy and paste, etc., the number of characters may be larger than the number of operations), and the number of lines 16 lines (blank lines are also counted here), 18 seconds as the task confirmation time 1008d (the task confirmation time will be described later with reference to FIG. 22), 0 times as the number of builds 1008e, 0 times as the number of executions 1008f, 0 times is displayed as the number of automatic tests 1008 g.

ビルド回数1008eは、上述した被験者がテスト通過プログラムを作成する過程で、図12に示すビルドボタン903をクリックした回数を示し、実行回数1008fは、被験者がテスト通過プログラムを作成する過程で、図12に示す実行ボタン904をクリックした回数を示し、自動テスト回数1008gは、被験者がテスト通過プログラムを作成する過程で、図12に示すテストボタン905をクリックした回数を示している。   The build count 1008e indicates the number of clicks on the build button 903 shown in FIG. 12 in the process of creating the test pass program by the subject described above, and the execution count 1008f is the process of creating the test pass program in FIG. The automatic test count 1008g indicates the number of times the test subject clicked the test button 905 shown in FIG. 12 in the process of creating the test passing program.

なお、自動テスト回数1008gの下に表示されたサムネイルグラフ1009は、画面モード1001において分析モードを選択したときに表示されるグラフ(詳細は後述する)のサムネイルである。特に、操作回数又は再生時間を横軸にもつサムネイルグラフ1009の中には、重なるようにして、サムネイル用再生位置バー1009aが表示されており、全体のうちどの程度まで再生が済んだかが分かるようになっている。   A thumbnail graph 1009 displayed under the automatic test count 1008g is a thumbnail of a graph (details will be described later) displayed when the analysis mode is selected in the screen mode 1001. In particular, a thumbnail reproduction position bar 1009a is displayed so as to overlap in the thumbnail graph 1009 having the number of operations or the reproduction time on the horizontal axis so that it can be seen to what extent the reproduction has been completed. It has become.

また、図20の下方には、再生位置バー1010が表示されており、全体のうちどの程度まで再生が済んだかが表示されるようになっている。プログラミング能力診断を行う者は、この再生位置バー1010をクリックして、左右に移動させることによって、所望の操作回数(実時間ベースでの再生の場合には所望の経過時間)における中間生成プログラム(ソースコード)を視認することができる。   In addition, a playback position bar 1010 is displayed at the lower part of FIG. 20, and to what extent playback has been completed is displayed. The person who performs the programming ability diagnosis clicks the reproduction position bar 1010 and moves it to the left and right to thereby generate an intermediate generation program (desired elapsed time in the case of reproduction on a real time basis). Source code).

ここで、再生位置バー1010とサムネイル用再生位置バー1009aは連動表示される。すなわち、再生位置バー1010を左右に移動させると、それに追随してサムネイル用再生位置バー1009aも移動する。このように、テスト通過プログラムの作成過程を再生するときに、操作回数(操作ベースでの再生のとき)又は再生時間(実時間ベースでの再生のとき)の経過状況を示す再生位置バー1010と、プログラミング作成過程を分析するための複数のパラメータ(詳細は後述)を表示するサムネイルグラフ1009に重なるようにして配置され、操作回数又は再生時間の経過状況を示すサムネイル用再生位置バー1009aとを、制御部20によって表示部25に連動表示させている。これにより、サムネイルグラフ1009中のパラメータを視認しながら再生位置バー1010を移動させ、再生欄1004に、所望の中間生成プログラムを迅速に表示させることができる。   Here, the playback position bar 1010 and the thumbnail playback position bar 1009a are displayed in conjunction with each other. That is, when the playback position bar 1010 is moved to the left or right, the thumbnail playback position bar 1009a is also moved accordingly. In this way, when playing back the test passing program creation process, a playback position bar 1010 indicating the progress of the number of operations (when playing on an operation basis) or playing time (when playing on a real time basis) A thumbnail reproduction position bar 1009a which is arranged so as to overlap a thumbnail graph 1009 displaying a plurality of parameters (details will be described later) for analyzing the programming creation process, and indicates the number of operations or the elapsed time of the reproduction time, The control unit 20 causes the display unit 25 to perform interlocking display. As a result, the playback position bar 1010 can be moved while visually recognizing the parameters in the thumbnail graph 1009, and the desired intermediate generation program can be quickly displayed in the playback field 1004.

例えば、サムネイルグラフ1009中に、操作回数のパラメータが急激に増加していた箇所があった場合、プログラミング能力診断を行う者は、被験者がどのような操作を行ったか知りたいことがある。このような場合には、サムネイル用再生位置バー1009aがサムネイルグラフ1009上でその箇所にくるように、再生位置バー1010を移動させればよい。これにより、サムネイルグラフ1009上で操作回数のパラメータが急激に増加していたところで、被験者がどのような操作を行っていたかを迅速に把握することができる。なお、サムネイルグラフ1009上にどのようなパラメータを表示させるかは、グラフ設定1009bをクリックして、パラメータ選択画面(図示せず)を表示させ、所望のパラメータを選択すればよい。なお、ここでは再生位置バー1010のみを移動操作可能としているが、例えば、サムネイル用再生位置バー1009aのみ、或いは、再生位置バー1010及びサムネイル用再生位置バー1009aの双方を、移動操作可能としてもよい。   For example, if there is a location in the thumbnail graph 1009 where the parameter for the number of operations has increased rapidly, the person who performs the programming ability diagnosis may want to know what operation the subject has performed. In such a case, the playback position bar 1010 may be moved so that the thumbnail playback position bar 1009a is positioned on the thumbnail graph 1009. Thereby, when the parameter of the number of operations on the thumbnail graph 1009 has increased rapidly, it is possible to quickly grasp what operation the subject has performed. Note that what parameters are to be displayed on the thumbnail graph 1009 may be selected by clicking the graph setting 1009b to display a parameter selection screen (not shown) and selecting a desired parameter. Here, only the playback position bar 1010 can be moved, but for example, only the thumbnail playback position bar 1009a or both the playback position bar 1010 and the thumbnail playback position bar 1009a can be moved. .

図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 output area 902 shown in FIG. 12 on the display unit 25 of the client terminal 2B are also displayed in the output column 1005 shown in FIG. 21 on the display unit 25 of the client terminal 2A. It should be noted that the number of builds 1008e is incremented by 1 as the build is performed once.

図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 reproduction field 1004. Specifically, according to FIG. 22, the subject Mr. A was watching the programming task when the elapsed time 1006 was 2 minutes and 7 seconds. This means that Mr. A was watching the programming problem as shown in FIG. 13 when 2 minutes and 7 seconds passed while actually programming on the client terminal 2B. And the time which was watching the programming subject is measured as the subject confirmation time 1008d mentioned above. As described above, the client terminal 2A as the programming ability diagnostic apparatus according to the present embodiment confirms the time during which the subject visually recognizes the programming task in the process of creating the test passing program based on the plurality of intermediate generation programs. It has a measurement function that measures time.

図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 time 1006 indicates 30 minutes and 27 seconds, and the operation count 1008a indicates 1018 times. Further, the reproduction position bar 1010 has moved to the right from FIG. In addition, as shown in the build count 1008e and the output column 1005, the build is performed three times.

特に、図23では、図21と異なり、再生欄1004にスクロールバー1004aが現れている。中間生成プログラムの行数が増えてくると、自動的にスクロールバー1004aが表示される。プログラミング能力診断を行う者は、スクロールバー1004aを上下に移動させることによって、再生欄1004に、中間生成プログラムの所望箇所を表示させることができる。   In particular, in FIG. 23, unlike FIG. 21, a scroll bar 1004a appears in the reproduction field 1004. When the number of lines of the intermediate generation program increases, a scroll bar 1004a is automatically displayed. A person who performs a programming ability diagnosis can display a desired portion of the intermediate generation program in the reproduction column 1004 by moving the scroll bar 1004a up and down.

図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 playback position bar 1010 is at the rightmost position, the elapsed time 1006 is 1 hour 27 minutes 39 seconds, the number of operations 1008a is 2717 times, the number of characters 1008b is 2126 characters, and the number of lines is 122 lines. The task confirmation time 1008d is 1173 seconds, the build count 1008e is 35, the execution count is 16, and the automatic test count is 0. In addition, the number of operations 1008a of 2717 matches the numerical value 2717 on the right end of the horizontal axis of the thumbnail graph 1009.

図18〜図24は、再生モード1007のうち、操作ベースでの再生について説明した。上述したように、再生モード1007におけるラジオボタン1007aのクリック位置を切り替えることによって、実時間ベースでの再生と、操作ベースでの再生を切り替えることができる。図25は、実時間ベースでの再生について説明するための図である。図25では、図24と同様に、最後に生成された中間生成プログラムが表示されている様子を示しており、経過時間1006が示す1時間27分39秒(=5259秒)と、サムネイルグラフ1009の横軸右端が示す数値5259とが一致している。   18 to 24, the operation-based reproduction in the reproduction mode 1007 has been described. As described above, by switching the click position of the radio button 1007a in the playback mode 1007, it is possible to switch between real-time playback and operation-based playback. FIG. 25 is a diagram for explaining reproduction on a real time basis. FIG. 25 shows a state where the last generated intermediate generation program is displayed, as in FIG. 24, and the thumbnail graph 1009 shows 1 hour 27 minutes 39 seconds (= 5259 seconds) indicated by the elapsed time 1006. The numerical value 5259 indicated by the right end of the horizontal axis of FIG.

以上が画面モード1001のうち再生観察モードについての説明である。次に、画面モード1001のうち分析モードについて説明する。図26は、プログラミング作成過程を分析するための図を表示する分析モードのうち、各パラメータ推移の様子を示す図である。図26では、左欄の画面モード1001において、ラジオボタンのクリック位置が分析モードになっている。   The above is the description of the playback observation mode in the screen mode 1001. Next, the analysis mode in the screen mode 1001 will be described. FIG. 26 is a diagram showing the transition of each parameter in the analysis mode for displaying a diagram for analyzing the programming creation process. In FIG. 26, in the screen mode 1001 in the left column, the click position of the radio button is in the analysis mode.

図26の中央には、プログラミング作成過程を分析するための図が表示される分析欄1011が設けられている。この分析欄1011には、右欄におけるパラメータ設定1014の設定内容(チェックボックスのチェック状態)が反映される(なお、縦軸のスケールの関係で、又は、線の濃さの関係で、一部の線が見え難くなっている)。図26の右欄には、上から順に、グラフ個数1012、表示内容1013、パラメータ設定1014が表示されている。グラフ個数1012は、1011を分割表示するためのものであるが、図26では縦1×横1に設定され、分割されていない(分割されている様子については後述する)。   In the center of FIG. 26, there is provided an analysis column 1011 in which a diagram for analyzing the programming creation process is displayed. The analysis column 1011 reflects the setting contents of the parameter setting 1014 in the right column (check box check state) (partially due to the scale of the vertical axis or the relationship of the darkness of the line). Is difficult to see). In the right column of FIG. 26, the number of graphs 1012, display contents 1013, and parameter settings 1014 are displayed in order from the top. The number of graphs 1012 is for dividing and displaying 1011. In FIG. 26, the number of graphs 1012 is set to 1 × 1 in the vertical direction and is not divided (the state of division will be described later).

表示内容1013では、ラジオボタンによって、各パラメータ推移、関数ライフサイクル、フローチャート、コードの重複を選択することができるようになっている。図26では、各パラメータ推移が選択されている。各パラメータ推移で用いるパラメータ設定1014では、正規化1015、横軸値1016、基本項目1017、オプション1018を設定することができるようになっている。正規化1015と横軸値1016の詳細については後述する(後述する図30及び図31と、図35参照)。   In the display content 1013, each parameter transition, function life cycle, flowchart, and code duplication can be selected by radio buttons. In FIG. 26, each parameter transition is selected. In parameter setting 1014 used for each parameter transition, normalization 1015, horizontal axis value 1016, basic item 1017, and option 1018 can be set. Details of the normalization 1015 and the horizontal axis value 1016 will be described later (see FIGS. 30, 31, and 35 described later).

基本項目1017としては、操作回数、総文字数、総行数、実コード文字数、実コード行数(空欄行を除いた実際のコード行数)、実コード語数(スペース文字を除いた実際のコード語数)、コメント文字数、コメント行数、課題確認時間、課題確認回数、ビルド回数、実行回数、自動テスト(自動単体テスト)回数、ビルドエラー数、ビルドワーニング(警告)数、自動テストエラー数といった各々のパラメータを、分析欄1011に表示させるか否かをチェックボックスにより選択できるようになっている。これらのパラメータは、特にこれらに限定されるものではなく、必要に応じて増やしたり減らしたりすることができる。   As basic items 1017, the number of operations, the total number of characters, the total number of lines, the number of actual code characters, the number of actual code lines (the actual number of code lines excluding blank lines), the number of actual code words (the actual number of code words excluding space characters) ), Number of comment characters, number of comment lines, task confirmation time, task confirmation count, build count, execution count, automatic test (automatic unit test) count, build error count, build warning (warning) count, automatic test error count, etc. Can be selected by a check box whether or not to be displayed in the analysis column 1011. These parameters are not particularly limited to these, and can be increased or decreased as necessary.

また、ビルド回数、実行回数、自動テスト回数については、いずれも回数自体が少なく操作回数等と同じグラフに表示させると見えにくくなるため、別途オプション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 basic item 1017. For example, in the analysis column 1011, a square mark 1018a indicates a build timing, and a square mark 1018b indicates an execution timing. Thus, by displaying the build timing and execution timing with square marks in the graph displaying the parameter transition of the basic item 1017, the build timing and execution timing can be easily recognized.

例えば、ビルドや実行をあまりに早いタイミングで繰り返す被験者は、頭の中で見通しが立てられないので試行錯誤している可能性がある。したがって、早い段階でビルドタイミングや実行タイミングを繰り返す被験者よりも、遅い段階でビルドタイミングや実行タイミングを繰り返す被験者の方が、プログラミング能力が優れていると考えられる。また、ビルドタイミングや実行タイミングの回数に着目すれば、回数の多い被験者よりも回数の少ない被験者の方が、プログラミング能力が優れていると考えられる。後者の方が、しっかり考えながらプログラミングを行っていると思われるからである。   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 display content 1013 is in the function life cycle position. The function life cycle indicates the lifetime of a function until each function module is generated and deleted in the source code (generally, unless there is a mistake in grasping the subject matter of a programming task, etc.) The function module is not erased until the end), and is automatically drawn based on the analysis result of the timing analysis unit 33 as described above. A function means an instruction group that receives data (input data) called an argument, executes a predetermined process, and returns a result, and is generally a component of a program. In this embodiment, numbers are handled as input data. For example, a function in which a character is input as input data and the character is displayed on the screen as a processing result can be considered. The horizontal axis indicates the number of operations (the click position of the radio button with the horizontal axis value 1016 is at the position of the number of operations).

図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 diagram generation unit 32 or the timing analysis unit 33 recognizes a function module, it searches for a description applicable to such a definition, and if found, recognizes the description as a function. Some descriptions that do not fit this definition are not recognized as functions. In the present embodiment, syntax analysis is attempted for all intermediate generation programs. Therefore, in each of the six function modules described above, the timing at which the intermediate generation program with the smallest number of operations is generated among the intermediate generation programs that have been successfully parsed is recognized as the generation timing of the function module. For example, with regard to “IsWordEnd” 1021, it is recognized that the syntax analysis has succeeded in the intermediate generation program generated at timing 1021a, and the function module “IsWordEnd” 1021 exists in the source code. Similarly, in the intermediate generation program generated at timings 1022a, 1023a, 1024a, 1025a, and 1026a for “IsSmallAlpha” 1022, “IsBigAlpha” 1023, “IsAlNum” 1024, “CountWord” 1025, and “main” 1026, respectively. It has been recognized that the parsing has succeeded and the function modules “IsSmallAlpha” 1022, “IsBigAlpha” 1023, “IsAlNum” 1024, “CountWord” 1025, and “main” 1026 exist in the source code.

このように、タイミング解析部33の解析結果に基づけば、ソースコード中に関数モジュールがどのタイミングで生成されたかを認識することができる。しかしながら、ここでいうタイミングとは、あくまでタイミング解析部33による“解析が成功した”タイミングを意味し、実際にAさんが関数モジュールの必要性に気づき、ソースコード中に関数モジュールを“記述した”タイミングを意味するものではない。   Thus, based on the analysis result of the timing analysis unit 33, it is possible to recognize at which timing the function module is generated in the source code. However, the timing here means the timing when the “analysis was successful” by the timing analysis unit 33, and Mr. A actually noticed the necessity of the function module and “described” the function module in the source code. It does not mean timing.

そこで、本実施形態では、検索部34により、プログラム中で被験者が関数モジュールを記述し始めたタイミングを検索するようにしている。具体的には、タイミング解析部33によって解析されたタイミングよりも前に、被験者による関数モジュールの記述があるか否かを、複数の中間生成プログラムを用いて検索するようにしている。図27でいえば、“IsWordEnd”1021のタイミング1021aの左側にヒゲ1021bが突き出している。これは、検索部34の検索結果により、タイミング1021aよりも前のタイミングで、被験者による関数モジュールの記述があったことを示している。このように、被験者が関数モジュールを記述した直後のタイミングを知ることによって、被験者が関数モジュールの必要性に気づいた時期など、被験者の思考過程を把握することができ、ひいてはプログラミング能力診断に役立てることができる。なお、図27では、被験者が作成したプログラムは複数の関数モジュールから構成されているが、一の関数モジュールから構成される場合もある。   Therefore, in the present embodiment, the search unit 34 searches for the timing when the subject starts describing the function module in the program. Specifically, whether or not there is a description of the function module by the subject before the timing analyzed by the timing analysis unit 33 is searched using a plurality of intermediate generation programs. In FIG. 27, a beard 1021b protrudes to the left of the timing 1021a of “IsWordEnd” 1021. This indicates that the function module has been described by the subject at a timing before the timing 1021a based on the search result of the search unit 34. In this way, by knowing the timing immediately after the test subject has written the function module, it is possible to grasp the test subject's thought process, such as the time when the test subject notices the necessity of the function module, and this is useful for the diagnosis of programming ability. Can do. In FIG. 27, the program created by the subject is composed of a plurality of function modules, but may be composed of a single function module.

図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 display content 1013 in the right column is the position of the flowchart. This flowchart shows a diagram in which the processing procedure of each of the plurality of function modules is visualized by the visualization diagram generation unit 32 based on the test passing program.

図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 subroutines 1026b are incorporated in the processing procedure of “main” 1026 on the rightmost side. Similarly, “IsWordEnd” 1021 and “CountWord” 1025 also incorporate one or more subroutines. In this way, by confirming the flowchart shown in FIG. 28, it is possible to grasp at a glance how the subject is making the function module into a subroutine.

また、図28によれば、最も左側の“CountWord”1025の処理手順内には、入れ子状態の処理手順1025bが組み込まれていることが分かる。同様に、“IsAlNum”1024の処理手順内にも、入れ子状態の処理手順1024bが組み込まれている。ただ、入れ子状態の処理手順1025bは、入れ子状態の処理手順1024bと比べても分かるように、分岐やループを多用されており、複雑なアルゴリズムになっている。したがって、分岐やループが少なくてシンプルなアルゴリズムを実現できているか、という診断基準においては、Aさんは良い評価にならないことになる。なお、シンプルなアルゴリズムかどうかは、Aさんの処理手順だけを見ても分からないことが多い。そのため、複数の被験者の処理手順を見比べ(後述する図33等参照)、相対的な評価(どちらのアルゴリズムがシンプルか)をすることによって、より的確な能力診断を行うことができる。   Further, according to FIG. 28, it can be seen that the processing procedure 1025b in a nested state is incorporated in the processing procedure of “CountWord” 1025 on the leftmost side. Similarly, a nested processing procedure 1024 b is incorporated in the processing procedure of “IsAlNum” 1024. However, as can be seen from the nested processing procedure 1025b as compared to the nested processing procedure 1024b, a lot of branches and loops are used, which is a complicated algorithm. Therefore, Mr. A does not have a good evaluation on the diagnostic criteria that a simple algorithm with few branches and loops can be realized. Whether or not the algorithm is simple is often unknown only by looking at Mr. A's processing procedure. Therefore, a more accurate ability diagnosis can be performed by comparing the processing procedures of a plurality of subjects (see FIG. 33 and the like described later) and performing a relative evaluation (which algorithm is simple).

なお、本実施形態では、複数の関数モジュール各々の処理手順が可視化された図として、フローチャートを考えたが、本発明はこれに限られず、記号の近くに説明を入れた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 diagram generation unit 32 may generate a diagram in which a structure between a plurality of function modules is visualized, instead of a diagram in which processing procedures of each of the plurality of function modules are visualized. For example, it is a diagram showing a data flow between functions such as a structure diagram describing the structure of the system such as a class diagram and a DFD (data flow diagram). Further, a diagram that visualizes both the processing procedure of each of the plurality of function modules and the structure between the plurality of function modules may be generated. Furthermore, although a plurality of function modules are shown in FIG. 28, one function module may be shown. In this case, a diagram in which the processing procedure of one function module is visualized or a diagram in which the structure of one function module is visualized is generated.

図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 display content 1013 in the right column is a code overlap position. The code duplication rate indicates the degree of code duplication among a plurality of function modules, and is analyzed by the code duplication rate analysis unit 35. 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.

図29に示すコード重複率1030は、0%になっており、全く重複していない。すなわち、ソースコードを記述する際、例えばコピー&ペースト等を全く使用していないことが推測される(図34を用いて後述する例では、コード重複率が50%近くになっている)。したがって、Aさんは、無駄が少なく効率的なプログラム構造を構築できているか、という意味においては、優れたプログラマであることが分かる。また、コード重複率が低いと、仕様変更が発生した場合であっても変更箇所が少なくなるので、この意味において、Aさんのプログラムはメンテナンス性に優れているといえる。なお、コード重複率を解析する技術としては、如何なる技術を採用しても構わない。例えば、主にソースコードのコピー&ペーストを行うことにより生成される、ソースコード中の重複したコード列を検索することにより、コード重複率を解析することができる。具体的には、ソースコード(テスト通過プログラム)を、プログラミング言語の字句規則に従ってトークンに分割するとともに、型や変数、定数に属するトークンは、同一のトークンに置き換える。この置き換えによって、例えば変数名だけが異なるコード列の組を、重複したコード列として検出できるようになる。なお、図29では、複数の関数モジュール間でコードの重複度合いが示されているが、一の関数モジュール内のコードの重複度合いが示されるようにしてもよい。   The code duplication rate 1030 shown in FIG. 29 is 0%, and there is no duplication at all. That is, when describing the source code, it is presumed that, for example, copy and paste or the like is not used at all (in the example described later with reference to FIG. 34, the code duplication rate is close to 50%). Therefore, it can be seen that Mr. A is an excellent programmer in terms of whether an efficient program structure can be constructed with little waste. In addition, if the code duplication rate is low, the number of changed portions is reduced even when a specification change occurs. In this sense, it can be said that Mr. A's program is excellent in maintainability. Any technique for analyzing the code duplication rate may be adopted. For example, the code duplication rate can be analyzed by searching for duplicate code strings in the source code that are mainly generated by copying and pasting the source code. Specifically, the source code (test passing program) is divided into tokens according to the lexical rules of the programming language, and tokens belonging to types, variables, and constants are replaced with the same token. By this replacement, for example, a set of code strings that differ only in variable names can be detected as duplicate code strings. In FIG. 29, the degree of code duplication among a plurality of function modules is shown, but the degree of code duplication within one function module may be shown.

以上、図26〜図29を用いて説明したように、ユーザは、受付部24を通じて、表示内容1013のラジオボタンのクリック位置を変更するだけで、表示部25に各図を選択的に表示させることができる。したがって、プログラムの構造を構築する能力を、様々な視点から簡易かつ迅速に診断することができる。   As described above with reference to FIGS. 26 to 29, the user can selectively display each figure on the display unit 25 only by changing the click position of the radio button of the display content 1013 through the reception unit 24. be able to. Therefore, the ability to build the program structure can be diagnosed easily and quickly from various viewpoints.

図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 parameter transition 1031a of Mr. A described above, and the lower part shows the parameter transition 1031b of Mr. B (see the target data file 1002 in the left column) newly added. Such comparison display can be realized by adjusting 2 × vertical × 1 horizontal in the number of graphs 1012 in the right column. Note that FIG. 30 is an example in which the number of graphs 1012 in the right column is adjusted to 2 vertical × 1 horizontal, but by adjusting the vertical 1 × 2 horizontal, two graphs are arranged horizontally. It is also possible.

ここで、図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 normalization 1015 of the parameter setting 1014 is used to facilitate the comparison. Specifically, the horizontal axis column is checked in the check box of normalization 1015. As a result, the value of the right end 1031c of the horizontal axis of the parameter transition 1031a of Mr. A becomes 100, and the value of the right end 1031d of the horizontal axis of the parameter transition 1031b of Mr. B also becomes 100. FIG. 31 shows an example in which not only the horizontal axis but also the vertical axis is normalized unlike FIG. Specifically, the value of the vertical axis upper end 1031e of Mr. A's parameter transition 1031a is 100, and the value of the vertical axis upper end 1031f of Mr. B's parameter transition 1031b is 100.

このように、本実施形態に係るプログラミング能力診断装置(クライアント端末2A)は、プログラミング作成過程を分析するための図において横軸又は縦軸を正規化する機能を有している。この正規化機能によって、相対的な比較をし易くすることができる。特に、グラフ各軸の“絶対値”よりも、“グラフ形状”を見たいときに便利である。例えば、文字数の推移を見るときに、「何文字書いたか、何分で書いたか」を視覚化したいときには、正規化機能を使わないグラフの方が便利である一方、「前半と後半とで、どちらが文字数の伸びが激しいか」を視覚化したいときには、正規化機能を使ったグラフの方が便利である。   As described above, the programming capability diagnosis apparatus (client terminal 2A) according to the present embodiment has a function of normalizing the horizontal axis or the vertical axis in the diagram for analyzing the programming creation process. This normalization function can facilitate relative comparison. This is particularly convenient when you want to see the “graph shape” rather than the “absolute value” of each axis of the graph. For example, when looking at the transition of the number of characters, if you want to visualize "how many characters you wrote, how many minutes you wrote", a graph that does not use the normalization function is more convenient, while in the first half and second half, A graph using the normalization function is more convenient when you want to visualize which character has the greatest growth.

図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 whiskers 1032b protrude to the left of the timing 1032a of “CheckWord” 1032. This indicates that the function module “CheckWord” 1032 has been described by the subject at a timing before the timing 1032a, as described above, based on the search result of the search unit 34. In FIG. 32, comparing Mr. A's function life cycle (upper side) with Mr. B's function life cycle (lower side), Mr. A who has all the function modules necessary for the program at an early timing is It can be said that the ability to see through the structure of the program is high. On the other hand, Mr. B, who has a small number of function modules (6 for Mr. A and 3 for Mr. B), has a higher ability to simplify the algorithm. The person who diagnoses the programming ability does not need to determine the evaluation only by the function life cycle shown in FIG. 32, and may perform a comprehensive evaluation while referring to flowcharts and code duplication. If a programmer who constructs a simple algorithm is desired, Mr. B should be highly evaluated. If a programmer with high power to see the program structure is desired, Mr. A should be highly evaluated.

図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 horizontal axis value 1016 in the parameter setting 1014 is changed from the number of operations to time, unlike FIG. That is, in FIG. 35, the elapsed time is plotted on the horizontal axis (the value at the right end of the horizontal axis is the elapsed time 5259 seconds) unlike FIG. 26, and each parameter transition over time can be grasped at a glance. Thus, for example, when attention is paid to the number of operations 1041, it is possible to grasp how many time periods (for example, the section 1041a) when no operation is performed when the source code is described.

図36は、被験者が何も操作していない時間帯(待ち)が所定時間発生したときに、キャラクターの表情を変える表情モード設定画面1051の一例である。図36に示す表示モード設定画面1051は、経過時間1006の右側に配置されたキャラクターボタン1006dをクリックすることによって、ポップアップウィンドウとして中央に現れる。表情モード設定画面1051によれば、0.5秒以内で連続操作されているときには、キャラクターの表情が好調の表情になり、待ち時間が10秒発生した場合には、キャラクターの表情が悩みの表情になり、待ち時間が30秒発生した場合には、キャラクターの表情が睡眠の表情になる。このように、本実施形態に係るプログラミング能力診断装置(クライアント端末2A)は、受付部24を通じた被験者の操作間隔に基づいて、表示部25に表示されるキャラクターの表情を変更する機能を有する。   FIG. 36 shows an example of a facial expression mode setting screen 1051 for changing the facial expression of a character when a time period (waiting) during which the subject is not operating anything occurs for a predetermined time. The display mode setting screen 1051 shown in FIG. 36 appears in the center as a pop-up window by clicking the character button 1006d arranged on the right side of the elapsed time 1006. According to the facial expression mode setting screen 1051, the character's facial expression becomes a favorable facial expression when continuously operated within 0.5 seconds, and if the waiting time occurs for 10 seconds, the facial expression of the character is an annoying facial expression. When the waiting time occurs for 30 seconds, the character's facial expression becomes a sleeping facial expression. Thus, the programming ability diagnostic apparatus (client terminal 2A) according to the present embodiment has a function of changing the facial expression of the character displayed on the display unit 25 based on the operation interval of the subject through the reception unit 24.

以上、図17〜図36を用いて説明したように、クライアント端末2Aで行われるプログラミング能力診断によれば、プログラミング課題に対する解決能力、特にプログラムの構造を構築する能力を簡易かつ迅速に診断することができるとともに、プログラミング課題の内容を勘違いして作成されたことによるプログラムの誤評価を防ぐことができる。   As described above with reference to FIGS. 17 to 36, according to the programming ability diagnosis performed at the client terminal 2A, the ability to solve the programming problem, particularly the ability to construct the structure of the program, can be diagnosed easily and quickly. It is possible to prevent mis-evaluation of the program due to misunderstanding of the contents of the programming task.

ただし、これらは定性的な診断の側面が強いため、プログラミング能力診断を行う者によって診断結果にバラツキが生じる可能性がある。ある程度のバラツキは許容するにしても、誰が診断を行う場合も同じ結果が出るような、何らかの客観的な指標があることが好ましい。例えば、読みやすさを追求してコメントが多く書かれたソースコードが、必ずしも品質の悪いソースコードとは限らない。かといって、一課題に対し、あまりに多くの時間が掛かったのでは生産性の観点から好ましいとはいえない。そこで、以下、被験者のプログラミング能力を定量的な評価について説明する。   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 CPU 11 executes the productivity / quality evaluation application 174 and reads the log data and timing described above from the answer DB 180 to perform quantitative skill evaluation.

サーバ1の解答DB180には、ソースコードの時系列の推移情報となる基本情報と、被験者が文法エラーチェックを行った時刻、発生した文法エラーの種類、発生した文法エラーの数、被験者が論理エラーチェックを行った時刻、発生した論理エラーの種類、発生した論理エラーの数等の補正情報とが記憶される。なお、図15を用いて上述したように、ビルドボタン903やテストボタン905をクリックした時刻、その結果、出力された文法エラーの種類や数などが記憶される。   The answer DB 180 of the server 1 includes basic information as time-series transition information of the source code, the time when the subject checked the grammatical error, the type of grammatical error that occurred, the number of grammatical errors that occurred, The correction information such as the check time, the type of logic error that occurred, the number of logic errors that occurred, etc. is stored. As described above with reference to FIG. 15, the time when the build button 903 or the test button 905 is clicked, and the type and number of output grammatical errors as a result are stored.

図37は、解答DB180に記憶されるデータ構成の例示図である。図37(a)は、入力情報テーブルのデータ構成の例示図である。基本情報であるソースコードの時系列の推移情報は、被験者のプログラミング作業における特定のタイミングにてソースコードが復元可能なフォーマットで記憶される。復元可能であればフォーマットは特に問わない。例えば図37(a)では、入力されたテキストデータ等を一文字ずつ入力時刻及び削除時刻とともに記憶している。入力情報テーブルを先頭から解析することにより、任意のタイミングでのソースコードを復元することができる。入力情報には、テキストデータだけではなく、改行、タブ、スペース、各種制御コード等を含めてもよい。また別の記憶方法として、一文字ずつの入力時刻と、各入力時刻における全ソースコードとを対応付けて記憶してもよい。この場合、データ容量は比較的大きくなるものの、任意のタイミングにおけるソースコードの復元アルゴリズムは単純となる。   FIG. 37 is a view showing an example of the data structure stored in the answer DB 180. As shown in FIG. FIG. 37A is a view showing an example of the data structure of the input information table. The time-series transition information of the source code, which is basic information, is stored in a format in which the source code can be restored at a specific timing in the subject's programming work. The format is not particularly limited as long as it can be restored. For example, in FIG. 37A, the input text data and the like are stored character by character together with the input time and the deletion time. By analyzing the input information table from the top, the source code at an arbitrary timing can be restored. The input information may include not only text data but also line breaks, tabs, spaces, various control codes, and the like. As another storage method, an input time for each character may be stored in association with all source codes at each input time. In this case, although the data capacity is relatively large, the source code restoration algorithm at an arbitrary timing is simple.

いずれの方法であっても、文字が入力されたタイミング毎に推移情報を記憶しているので、被験者のプログラミング作業における任意のタイミングでのソースコードを復元することができる。実際には必ずしも全てのタイミングでソースコードを復元する必要はないが、後述する複雑度の時系列推移データからの近似曲線の算出において、所定の精度を維持することが可能な程度のサンプリング数は必要となる。例えば、予め定めたキー入力の数の単位、リターンキーを操作したタイミング又は予め定めた特定の文字が入力されたタイミング等、予め定めた条件に合致した所定のタイミングにて中間生成プログラムとしてのソースコードを取得するようにしてもよい。   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 answer DB 180. As described above, the execution time of the grammatical error check can be stored by recognizing the timing when the build button 903 or the execution button 904 (FIG. 15) is clicked, and the execution time of the logical error check. Can be stored by recognizing the timing when the test button 905 (FIG. 15) is clicked.

サーバ1のCPU11は、ソースコードの時系列の推移情報に基づいて、複雑度の推移を時系列に演算した複雑度推移データを算出する。ここで「複雑度」とは、単に分岐が多い、階層が多い等の構造的複雑さを示す概念のみならず、ソースコード全体として無駄な論理構造、無駄なサブルーチン等を含むか否か等の評価も含む構造化されたソースコードであるか否かを評価する指標値を意味する概念である。一般にプログラム作成開始当初は、複雑度は0(ゼロ)であり、コーディングが進むごとに上昇する。そして、プログラムの完成時期には特定の値に収束する。   The CPU 11 of the server 1 calculates complexity transition data obtained by calculating the complexity transition in time series based on the time series transition information of the source code. Here, “complexity” is not only a concept indicating structural complexity such as many branches or many hierarchies, but also whether or not the entire source code includes useless logical structures, useless subroutines, etc. It is a concept that means an index value for evaluating whether or not the source code is structured including evaluation. Generally, at the beginning of program creation, the complexity is 0 (zero), and increases as the coding progresses. Then, it converges to a specific value when the program is completed.

「複雑度」の概念について、以下詳述する。本実施形態では、作成されたプログラムを完全にテストするのに必要なテストケース数(テストパターン数)、及び作成されたプログラムを変更、保守等するのに要する工数と相関のある定量値を、そのプログラムの複雑度と呼んでいる。テストケース数とプログラム変更、保守等に要する工数との間にも相互に相関があるので、概念としてどちらかに代表させてもよい。説明を簡単にするため、テストケース数のみを用いる場合について説明する。   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 (lines 13, 20, 21, 34, 36, and 38) and one while statement (line 33). There are a total of 7 branches. In general, if the number of branches is the same for all other conditions, the greater the number of branches, the greater the number of test cases for a complete test. Therefore, the number of branches 7 can be used as a quantitative value indicating complexity. .

同じく分岐に着目する場合でも、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 (lines 18, 19, 30, 31, 32), the complexity of the program shown in FIG. 5 is considered. In this case, a global variable may be added, and an argument may be added as a kind of variable.

また、複雑度としてインタフェース数を用いてもよい。例えば図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 (lines 7, 11, 24, and 28) and one function having two arguments (line 16). If it is considered that the number of arguments is the number of interfaces, the quantitative value 6 can be obtained as the number of interfaces of this program. The number of interfaces also depends on what units are considered for external interfaces. For example, the number of interfaces may be the number of public functions in a class, the number of external public functions in file units, or the like.

同じ理由で、ネストレベルが採用される場合もある。例えば図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 quantitative value 3 is obtained as the maximum nesting level in the entire program. In addition, instead of simply using the maximum nesting level, the complexity is calculated as a value obtained by multiplying each quantitative value by a weighting factor corresponding to the nesting level, for example, with the idea that the branch in the branch has a strong adverse effect. Also good.

他にも、例えば状態の数等の様々な定量値が採用されているが、一般にテストケース数、保守又は変更に要する工数と相関のある定量値であれば、複雑度として用いることができる。また、複雑度の計算精度を上げる目的で、複数の定量値を組み合わせてもよい。例えば、分岐数を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 (lines 30, 31, 32) are used. However, such a length (token length) is not related to the number of test cases, and maintenance is performed. Or, in terms of the man-hours required for the change, it cannot be said that the longer (shorter) is better, so at least it cannot be used alone as the complexity. The number of function points, the number of screens, etc. are also unsuitable for use alone as complexity. In general, a quantitative value that simply represents the software scale is inappropriate for use alone as a complexity (however, when calculating the complexity, it may be calculated with a quantitative value that represents the original complexity). except).

さらに、特定のコーディング規約に沿っているか否かを示す定量値等は、そもそも複雑度と無関係である場合が多く、少なくとも単独では複雑度として用いることはない。ただし、コーディング規約自体に複雑度を下げる効果が認められる場合に限り、用いる場合も生じうる。   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 CPU 11 of the server 1 calculates the ability evaluation value of the subject based on the time series transition data of the complexity. The ability evaluation value is a value at which the ability is evaluated to be higher as the subject changes in a state where the complexity value is lower and as the subject is completed in a shorter time. That is, it sets to the value which evaluates that the test subject who has found a simple solution in a shorter time has higher ability.

能力評価値は、品質能力に関する評価値と生産性能力に関する評価値とを独立して算出
することができる。例えば、複雑度は元来品質を示す指標であり、被験者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 CPU 11 of the server 1.

図40において、サーバ1のCPU11は、クライアント端末2Bの表示部25に、図11を用いて前述したように、プログラミング課題の課題名を表示させる(ステップS11)。そして、クライアント端末2Bから、プログラミング開始を示唆するスタートボタン806(図11参照)の操作信号を受信すると、タイマによる計時を開始し(ステップS12)、文字入力を受け付けたか否かを判断する(ステップS13)。なお、文字入力とは、テキストデータの入力に限定されるものではなく、削除、改行、タブ、カーソル移動、コピー&ペースト、検索操作等の編集操作に関連する制御コードの入力も含む。   40, the CPU 11 of the server 1 displays the task name of the programming task on the display unit 25 of the client terminal 2B as described above with reference to FIG. 11 (step S11). When the operation signal of the start button 806 (see FIG. 11) indicating the start of programming is received from the client terminal 2B, the timer starts counting (step S12), and it is determined whether or not character input has been accepted (step S12). S13). Note that the character input is not limited to the input of text data, but includes the input of control codes related to editing operations such as deletion, line feed, tab, cursor movement, copy and paste, and search operation.

CPU11が、文字入力を受け付けていないと判断した場合(ステップS13:NO)、CPU11は、文字入力の待ち状態となる。CPU11が、文字入力を受け付けたと判断した場合(ステップS13:YES)、CPU11は、被験者のプログラミング作業の任意のタイミングでのソースコードを復元することができるフォーマットで解答DB180に記憶する(ステップS14)。なお、全ての基本情報を記憶してもよいし、評価値の算出精度を維持することができる範囲で間引いて記憶してもよい。   When the CPU 11 determines that character input is not accepted (step S13: NO), the CPU 11 enters a character input waiting state. When CPU11 judges that the character input was received (step S13: YES), CPU11 memorize | stores in answer DB180 in the format which can decompress | restore the source code at the arbitrary timings of a test subject's programming work (step S14). . Note that all basic information may be stored, or may be stored by thinning out within a range where evaluation value calculation accuracy can be maintained.

CPU11は、被験者から文法エラーチェックの開始指示を受け付けたか否か(すなわち、図15に示すプログラミング画面において、ビルドボタン903がクリックされたか否か)を判断し(ステップS15)、CPU11が、開始指示を受け付けていないと判断した場合(ステップS15:NO)、CPU11は、開始指示の待ち状態となる。CPU11が、開始指示を受け付けたと判断した場合(ステップS15:YES)、CPU11は、被験者が開始指示の受け付け時点で作成していたソースコードに対して文法エラーチェックを実行し、文法エラーチェックの開始指示を受け付けた時刻を解答DB180に記憶して(ステップS16)、文法エラーが存在するか否かを判断する(ステップS17)。なお、文法エラーが存在するか否かは、コンパイラ言語である場合には、市販のコンパイラがコンパイル結果として出力する文字列に基づいて判断すればよい。また同時に実行可能モジュールを生成してもよい。さらに、解答DB180に文法エラーチェックの開始指示を受け付けた時刻を記憶することに限定されるものではなく、例えば文法エラーチェックの完了時刻であってもよい。   The CPU 11 determines whether or not a grammatical error check start instruction has been received from the subject (that is, whether or not the build button 903 has been clicked on the programming screen shown in FIG. 15) (step S15). Is determined not to be accepted (step S15: NO), the CPU 11 waits for a start instruction. When the CPU 11 determines that the start instruction has been received (step S15: YES), the CPU 11 performs a grammatical error check on the source code created by the subject when the start instruction is received, and starts the grammatical error check. The time when the instruction is accepted is stored in the answer DB 180 (step S16), and it is determined whether or not there is a grammatical error (step S17). In the case of a compiler language, whether or not there is a grammatical error may be determined based on a character string output as a compilation result by a commercially available compiler. At the same time, an executable module may be generated. Further, the answer DB 180 is not limited to storing the time when the instruction to start the grammatical error check is received, and may be the completion time of the grammatical error check, for example.

CPU11が、文法エラーが存在すると判断した場合(ステップS17:YES)、CPU11は、存在する文法エラーの種類及び数を、解答DB180に追加して記憶し(ステップS18)、処理をステップS13へ戻して、上述した処理を繰り返す。なお、フローには示していないが、文法エラーが存在しない場合であっても、文法エラーが存在しない旨を示す情報は、文法エラーチェックの完了時刻に対応付けて解答DB180に記憶される。   If the CPU 11 determines that there is a grammatical error (step S17: YES), the CPU 11 adds and stores the type and number of existing grammatical errors in the answer DB 180 (step S18), and returns the process to step S13. The above process is repeated. Although not shown in the flow, even when there is no grammatical error, information indicating that there is no grammatical error is stored in the answer DB 180 in association with the completion time of the grammatical error check.

CPU11が、文法エラーが存在しないと判断した場合(ステップS17:NO)、CPU11は、ステップS18をスキップして、被験者から論理エラーチェックの開始指示を受け付けたか否か(すなわち、図15に示すプログラミング画面において、テストボタン905がクリックされたか否か)を判断する(ステップS19)。CPU11が、開始指示を受け付けていないと判断した場合(ステップS19:NO)、CPU11は、開始指示の待ち状態となる。CPU11が、開始指示を受け付けたと判断した場合(ステップS19:YES)、CPU11は、被験者が開始指示の受け付け時点で作成していたプログラムに対して、テストケースに従った自動単体テストを実行し、論理エラーチェックの開始指示を受け付けた時刻を解答DB180に記憶して(ステップS20)、論理エラーが存在するか否かを判断する(ステップS21)。なお、論理エラーが存在するか否かは、テストケースの入力に対して、想定されている正しい出力を得ることができたか否かに基づいて判断すればよい。   When the CPU 11 determines that there is no grammatical error (step S17: NO), the CPU 11 skips step S18 and determines whether or not a logical error check start instruction is received from the subject (that is, the programming shown in FIG. 15). It is determined whether or not the test button 905 has been clicked on the screen (step S19). When the CPU 11 determines that the start instruction has not been received (step S19: NO), the CPU 11 enters a start instruction waiting state. When the CPU 11 determines that the start instruction has been received (step S19: YES), the CPU 11 performs an automatic unit test according to the test case on the program created by the subject at the time when the start instruction is received. The time when the error check start instruction is received is stored in the answer DB 180 (step S20), and it is determined whether or not there is a logic error (step S21). Whether or not there is a logic error may be determined based on whether or not a correct expected output can be obtained with respect to the input of the test case.

CPU11が、論理エラーが存在しないと判断した場合(ステップS21:NO)、CPU11は、プログラムが完成したと判断して処理を終了する。CPU11が、論理エラーが存在すると判断した場合(ステップS21:YES)、CPU11は、存在する論理エラーの種類及び数を、解答DB180に追加して記憶し(ステップS22)、処理をステップS23へ戻して、上述した処理を繰り返す。なお、フローには示していないが、論理エラーが存在しない場合であっても、論理エラーが存在しない旨を示す情報は、論理エラーチェックの完了時刻に対応付けて解答DB180に記憶される。また、被験者が、ソースコード整形等を行う意思を有する場合に備えて、処理を終了するか、さらにプログラミング作業を継続するかの判断を被験者に任せてもよい。   When the CPU 11 determines that there is no logic error (step S21: NO), the CPU 11 determines that the program is completed and ends the process. When the CPU 11 determines that a logic error exists (step S21: YES), the CPU 11 adds the type and number of existing logic errors to the answer DB 180 and stores them (step S22), and returns the process to step S23. The above process is repeated. Although not shown in the flow, even if there is no logical error, information indicating that no logical error exists is stored in the answer DB 180 in association with the completion time of the logical error check. Further, in preparation for a case where the subject has an intention to perform source code shaping or the like, it may be left to the subject to determine whether to end the process or continue the programming operation.

以上のように図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 server 1 will be described. FIG. 41 shows a flowchart of the processing procedure for calculating the ability evaluation value of the CPU 11.

まずCPU11は、解答DB180に記憶されているソースコードの時系列の推移情報を用いて、プログラミング作業の過程におけるソースコードを順次復元しながら複雑度を時系列に算出し、複雑度の時系列推移データを作成する(ステップS31)。   First, the CPU 11 uses the time series transition information of the source code stored in the answer DB 180 to calculate the complexity in time series while sequentially restoring the source code in the process of programming work, and the time series transition of the complexity Data is created (step S31).

複雑度は、ソースコードを入力として算出される。簡便な算出方法として、例えば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 server 1. As shown in FIG. 42, the complexity 91 is calculated for each sampling elapsed time from the start of the time measurement by the timer. In FIG. 42, in addition to the McCabe index, the number of words of the program is also used for calculating the complexity 91.

図41に戻って、CPU11は、被験者の姿勢による影響を除去するため、得られた複雑度推移データから能力評価に使用する有効区間を抽出する。「被験者の姿勢による影響」とは、例えば、被験者Aは充分に自動単体テスト、ソース整形等を行い、プログラミング作業を完了したのに対し、被験者Bはコーディング中に偶然論理エラーチェックが存在しないと判断され、そのままプログラミング作業を完了した、といった場合に発生する。この例では、たとえ被験者Aと被験者Bとの所要時間、最終複雑度が同じであったとしても、当然ながら評価値としては被験者Aの方が高く算出されなければならない。このような場合の評価値を正確に算出するために複雑度推移データから有効区間を抽出する。   Returning to FIG. 41, the CPU 11 extracts an effective section used for ability evaluation from the obtained complexity transition data in order to remove the influence of the posture of the subject. “Effect of subject's posture” means, for example, subject A fully conducted automatic unit tests, source shaping, etc. and completed programming work, but subject B judged that there was no accidental logic error check during coding This happens when the programming work is completed as it is. In this example, even if subject A and subject B have the same required time and final complexity, of course, subject A must be calculated higher as an evaluation value. In order to accurately calculate the evaluation value in such a case, an effective section is extracted from the complexity transition data.

有効区間を抽出するために、CPU11は、得られた複雑度の推移データに対して近似曲線を作成する(ステップS32)。近似曲線の作成方法としては、例えば二次曲線による最小二乗近似を組み合わせてもよいし、あらかじめ複数の曲線パターンを解答DB180に記憶しておき、パターンマッチングにより最も近似する曲線パターンで近似してもよい。   In order to extract an effective section, the CPU 11 creates an approximate curve for the obtained transition data of complexity (step S32). As a method of creating an approximate curve, for example, a least square approximation by a quadratic curve may be combined, or a plurality of curve patterns may be stored in the answer DB 180 in advance and approximated by a curve pattern that is most approximated by pattern matching. Good.

なお、近似曲線は、原理的には数点のサンプリング点からでも作成することができるが、精度を確保する上では数十点以上のサンプリング点が存在することが望ましい。サンプリング点を決定する方法としては、所定時間毎にサンプリング点を設ける方法、所定個数の文字入力があったタイミングをサンプリング点とする方法等、特に限定されるものではない。また、サンプリング点における代表値の決定方法としては、上述した各所定時間又は各所定個数内の複雑度の平均値を求める方法等を用いることができる。   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 server 1. In FIG. 43, the required time is divided into 100, and the approximate curve 101 is created using the average value of the complexity 91 of each section as a representative value. As an approximation method, after determining the aspect ratio of the curve from the final complexity of the source code created by the subject and the required time, pattern matching with about 2000 curves stored in advance in the answer DB 180 is performed. . In order to simplify the processing, the curve pattern group stored in the answer DB 180 is changed to a monotonous increase after the complexity has changed for a certain period of time 0, and is unified into a pattern that converges at a certain complexity. Although pattern matching is performed here, other methods such as weighted moving average may be used.

図41に戻って、近似曲線101が得られた時点で、CPU11は有効区間を抽出する(ステップS33)。図44は、サーバ1によって抽出された有効区間の例示図である。有効区間112は、処理を簡便にするために、複雑度が0から単調増加に転じた点を起点とし、単調増加が終了した点を終点としている。有効区間112は、初期設計区間111やテスト区間113を含まない純粋なプログラミング作業部分とみなすことができる。ここで、初期設計区間111やテスト区間113を全て除外するのも精度上問題があるとの考え方もあるので、初期設計区間111やテスト区間113を所定の重み付けで考慮して有効区間112を抽出してもよい。   Returning to FIG. 41, when the approximate curve 101 is obtained, the CPU 11 extracts an effective section (step S33). FIG. 44 is an illustration of an effective section extracted by the server 1. In order to simplify the processing, the effective section 112 starts from the point where the complexity has changed from 0 to monotonically increases, and ends from the point where the monotonous increase ends. The valid section 112 can be regarded as a pure programming work part that does not include the initial design section 111 and the test section 113. Here, there is also a view that it is problematic in accuracy to exclude all of the initial design section 111 and the test section 113, so that the effective section 112 is extracted in consideration of the initial design section 111 and the test section 113 with a predetermined weight. May be.

図45は、有効区間112を補正する必要がある場合の、サーバ1によって作成された近似曲線101の例示図である。抽出される有効区間112としては、図44では全体の一部分として抽出されている。しかし、図45に示すように有効区間112は拡大された有効区間112’として抽出するべき場合もある。   FIG. 45 is an exemplary diagram of the approximate curve 101 created by the server 1 when the effective section 112 needs to be corrected. The effective section 112 to be extracted is extracted as a part of the whole in FIG. However, as shown in FIG. 45, the effective section 112 may be extracted as an expanded effective section 112 '.

図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 effective section 112.

図41に戻って、最後にCPU11は、抽出された有効区間112に対して所定の演算を行い、能力評価値を算出する(ステップS34)。能力評価値の簡便な算出方法としては、例えば有効区間112の近似曲線101に対して積分値を求める方法がある。すなわち、時間軸と近似曲線101で囲まれた面積を求める方法である。斯かる面積は、被験者がプログラミング作業中に取り組んだ複雑度の総量であると考えられる。面積がより小さい被験者は、プログラミング課題を、より短時間に、よりシンプルに解決したことになるので、面積が小さいほど能力が高いと評価することができる。したがって、積分値(面積)がそのまま評価値となる。   Returning to FIG. 41, finally, the CPU 11 performs a predetermined calculation on the extracted effective section 112 to calculate a capability evaluation value (step S34). As a simple method for calculating the ability evaluation value, for example, there is a method of obtaining an integral value for the approximate curve 101 in the effective section 112. That is, it is a method for obtaining the area surrounded by the time axis and the approximate curve 101. Such an area is considered to be the total amount of complexity that the subject has worked on during the programming operation. Since the subject with a smaller area has solved the programming problem in a shorter time and more simply, it can be evaluated that the smaller the area, the higher the ability. Therefore, the integral value (area) becomes the evaluation value as it is.

上記積分値(面積)は、絶対値を算出するのではなく、別途基準となる評価値を設けておき、基準となる評価値との比率で算出しても良い。例えば既知の被験者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 approximate curve 101, raw data of complexity may be used. For example, a method of adding interval average values of transition data of complexity may be used. In this case, even if it is semantically, the calculation is merely addition, and the calculation processing load can be reduced. Further, even when the approximate curve 101 is used, if the curve is sufficiently simple, an evaluation value is calculated by simple multiplication using the time width of the effective section 112, the complexity data at a specific position, and a predetermined coefficient. May be.

また別の側面からの能力評価として、上記有効区間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 effective section 112 may be counted as an evaluation value. Complexity increases monotonically as programming progresses smoothly. Complexity may be reduced. It can be determined that as the number of times counted increases, the initial design prospect is poor and the degree of trial and error is high.

有効区間112の抽出された位置、大きさ等から被験者の傾向を示す評価値も得ることができる。例えば抽出された有効区間112が複雑度の全推移データの中で極端に前半に位置していた場合は、プログラミング課題をよく読まずに取り掛かる傾向が強いと判断することができる。仕様をよく理解せずにプログラミングを開始するのは、品質に悪影響を与えやすい開発姿勢である。   An evaluation value indicating the tendency of the subject can also be obtained from the extracted position, size, etc. of the effective section 112. For example, when the extracted effective section 112 is extremely located in the first half of all the transition data of the complexity, it can be determined that the tendency to start without reading the programming task well is strong. Starting development without understanding the specifications is a development attitude that tends to adversely affect quality.

逆に、抽出された有効区間112が複雑度の全推移データの中で極端に後半に位置していた場合は、よく動作チェックを行わずに完了したと判断することができる。そのような姿勢は、当然ながら品質に悪影響を与える。また、全体の所要時間が非常に長いにもかかわらず、抽出された有効区間112が極端に狭い場合は、仕様理解や動作チェックにあまりに時間をかけすぎた可能性があり、生産性改善の余地が大きいと判断することができる。有効区間112の位置の偏りや全体に占める比率を定量化することは容易である。   On the other hand, if the extracted effective section 112 is positioned extremely in the latter half of all the transition data of complexity, it can be determined that the operation has been completed without performing the operation check well. Such an attitude naturally has an adverse effect on quality. If the extracted effective section 112 is extremely narrow even though the total required time is very long, it may have taken too much time to understand the specifications and check the operation, and there is room for improvement in productivity. Can be determined to be large. It is easy to quantify the positional deviation of the effective section 112 and the ratio of the effective section 112 to the whole.

能力評価値は、被験者の品質能力と生産性能力とに独立に算出することも可能である。これは複雑度の推移データ自体が、縦軸に品質に関連の深い複雑度をとり、横軸に生産性に関連の深い時間をとって作成されているからである。   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 effective section 112 is taken into consideration.

このように、複雑度の推移データを用いることで、近似曲線の作成、有効区間の抽出等を実行することにより、被験者の能力評価値のみならず特性にまで踏み込んだ定量値を算出することができる。上述した例の他にも、複雑度に基づいて算出され、プログラミング能力を評価するに値する評価指標であれば、評価値として用いることができる。   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 CPU 11 presents the correction information stored in the answer DB 180 (subject error check timing, information on generated errors, etc.) to the evaluator in the form of a list or graph. The format to be presented may be any format as long as the evaluator knows when the subject performs an error check and what kind of error occurred at that time. In addition, the presentation method may be displayed on the display unit 25 (or the display unit 15 of the server 1) of the client terminal 2A of the challenger, may be printed, or later viewed with other software or another computer. It is possible to store or transmit the data in a predetermined format.

図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 server 1 is that it is a programming task that is completed in about 30 minutes to 2 hours when the server 1 is used for a company entrance examination or the like. This is because the reproducibility is high (therefore, the reproducibility is low) and it is inappropriate as a parameter for the ability evaluation value.

ただし、あまりにも極端なエラー状況であった場合、例えば文法エラーチェックも論理エラーチェックも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 client terminal 2B at a predetermined timing, and the timing and the complexity of the intermediate generation program are obtained. Based on this, since the skill of the subject can be quantitatively evaluated, the programming skill of the subject can be easily and objectively evaluated.

具体的に説明すると、課題出題者が視認し得る図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 chart display button 637 is clicked, for example, the display screen of the productivity / quality chart 6371 shown in FIG. 47 is displayed on the display section of the client terminal 2A. Appears at 25. The chart display screen shown in FIG. 47 corresponds to the screen shown by the example diagram shown in FIG. 46, and relatively shows the productivity ability and quality ability in the programming of the subject. The horizontal axis indicates the quality capability (indicated as quality in FIG. 46), and the vertical axis indicates the productivity capability (indicated as productivity in FIG. 46). 47, the forward direction is reversed, unlike FIG. That is, in FIG. 47, regarding the quality capability on the horizontal axis, the quality capability increases as it goes to the left, and as to the productivity capability on the vertical axis, the productivity capability increases as it goes downward. 47, the subject 2 (indicated by 2 surrounded by a square frame), the subject 3 (indicated by 3 surrounded by a square frame), the subject 5 (indicated by 5 surrounded by a square frame), the subject 6 The performance evaluation (indicated by 6 surrounded by a square frame) is performed. In the answer confirmation screen shown in FIG. 2, No. 3, no. 5, no. This is because 6 is selected.

図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 subject 3 is 2.5 times more productive and the quality is about 2.5 times better than the subject 6 (that is, the lower the left of the productivity / quality chart 6371, the higher the ability). To be placed). Therefore, if the subject 6 is an existing employee and the subjects 2, 3, and 5 are applicants for the recruitment test, the subject 3 is employed because it is several times more capable than the existing employee (subject 6). Can make appropriate decisions such as As described above, in order to relatively determine the skill of the subject, data serving as a reference in the productivity / quality chart is required, so the item of the reference 632 shown in FIG. 16 is provided. Then, in the productivity / quality chart 6371 shown in FIG. 47, the subject person can easily determine the subject's skill relative to each other by putting a color in the square frame indicating the subject 6 (the person who becomes the reference). .

また、図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 position adjustment box 6372, a spin button 6373 for increasing / decreasing a value in this box, a quality capability reference position adjustment box 6374, and a spin button 6375 for increasing / decreasing the value in this box are displayed. The change pitch is in increments of 0.1. The default reference position is (5.0, 5.0). In order to change the reference position, the challenger may click the spin button 6373 or the spin button 6375.

さらに、図47では、生産性・品質チャート6371に面積一定線6377を描画するか否かを選択するためのチェックボックス6376が設けられている。生産性・品質チャート6371内に描画された面積一定線6373は、生産性能力値×品質能力値が一定になるように一本又は複数本描画される。これにより、各被験者のスキルを、基準となる被験者6と比べて、総合的に優れているか劣っているかを相対判断することができる。なお、閉じるボタン6378がクリックされると、図47に示す画面は閉じられる。   Further, in FIG. 47, a check box 6376 for selecting whether or not to draw a constant area line 6377 on the productivity / quality chart 6371 is provided. One or a plurality of constant area lines 6373 drawn in the productivity / quality chart 6371 are drawn so that productivity capacity value × quality capacity value is constant. Thereby, it can be relatively judged whether each subject's skill is comprehensively superior or inferior to the reference subject 6. Note that when the close button 6378 is clicked, the screen shown in FIG. 47 is closed.

以上、図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 analysis column 1011 by providing a check box in the parameter setting 1014 shown in FIG. 26 (not shown in FIG. 26). Specifically, when the test passing program and the intermediate generation program are downloaded to the client terminal 2 </ b> A, they may be downloaded together and stored in the storage unit 27.

また、本実施形態に係るプログラミング能力診断装置(クライアント端末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 (client terminal 2A) according to the present embodiment, there is a diagnostic report output function. FIG. 48 is an example of a diagnostic report (first sheet), and FIG. 49 is an example of a diagnostic report (second sheet). The reports shown in FIGS. 48 and 49 include the reduced version productivity / quality chart 1071 obtained by reducing the productivity / quality chart described with reference to FIGS. 37 to 47 and the programming described with reference to FIGS. A diagram (a reduced version complexity transition graph 1072, a reduced version code duplication diagram 1073, a reduced version function life cycle diagram 1074, a reduced version flowchart 1075), which is a reduced version of each diagram for analyzing the creation process, is printed. In addition, a comment field is printed in the vicinity of each figure, and a person who performs a programming ability diagnosis can output a report after entering a comment.

このように、診断レポート出力機能を設けることで、被験者に対し、定性的かつ定量的な診断結果を提供することができる。なお、この診断レポート出力機能は、クライアント端末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 control unit 20 of the client terminal 2A reads the reduced version productivity / quality chart 1071 and the like from the storage unit 27 and prints out a printer (not shown in FIG. 17) including a printer or the like. ) Can be realized by transmitting a print signal. This printing unit may be a printer or the like externally connected to the client terminal 2A (via USB or the like). Alternatively, as a diagnostic report output function, data may be output in Excel (registered trademark) format.

[実施形態の主な効果]
以上説明したように、本発明の第1実施形態に係るプログラミング能力診断装置(クライアント端末2A)によれば、複数の関数モジュール各々の処理手順(図28に示すフローチャートなど)又は複数の関数モジュール間の構造が可視化された図(例えばクラス図など)を視認することによって、自身がプログラミングに熟知していなくても、また、被験者が大勢いた場合であっても、プログラムの構造を構築する能力を簡易かつ迅速に診断することができる。
[Main effects of the embodiment]
As described above, according to the programming capability diagnosis device (client terminal 2A) according to the first embodiment of the present invention, the processing procedure (such as the flowchart shown in FIG. 28) of each of the plurality of function modules or between the plurality of function modules. The ability to build the structure of a program, even if you are not familiar with programming or if there are a large number of subjects Diagnosis can be made easily and quickly.

また、図12のテストボタン905を用いることによって、プログラミング課題の内容を勘違いして作成されたプログラムは、プログラミング能力診断の対象から排除することができるので、プログラミング課題の内容を勘違いしてプログラムが作成されたことに起因する誤評価を防ぐことができる。   Also, by using the test button 905 in FIG. 12, a program created by misunderstanding the content of the programming task can be excluded from the target of the programming ability diagnosis. It is possible to prevent erroneous evaluation due to the creation.

また、タイミング解析部33の機能により、複数の関数モジュールの各々が生成されたタイミングを知ることができ、ひいてはプログラムの構造を頭の中で如何に早く構築することができるか、といった能力を診断することができる。また、検索部34の機能によれば、関数モジュールが被験者によって記述されたタイミングを把握することができる。また、コード重複率解析部35の機能により、プログラムの構造を効率的に構築できているか、といった能力を診断することができる。   Further, the function of the timing analysis unit 33 can know the timing at which each of the plurality of function modules is generated, and thus diagnoses the ability of how quickly the program structure can be built in the head. can do. Moreover, according to the function of the search part 34, the timing when the function module was described by the test subject can be grasped. In addition, the ability of the code duplication rate analysis unit 35 to diagnose whether or not the program structure can be efficiently constructed can be diagnosed.

さらに、プログラミング能力診断を行う者は、受付部24を操作して、可視化図生成部32により生成された図と、タイミング解析部33の解析結果と、コード重複率解析部35の解析結果とを、表示部25において選択的に切り替えることができるので、プログラムの構造を構築する能力を様々な視点から簡易かつ迅速に診断することができる。   Furthermore, the person who performs the programming ability diagnosis operates the reception unit 24 to display the diagram generated by the visualization diagram generation unit 32, the analysis result of the timing analysis unit 33, and the analysis result of the code duplication rate analysis unit 35. Since the display unit 25 can selectively switch, the ability to construct the program structure can be easily and quickly diagnosed from various viewpoints.

1 サーバ
2A,2B クライアント端末
20 制御部
24 受付部
25 表示部
26 通信部
27 記憶部
31 再生部
32 可視化図生成部
33 タイミング解析部
34 検索部
35 コード重複率解析部
DESCRIPTION OF SYMBOLS 1 Server 2A, 2B Client terminal 20 Control part 24 Reception part 25 Display part 26 Communication part 27 Storage part 31 Playback part 32 Visualization figure generation part 33 Timing analysis part 34 Search part 35 Code duplication rate analysis part

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.
JP2009151714A 2009-06-26 2009-06-26 Programming ability diagnosis device, programming ability diagnosis method, and computer program Pending JP2011008554A (en)

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)

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

Cited By (8)

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