(57)【要約】【課題】オブジェクト指向によるソフトウェア開発において、現状の完成度を知ることができ、進捗の管理を行うことが容易となるプログラム評価方法を提供する。【解決手段】モデル図内に存在する全クラスの各メソッドに対し、対応するソースファイル内でメソッドが実装されているかどうかをチェックする。各メソッドの中にコメント以外の行が存在しない時、そのメソッドは実装されていないと判断する。未実装のメソッドの数を合計し、モデル図内に存在する全メソッド数との割合を算出し、ユーザに通知する。【選択図】        図１
2004227105.tif 000002
【特許請求の範囲】
【請求項１】
モデル図内に存在する全クラスの各メソッドに対し、対応するソースファイル内でメソッドが実装されているかどうかをチェックする実装チェックステップと、
前記各メソッドの実処理部分にコメント以外の行が存在しない時、そのメソッドは実装されていないと判断する判断ステップと、
未実装のメソッドの数を合計し、前記モデル図内に存在する全メソッド数との割合を算出する算出ステップと、
前記算出結果をユーザに通知する通知ステップと、
を有することを特徴とするプログラム評価方法。
【請求項２】
モデル図内に存在する全クラスの各メソッドに対し、対応するソースファイル内でメソッドが実装されているかどうかをチェックする実装チェックステップと、
前記各メソッドの実処理部分にコメント以外の行が存在しない時、そのメソッドは実装されていないと判断する判断ステップと、
未実装のメソッドの数を合計し、前記モデル図内に存在する全メソッド数との割合を算出する算出ステップと、
前記算出結果をユーザに通知する通知ステップと、
スーパークラスで敢えて空にしていると考えられるメソッド、つまりサブクラスで実装される予定のメソッドが、仮想関数かどうかをチェックする仮想関数チェックステップとを有し、
前記サブクラスで実装される予定のメソッドが仮想関数であれば、前記メソッドを実装済みと見なすことを特徴とするプログラム評価方法。
【請求項３】
モデル図内に存在する全クラスの各メソッドに対し、対応するソースファイル内でメソッドが実装されているかどうかをチェックする実装チェックステップと、
前記各メソッドの実処理部分にコメント以外の行が存在しない時、そのメソッドは実装されていないと判断する判断ステップと、
未実装のメソッドの数を合計し、前記モデル図内に存在する全メソッド数との割合を算出する算出ステップと、
前記算出結果をユーザに通知する通知ステップと、
スーパークラスで敢えて空にしていると考えられるメソッド、つまりサブクラスで実装される予定のメソッドが、仮想関数かどうかをチェックする仮想関数チェックステップと、
現状の完成度を算出する過程で、未実装としてカウントしたメソッド名を記憶する記憶ステップとを有し、
最終的に完成度を通知する段階で、前記記憶ステップで記憶された、実装する必要があるメソッド名を列挙して出力することを特徴とするプログラム評価方法。
【請求項４】
前記サブクラスで実装される予定のメソッドが仮想関数かどうかは、前記メソッドを持つクラスのヘッダファイルを見ることによりチェックすることを特徴とする請求項２記載のプログラム評価方法。
【請求項５】
前記ヘッダファイルにある前記メソッドのプロトタイプ宣言にて、ｖｉｒｔｕａｌ宣言がされていれば、前記メソッドは仮想関数となることを特徴とする請求項４記載のプログラム評価方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、オブジェクト指向言語によるプログラム評価方法に関する。
【０００２】
【従来の技術】
近年、プログラムの再利用という観点から、オブジェクト指向によるソフトウェア開発が広く実践されている。オブジェクト指向の分析・設計段階で作成するモデル図（ＵＭＬ表記など）から、ソースコードを自動生成し、これをソフトウェア開発に利用する開発手段も存在する。
【０００３】
しかし、こういったソースコード自動生成機能を用いて生成されるソースコードは、主にフレーム部（クラスの宣言、属性の宣言、メソッドの引数や返り値など）のみであり、メソッドの中身は空のままとなる。（メソッドの中身を生成するツールも僅かだが存在する。）
【０００４】
ここで問題となるのが、中身が空のメソッドが多数生成され、実際のソフトウェアの完成度が見えづらくなる点である。オブジェクト指向開発では、クラスごとにソース／ヘッダファイルが存在し、従来の手法に比べファイル数が多くなるため、より完成度の把握が難しくなる。従来の手法と異なり、一応関数は存在するため、呼び出し元でコンパイルエラーとならないことも、完成度が見えない要因の一つである。
【０００５】
従来、未定義のメソッド、フレーム、スロットの有無をチェックし、未完成状態のオブジェクト指向プログラムにおいての評価を可能とするプログラム評価方法がある（例えば、特許文献１参照）。この方法は、例えばプログラム実行中に未定義のメソッドをコールした場合、そのメソッドの処理すべき内容を表示し、返り値の入力を促すというものである。
【０００６】
【特許文献１】
特開平５−２６５８０４号公報
【０００７】
【発明が解決しようとする課題】
しかしながら、従来の特許文献１記載の発明は、プログラム評価を実行することはできるが、ユーザがソフトウェアの現状の完成度を把握することは困難である。
【０００８】
本発明は、上記事情に鑑みてなされたものであり、中身が空のメソッドの割合を算出することで、完成度の把握を支援するプログラム評価方法を提供することを目的とする。
【０００９】
また、オブジェクト指向では、継承という概念があり、スーパークラスのメソッドを敢えて空にし、サブクラスにて実装を行うという設計手法が存在する。このとき、敢えて空にしているメソッドも未実装のものとしてカウントしてしまい、正確な完成度が算出できなくなる。そこで、本発明は、スーパークラスのメソッドのうち、敢えて空にしていると考えられるメソッドを実装済みと見なし、完成度を算出するプログラム評価方法を提供することを目的とする。
【００１０】
また、現状のソフトウェアの完成度を知ることができるだけでなく、あとどのメソッドを実装する必要があるのかという情報を知ることが必要となる。実際のソフトウェア開発環境においては、このような情報も有効であり、どの部分に遅れが生じているのかを把握することもできる。そこで、本発明は、実装の必要があるメソッドを一覧として出力するプログラム評価方法を提供することを目的とする。
【００１１】
【課題を解決するための手段】
かかる目的を達成するために、請求項１記載のプログラム評価方法は、モデル図内に存在する全クラスの各メソッドに対し、対応するソースファイル内でメソッドが実装されているかどうかをチェックする実装チェックステップと、各メソッドについて中かっこで囲まれた、実処理部分にコメント以外の行が存在しない時、そのメソッドは実装されていないと判断する判断ステップと、未実装のメソッドの数を合計し、モデル図内に存在する全メソッド数との割合を算出する算出ステップと、算出結果をユーザに通知する通知ステップとを有することを特徴としている。
【００１２】
請求項２記載のプログラム評価方法は、モデル図内に存在する全クラスの各メソッドに対し、対応するソースファイル内でメソッドが実装されているかどうかをチェックする実装チェックステップと、各メソッドの中かっこで囲まれた、実処理部分にコメント以外の行が存在しない時、そのメソッドは実装されていないと判断する判断ステップと、未実装のメソッドの数を合計し、モデル図内に存在する全メソッド数との割合を算出する算出ステップと、算出結果をユーザに通知する通知ステップと、スーパークラスで敢えて空にしていると考えられるメソッド、つまりサブクラスで実装される予定のメソッドが、仮想関数かどうかをチェックする仮想関数チェックステップとを有し、サブクラスで実装される予定のメソッドが仮想関数であれば、メッソドを実装済みと見なすことを特徴としている。
【００１３】
請求項３記載のプログラム評価方法は、モデル図内に存在する全クラスの各メソッドに対し、対応するソースファイル内でメソッドが実装されているかどうかをチェックする実装チェックステップと、各メソッドの中かっこで囲まれた、実処理部分にコメント以外の行が存在しない時、そのメソッドは実装されていないと判断する判断ステップと、未実装のメソッドの数を合計し、モデル図内に存在する全メソッド数との割合を算出する算出ステップと、算出結果をユーザに通知する通知ステップと、スーパークラスで敢えて空にしていると考えられるメソッド、つまりサブクラスで実装される予定のメソッドが、仮想関数かどうかをチェックする仮想関数チェックステップと、現状の完成度を算出する過程で、未実装としてカウントしたメソッド名を記憶する記憶ステップとを有し、最終的に完成度を通知する段階で、記憶ステップで記憶された、実装する必要があるメソッド名を列挙して出力することを特徴としている。
【００１４】
請求項４記載のプログラム評価方法は、請求項２記載のプログラム評価方法において、サブクラスで実装される予定のメソッドが仮想関数かどうかは、メソッドを持つクラスのヘッダファイルを見ることによりチェックすることを特徴としている。
【００１５】
請求項５記載のプログラム評価方法は、請求項４記載のプログラム評価方法において、ヘッダファイルにあるメソッドのプロトタイプ宣言にて、ｖｉｒｔｕａｌ宣言がされていれば、メソッドは仮想関数となることを特徴としている。
【００１６】
【発明の実施の形態】
以下、本発明の実施の形態について、添付図面を参照して詳細に説明する。
【００１７】
まず、本発明の第１の実施形態について説明する。第１の実施形態では、中身が空のメソッドの割合を算出する。
【００１８】
モデル図内に存在する全クラスの各メソッドに対し、対応するソースファイル内でメソッドが実装されているかどうかをチェックする。各メソッドの｛  ｝（中かっこで示される実処理部分）で囲まれた部分で、コメント以外の行が存在しないとき、そのメソッドは実装されていないと判断する。未実装のメソッドの数を合計し、モデル図内に存在する全メソッド数との割合を算出し、ユーザに通知する。
【００１９】
第１の実施形態は、例えば図１に示すようなフローで処理を行う。まず、ユーザがソフトウェアの完成度を算出する要求を行う（Ｓ１０１）。ここでは、全メソッド（Ａ）、未実装のメソッド（Ｂ）はともにカウントされていない。次に、全メソッド数を算出し（Ｓ１０２）、検索されていないソースファイルがあるかを調べる（Ｓ１０３）。ソースファイルがすべて検索されていれば（Ｓ１０３／ＮＯ）、全ファイルの検索を終了し（Ｓ１０５）、完成度を算出し（Ｓ１０８）、完成度の出力を行いユーザに結果を通知する（Ｓ１１０）。
【００２０】
未検索ファイルがある場合は（Ｓ１０３／ＹＥＳ）、そのメソッドを検索する（Ｓ１０４）。検索後、そのメソッドのかっこで囲まれた部分にコメント以外の行が存在するかどうかを調べる（Ｓ１０６）。コメント以外の行がある場合（Ｓ１０６／ＹＥＳ）、メソッドを実装済と判断し、１ファイルの検索を終了とし（Ｓ１０９）、再び未検索ファイルがあるかをチェックする（Ｓ１０３）。以後、未検索のファイルがなくなるまで上記処理を繰り返す。
【００２１】
コメント以外の行がない場合（Ｓ１０６／ＮＯ）、その検索メソッドを未実装と見なし、未実装メソッド数としてカウントし、記憶する（Ｓ１０７）。そして、１ファイルの検索を終了とし（Ｓ１０９）、再び未検索ファイルがあるかをチェックする（Ｓ１０３）。以上の処理を繰り返し、ソースファイルがすべて検索されたら（Ｓ１０３／ＮＯ）、全ファイルの検索を終了し（Ｓ１０５）、完成度を算出し（Ｓ１０８）、完成度の出力を行いユーザに結果を通知する（Ｓ１１０）。
【００２２】
次に、本発明の第２の実施形態について説明する。第２の実施形態では、仮想関数を除いて完成度を算出する。
【００２３】
メソッドが仮想関数かどうかをチェックし、仮想関数であれば実装済みと見なす。仮想関数かどうかは、そのメソッドを持つクラスのヘッダファイルを見ることでチェックする。ヘッダファイルにあるメソッドのプロトタイプ宣言にて、ｖｉｒｔｕａｌ宣言がされていればそのメソッドは仮想関数となる。未実装と判断したメソッドの数を合計し、モデル図内に存在する全メソッド数との割合を算出し、ユーザに通知する。
【００２４】
第２の実施形態は、例えば、図２に示すようなフローで処理を行う。まず、第１の実施形態と同様に、ユーザがソフトウェアの完成度を算出する要求を行う（Ｓ２０１）。ここでは、全メソッド（Ａ）、未実装のメソッド（Ｂ）はともにカウントされていない。次に、全メソッド数がいくつあるかを算出し（Ｓ２０２）、検索されていないソースファイルがあるかを調べる（Ｓ２０３）。ソースファイルがすべて検索されていれば（Ｓ２０３／ＮＯ）、全ファイルの検索を終了し（Ｓ２０５）、完成度を算出し（Ｓ２０８）、完成度の出力を行いユーザに結果を通知する（Ｓ２１０）。
【００２５】
未検索ファイルがある場合は（Ｓ２０３／ＹＥＳ）、そのメソッドを検索する（Ｓ２０４）。検索後、そのメソッドのかっこで囲まれた部分にコメント以外の行が存在するかどうかを調べる（Ｓ２０６）。コメント以外の行がある場合（Ｓ２０６／ＹＥＳ）、メソッドを実装済と判断し、１ファイルの検索を終了とし（Ｓ２１２）、再び未検索ファイルがあるかをチェックする（Ｓ２０３）。以後、未検索のファイルがなくなるまで上記処理を繰り返す。
【００２６】
コメント以外の行がない場合（Ｓ２０６／ＮＯ）、ヘッダファイルからチェック中のメソッドを検索する（Ｓ２０７）。そして、チェック中のメソッドが仮想関数かどうかを調べる（Ｓ２０９）。仮想関数であった場合は（Ｓ２０９／ＹＥＳ）、１ファイルの検索を終了とし（Ｓ２１２）、再び未検索ファイルがあるかをチェックする（Ｓ２０３）。
【００２７】
仮想関数でない場合（Ｓ２０９／ＮＯ）、その検索メソッドを未実装と見なし、未実装メソッド数としてカウント、記憶する（Ｓ２１１）。そして、１ファイルの検索を終了とし（Ｓ２１２）、再び未検索ファイルがあるかをチェックする（Ｓ２０３）。以上の処理を繰り返し、ソースファイルがすべて検索されたら（Ｓ２０３／ＮＯ）、全ファイルの検索を終了し（Ｓ２０５）、完成度を算出し（Ｓ２０８）、完成度の出力を行いユーザに結果を通知する（Ｓ２１０）。
【００２８】
次に、本発明の第３の実施形態について説明する。第３の実施形態では、実装する必要があるメソッド名を出力する。
【００２９】
第３の実施形態は、上記第１及び第２の実施形態の処理フローにおいて、現状の完成度を算出する過程で、未実装としてカウントしたメソッド名を記憶しておき、最終的に完成度を通知する段階で、記憶していたメソッド名を列挙して出力する。
【００３０】
第３の実施形態は、例えば、図３に示すようなフローで処理を行う。まず、第１、第２の実施形態と同様に、ユーザがソフトウェアの完成度を算出する要求を行う（Ｓ３０１）。ここでは、全メソッド（Ａ）、未実装のメソッド（Ｂ）はともにカウントされていない。次に、全メソッド数を算出し（Ｓ３０２）、検索されていないソースファイルがあるかを調べる（Ｓ３０３）。ソースファイルがすべて検索されていれば（Ｓ３０３／ＮＯ）、全ファイルの検索を終了し（Ｓ３０５）、完成度を算出し（Ｓ３０８）、完成度の出力を行いユーザに結果を通知する（Ｓ３１０）。
【００３１】
未検索ファイルがある場合は（Ｓ３０３／ＹＥＳ）、そのメソッドを検索する（Ｓ３０４）。検索後、そのメソッドのかっこで囲まれた部分にコメント以外の行が存在するかどうかを調べる（Ｓ３０６）。コメント以外の行がある場合（Ｓ３０６／ＹＥＳ）、メソッドを実装済と判断し、１ファイルの検索を終了とし（Ｓ３１２）、再び未検索ファイルがあるかをチェックする（Ｓ３０３）。以後、未検索のファイルがなくなるまで上記処理を繰り返す。
【００３２】
コメント以外の行がない場合（Ｓ３０６／ＮＯ）、ヘッダファイルからチェック中のメソッドを検索する（Ｓ３０７）。そして、チェック中のメソッドが仮想関数かどうかを調べる（Ｓ３０９）。仮想関数であった場合は（Ｓ３０９／ＹＥＳ）、１ファイルの検索を終了とし（Ｓ３１２）、再び未検索ファイルがあるかをチェックする（Ｓ３０３）。
【００３３】
仮想関数でない場合（Ｓ３０９／ＮＯ）、その検索メソッドを未実装と見なし、未実装メソッド数としてカウント及び記憶し、また、記憶部にチェック中のメソッド名を追加する（Ｓ３１１）。そして、１ファイルの検索を終了とし（Ｓ２１２）、再び未検索ファイルがあるかをチェックする（Ｓ３０３）。以上の処理を繰り返し、ソースファイルがすべて検索されたら（Ｓ３０３／ＮＯ）、全ファイルの検索を終了し（Ｓ３０５）、完成度を算出し（Ｓ３０８）、完成度及び記憶していた未実装のメソッド名を列挙して出力を行い、ユーザに結果を通知する（Ｓ３１０）。
【００３４】
【発明の効果】
以上の説明から明らかなように、請求項１記載の発明によれば、モデル図内に存在する全クラスの各メソッドに対し、対応するソースファイル内でメソッドが実装されているかどうかをチェックし、各メソッドにおいて、中かっこを用いて囲まれた実処理部分にコメント以外の行が存在しないとき、そのメソッドは実装されていないと判断し、未実装のメソッドの数を合計し、モデル図内に存在する全メソッド数との割合を算出し、ユーザに通知するので、オブジェクト指向によるソフトウェア開発にありがちな、未実装のメソッドが多数存在するような状態においても、現状の完成度を知ることができ、進捗の管理を行うことが容易となる。
【００３５】
請求項２記載の発明によれば、スーパークラスで敢えて空にしていると考えられるメソッド、つまりサブクラスで実装される予定のメソッドが仮想関数であるかどうかをチェックし、仮想関数であれば実装済みと見なすことを特徴としているので、より正確な完成度の算出が可能である。
【００３６】
請求項３記載の発明によれば、現状の完成度を算出する過程で、未実装としてカウントしたメソッド名を記憶しておき、最終的に完成度を通知する段階で、記憶していたメソッド名を列挙して出力することを特徴としているので、今後実装する必要のあるメソッドが明確になり、プロジェクトレベルだけでなく、各担当レベルの進捗の管理を容易に行うことができる。
【００３７】
請求項４記載の発明によれば、請求項２記載の発明において、サブクラスで実装される予定のメソッドが仮想関数かどうかは、メソッドを持つクラスのヘッダファイルを見ることによりチェックすることを特徴としているので、スーパークラスで敢えて空にしているメソッドを実装済みと見なすことができ、より正確な完成度の算出が可能である。
【００３８】
請求項５記載の発明によれば、請求項４記載の発明において、ヘッダファイルにあるメソッドのプロトタイプ宣言にて、ｖｉｒｔｕａｌ宣言がされていれば、メソッドは仮想関数となることを特徴としているので、スーパークラスで敢えて空にしているメソッドを実装済みと見なすことができ、より正確な完成度の算出が可能である。
【図面の簡単な説明】
【図１】本発明の第１の実施形態にかかる処理動作を示すフローチャートである。
【図２】本発明の第２の実施形態にかかる処理動作を示すフローチャートである。
【図３】本発明の第３の実施形態にかかる処理動作を示すフローチャートである。
【図１】
2004227105.tif 000003
【図２】
2004227105.tif 000004
【図３】
2004227105.tif 000005