IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日本総合研究所の特許一覧

特許7547066ソースコードの保守性を評価するシステムにおける管理サーバ、管理方法及びプログラム
<>
  • 特許-ソースコードの保守性を評価するシステムにおける管理サーバ、管理方法及びプログラム 図1
  • 特許-ソースコードの保守性を評価するシステムにおける管理サーバ、管理方法及びプログラム 図2
  • 特許-ソースコードの保守性を評価するシステムにおける管理サーバ、管理方法及びプログラム 図3
  • 特許-ソースコードの保守性を評価するシステムにおける管理サーバ、管理方法及びプログラム 図4
  • 特許-ソースコードの保守性を評価するシステムにおける管理サーバ、管理方法及びプログラム 図5
  • 特許-ソースコードの保守性を評価するシステムにおける管理サーバ、管理方法及びプログラム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-30
(45)【発行日】2024-09-09
(54)【発明の名称】ソースコードの保守性を評価するシステムにおける管理サーバ、管理方法及びプログラム
(51)【国際特許分類】
   G06F 8/20 20180101AFI20240902BHJP
【FI】
G06F8/20
【請求項の数】 7
(21)【出願番号】P 2020062271
(22)【出願日】2020-03-31
(65)【公開番号】P2021163016
(43)【公開日】2021-10-11
【審査請求日】2023-02-03
(73)【特許権者】
【識別番号】302064762
【氏名又は名称】株式会社日本総合研究所
(74)【代理人】
【識別番号】110002871
【氏名又は名称】弁理士法人坂本国際特許商標事務所
(72)【発明者】
【氏名】太田 佳樹
(72)【発明者】
【氏名】稲垣 玲
(72)【発明者】
【氏名】瀬戸 寛之
【審査官】北川 純次
(56)【参考文献】
【文献】特開平08-076992(JP,A)
【文献】特開2006-059276(JP,A)
【文献】特開2013-218607(JP,A)
【文献】米国特許出願公開第2013/0074038(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/20
G06F 8/70-8/77
G06F 9/44
G06F 11/34
(57)【特許請求の範囲】
【請求項1】
プログラムのソースコードの品質を評価する評価システムの管理サーバであって、
前記プログラムの機能単位であるモジュールの識別子に、当該モジュールのソースコードの作成者の個人別情報、及び作成又は更新時の日時情報を対応付けて格納するソースコードライブラリと、
前記ソースコードライブラリのソースコードをモジュールごとに解析するソースコード解析部と、
前記モジュールの想定される利用頻度に基づいて、当該モジュールごとの品質の評価基準値を設定する評価基準設定部と、
前記プログラムの開発期間において、前記評価基準値に基づいて、前記品質を判定する開発品質判定部と、を備え、
前記評価基準設定部は、前記利用頻度が所定値より高いモジュールの評価基準値を、前記利用頻度が当該所定値よりも低いモジュールの評価基準値よりも高く設定する
ことを特徴とする管理サーバ。
【請求項2】
前記品質は、ソースコードの可読性に関する品質であることを特徴とする請求項1に記載の管理サーバ。
【請求項3】
前記想定される利用頻度は、前記モジュールが提供する機能の画面のユーザのアクセス頻度又は画面以外の入出力装置若しくは他のモジュールとの直接又は間接のアクセス頻度であり、前記利用頻度は、過去のプロジェクトにおける類似モジュールのアクセス頻度に基づいて決定されることを特徴とする請求項1又は2に記載の管理サーバ。
【請求項4】
前記評価基準設定部は、前記品質の評価値を、前記モジュールの作成難易度を考慮して、過去のプロジェクトの統計データを用いて、評価値のスコアを同一化する統計処理によって算出された換算値を用いることを特徴とする請求項1から3までのいずれか1項に記載の管理サーバ。
【請求項5】
前記個人別情報に対応付けられたソースコードを抽出し、複数の前記日時情報における前記作成者ごとの前記評価の変化を検出することを特徴とする請求項1から4までのいずれか1項に記載の管理サーバ。
【請求項6】
プログラムのソースコードの品質を評価する管理方法であって、
前記プログラムの機能単位であるモジュールの識別子に、当該モジュールのソースコード及び当該ソースコードの作成者の個人別情報、及び作成又は更新時の日時情報を対応付けてソースコードライブラリに格納するステップと、
前記ソースコードライブラリのソースコードをモジュールごとに解析するステップと、
前記モジュールの想定される利用頻度に基づいて、当該モジュールごとの品質の評価基準値を設定するステップと、
前記プログラムの開発期間において、前記評価基準値に基づいて、前記品質を判定するステップと、
前記評価基準値を設定するステップにおいて、前記利用頻度が所定値より高いモジュールの評価基準値を、前記利用頻度が当該所定値よりも低いモジュールの評価基準値よりも高く設定するステップと、
をコンピュータが実行することを特徴とする管理方法。
【請求項7】
請求項6に記載の各ステップをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソースコードを評価するシステム等に関する。
【背景技術】
【0002】
近年、ソフトウェア開発において、プログラムのソースコードを解析し、プログラマのスキルを評価する方法やプログラマのスキルに基づいて精度の高い開発計画を立案する方法が知られている。
【0003】
例えば、特許文献1には、ITエンジニアのプログラミングスキルを評価するためのプログラミングスキル評価装置が開示されている。この技術によれば、プログラミングスキルの被評価者である求職者に対して課題となるプログラミング要件を求人情報提供サーバから送信し、被評価者が作成したプログラムのソースコードを受信して、プログラム評価サーバでこれを実行して実行速度等からプログラミングスキルを評価する。多数の被評価者の中に悪意のある者が紛れ込み、ウィルス等の有害なプログラムが送信されるリスクに対応するために、ソースコードをプログラム評価サーバの隔離された仮想実行環境で実行し、実行後には仮想実行環境を廃棄する。
【0004】
また、例えば、特許文献2には、作業フェーズに開発環境の使用能力(保有スキル)を有する開発者を割り当て、より精度の高い計画を立案することを目的とする計画生成装置等が開示されている。この方法によれば、複数の作業フェーズを含むソフトウェア開発を行うプロジェクトの計画を生成する計画生成装置において、ソフトウェア開発の開発環境の運用計画を表す開発環境計画情報を記憶する開発環境計画記憶部と、ソフトウェアを開発する開発者に対し、開発者のスケジュールと、ソフトウェア開発の開発環境の使用能力とを含む属性とを対応付けた担当者属性情報を記憶する担当者属性記憶部と、開発環境計画情報と担当者属性情報とに基づいて、複数の作業フェーズの各作業フェーズを実施する予定の期間に、作業フェーズに用いられる開発環境の使用能力を有する開発者を担当開発者として割り当てることの可否を判定し、担当開発者を割り当てることができる場合に、予定の期間に担当開発者を割り当てた計画情報を生成する計画情報生成部を備えている。
【0005】
また、AI(Artificial Intelligence)の技術を活用して、複数のソースコードを機械学習させ、ソースコードの読みやすさを評価する方法も知られている。例えば、非特許文献1に記載の技術は、ソースコードのレビュー作業の効率化と精緻化を支援するツールであり、画像化されたソースコードを基に、AIが主にソースコードの可読性を診断する。このツールで可読性が低い箇所に当たりを付け、該当箇所を集中的にレビューすることによって、レビューワは、作業の効率化と精緻化が見込めるようにしている。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2015-143890号公報
【文献】特開2018-142264号公報
【非特許文献】
【0007】
【文献】日経xTECH(クロステック)、“ソースコードの不備をAIで見つける富士通、新しい診断ツールの中身”、[online]、[令和2年2月25日検索]、インターネット、< https://xtech.nikkei.com/it/atcl/column/14/346926/122501258/#>
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、人間は日々成長するものであるので、定期的に評価を更新し開発計画も更新できるようにする必要がある。特に、大型のシステム開発は、非常に多くのプログラマ(数百人規模)が関わり、完成後も長期にわたり保守が続くため、ソースコードの見易さやメンテナンスのしやすさは、非常に重要であり、プロジェクトの成功か否かを左右するといっても過言ではない。
【0009】
上記の特許文献1,2の技術は、ソースコードの解析を通じてプログラマのスキルを評価したり、開発計画を生成したりするものではあるが、プログラム自体の評価だけでなく、見易さやメンテナンスのしやすさを主な判定基準に開発担当者の保守性の高いソースコードの作成能力を評価するものではなかった。また、プログラムが実環境で使用される利用頻度の観点から品質の評価値を求めるものではなかった。ソースコードの保守性は、特許文献1に係る発明がスキルの評価項目とする少なくとも「ソースコードの実行速度」や「ソースコード実行時の使用メモリ量」よりも重視要素である。
【0010】
したがって、本発明は、上記の非特許文献1に記載のAIツールも活用し、プログラマ別にソースコードの作成スキルを評価しつつも、プログラムの機能単位であるモジュールごとの保守性を、プログラムの実環境での利用頻度を考慮して、客観的・定量的に評価できるシステムを提供することを目指している。より具体的には、プログラムの開発時におけるソースコードの評価において、プログラムの実際の利用環境で想定されるモジュールごとの利用頻度を指標として、評価基準を設定することを目的とする。
【0011】
また、開発が終了し、プログラムのリリース後の保守の際には、既存のモジュールに対してロジックを後付けで追加することで機能強化が行われることが多いため、一般的に、保守が行われるたびにソースコードの見易さが低下することが多い。その結果、保守性が低下し、長年にわたって使用されるプログラムは、いずれ全面的な改定が必要となる更改時期を迎えることになる。従来、この更改時期は、サーバ等の更改時期、すなわち、ハードウェアの寿命に併せて行われることが多かったが、それとは別に、プログラムそのものの更改時期を客観的・定量的に判定できれば「プログラムの寿命」を知ることができる。したがって、本発明のもう1つの目的は、長期にわたる保守期間において、システムの更改時期を客観的・定量的に判定できるシステムを提供することである。
【課題を解決するための手段】
【0012】
上記第1の目的を達成するため、本発明は、以下のような解決手段を提供する。
(1)プログラムのソースコードの品質を評価する評価システムの管理サーバであって、前記プログラムの機能単位であるモジュールの識別子に、当該モジュールのソースコードの作成者の個人別情報、及び作成又は更新時の日時情報を対応付けて格納するソースコードライブラリと、前記ソースコードライブラリのソースコードを解析し、その解析結果に基づいて、当該ソースコードの品質を評価するソースコード品質評価部と、前記プログラムの開発期間において、前記モジュールの想定される利用頻度に基づいて、前記品質を判定する開発品質判定部と、前記利用頻度が所定値より高いモジュールの評価基準値を、前記利用頻度が当該所定値よりも低いモジュールの評価基準値よりも高く設定する評価基準設定部と、を備えることを特徴とする。
【0013】
(2)上記(1)の構成において、前記品質は、ソースコードの可読性に関する品質であることを特徴とする。
【0014】
(3)上記(1)又は(2)の構成において、前記想定される利用頻度は、前記モジュールが提供する機能の画面のユーザのアクセス頻度又は画面以外の入出力装置若しくは他のモジュールとの直接又は間接のアクセス頻度であり、前記利用頻度は、過去のプロジェクトにおける類似モジュールのアクセス頻度に基づいて決定されることを特徴とする。
【0015】
(4)上記(1)から(3)のいずれかの構成において、前記評価基準設定部は、前記品質の評価値を、前記モジュールの作成難易度を考慮して、過去のプロジェクトの統計データを用いて、評価値のスコアを同一化する統計処理によって算出された換算値を用いることを特徴とする。
【0016】
(5)上記(1)から(4)のいずれかの構成において、前記個人別情報に対応付けられたソースコードを抽出し、複数の前記日時情報における前記作成者ごとの前記評価の変化を検出することを特徴とする。
【0017】
(6)プログラムのソースコードの品質を評価する管理方法であって、前記プログラムの機能単位であるモジュールの識別子に、当該モジュールのソースコード及び当該ソースコードの作成者の個人別情報、及び作成又は更新時の日時情報を対応付けてソースコードライブラリに格納するステップと、前記ソースコードライブラリのソースコードを解析し、その解析結果に基づいて、当該ソースコードの品質を評価するステップと、前記プログラムの開発期間において、前記モジュールの想定される利用頻度に基づいて、前記品質を判定するステップと、前記利用頻度が所定値より高いモジュールの評価基準値を、前記利用頻度が当該所定値よりも低いモジュールの評価基準値よりも高く設定するステップと、をコンピュータが実行することを特徴とする。
【0018】
(7)コンピュータのプログラムであって、上記(6)に記載の各ステップをコンピュータに実行させることを特徴とする。
【発明の効果】
【0019】
本発明によれば、プログラムの開発時におけるソースコードの評価において、プログラムの実際の利用環境で想定されるモジュールごとの利用頻度を指標として、評価基準を設定することができる。
【図面の簡単な説明】
【0020】
図1】本発明の実施形態に係るソースコード評価システムのシステム構成を示す図である。
図2】上記ソースコード評価システムの管理サーバの機能ブロックを示す図である。
図3】本発明の実施形態に係るシステムの開発期間における品質評価手順を示す図である。
図4】本発明の実施形態に係るシステムの保守期間における品質評価手順を示す図である。
図5】本発明の実施形態に係るシステムの開発期間における開発品質管理テーブルの概略を示す図である。
図6】本発明の実施形態に係るシステムの保守期間における保守品質管理テーブルの概略を示す図である。
【発明を実施するための形態】
【0021】
以下、添付図面を参照して、本発明を実施するための形態(以下、実施形態)について詳細に説明する。以降の図においては、実施形態の説明の全体を通して同じ要素には同じ番号又は符号を付している。また、機能構成の図において、機能ブロック間の矢印は、データの流れ方向、又は処理の流れ方向を表す。
【0022】
図1は、本発明の実施形態に係るソースコード評価システム(以下、本システムと呼ぶ)のシステム構成を示す図である。
【0023】
本システムは、特に大規模プロジェクトにおいて、数十人~数百人規模のプログラマが設計書に基づいてソースコードを作成するため、各プログラマに割り当てられたプログラマ端末10と、作成されたソースコードを集積し、管理するための管理サーバ100と、システムを監視し、管理するための管理者端末20とがネットワークを介して接続される。
【0024】
管理サーバ100は、データベースとして、ソースコードライブラリ101と、機械学習データ102と、利用頻度データ103と、運用実績データ104と、開発計画データ105と、保守計画データ106とが交信可能に接続される。
【0025】
ソースコードライブラリ101は、プログラマによって作成又は更新されたソースコードファイルを、プログラムの機能単位であるモジュールの識別子(ID)に、当該モジュールのソースコード及び当該ソースコードの作成又は更新時の日時情報を対応付けて格納するデータベースである。また、ソースコードライブラリ101は、作成者のプログラミングスキル(対応可能なプログラミング言語、経験年数、過去のプロジェクトにおける役割等)を格納した個人別情報をモジュールIDに関連付けてもよい。
【0026】
機械学習データ102は、AI技術を活用して、ソースコードを解析するための機械学習データを格納するデータベースである。
【0027】
利用頻度データ103は、実環境で想定される利用頻度(画面のユーザのアクセス頻度又は画面以外の装置若しくは他のモジュールとのアクセス頻度)をモジュールごとに格納したデータベースである。利用頻度は、設計者の想定値、及び過去の類似モジュールがあれば、その実績データに基づいて決定される。利用頻度について詳しくは後述する。
【0028】
運用実績データ104は、開発を終了し、リリース後の実際の利用頻度(アクセス頻度)のデータをモジュールごとに格納したデータベースである。運用実績データ104は、過去の類似プロジェクトの実績データを含む。
【0029】
開発計画データ105は、プロジェクトの開発計画を格納するデータベースである。開発計画にはモジュール単位の開発計画も含む。
【0030】
保守計画データ106は、プログラムのリリース後の保守計画とその実績を格納したデータベースである。
【0031】
ただし、このようなシステム構成に限定されるものではなく、例えば、管理サーバ100が複数で構成されてもよいし、管理サーバ100からデータベースを分離し、データベース及びそのデータベースサーバが別に構成されてもよい。
【0032】
図2は、本システムの管理サーバ100の機能ブロックを示す図である。この実施形態では、管理サーバ100に、上記のデータベース(データ格納手段)が接続され、各データベースを参照しながら個々の機能を実行する機能実行部(機能実行手段)が示されている。機能実行部としては、ソースコード解析部110と、ソースコード品質評価部111と、評価基準設定部112と、開発品質判定部113と、開発計画更新部114と、保守品質判定部115と、保守計画更新部116とを備えている。ただし、このような構成に限定されるものではない。
【0033】
ソースコード解析部110は、プログラマが作成したソースコードを、定期的又は指示されたタイミングでソースコードライブラリ101から読み出し、その時点までに作成されたソースコードを、モジュール(1つの機能を有するプログラム単位)ごとにテキスト解析する。
【0034】
ソースコード品質評価部111は、ソースコード解析部110の解析結果に基づいて、場合によっては機械学習データ102も参照し、品質評価値を算出する評価ツールである。一つのモジュールを複数のプログラマが担当する場合は、プログラマごとの評価も行う。ただし、モジュールのソースコードが前回の品質評価時から変更されていない場合は、そのモジュールの評価をスキップするようにしてもよい。このようにすることで、効率的な判定ができる。また、ここでの評価項目は、開発時だけでなく保守時にも適用できるように同じものを用いてよく、その場合はソースコードの可読性などの保守性に関する評価項目とすることが望ましい。また、評価項目に対する各モジュールの評価値を算出する方法自体は本発明の対象ではないが、公知の技術を活用してもよい。すなわち、このときの評価ツールは、既存のソースコード評価システムを利用してもよい。例えば、非特許文献1のAIを活用したソースコード評価ツールを用いて、ソースコードの読み易さ(可読性)を評価項目としてもよい。さらに、別の評価ツールを併用してもよい。ソースコードの可読性には、適切なコメントがあるか、ネストの深さが適切か、その他プログラミングのルールに沿っているかなどが評価項目としてあげられる。
【0035】
また、ソースコード品質評価部111は、ソースコードライブラリ101の個人別情報を用いて以下の活用も可能である。
【0036】
(個人別の複数の時点の評価の活用)
評価は、通常、ソースコードライブラリ101に記憶されたソースコードをある程度まとまった単位で評価するが、同一の個人別情報が対応付けられたソースコードを抽出して評価することで、個人別作業の評価が可能となる。また、個人別作業の評価である2時点間の評価を比較したときに、以前よりも評価が高くなっていれば、評価を上げるための術を習得していると評価できる。つまりは保守性の高いソースコードを作る技術を習得していると言える。このような個人別の評価は、開発計画の中での人員配置(再配置)の判断指標とすることができる。
【0037】
(開発予定期間終了日とソースコードの作成・更新日の活用)
期限より早く完了した者同士を比較したときに、早くて保守性の高いソースコードを作れる者と、早いが保守性の低いソースコードになってしまう者とに線引きができる。同様に、期限ぎりぎりに完了した者同士、期限超過した者同士でも、同じ線引きが可能となる。このように分析することで、いうなれば個人の特性と能力に基づいた人員計画への反映が可能となる。なお、開発期間終了日に限らず、所定の基準日を設けて同様に評価することも可能である。
【0038】
(ソースコードの履歴情報の活用)
作成日付及び更新日付を複数時点で記憶し、当該複数時点ごとのソースコードが管理されている場合(又は履歴上の日付ごとの評価を記憶していてもよい)は、全ソースコードを同じタイミングで評価するのではなく、例えば最初の作成日直後の評価と最終更新日直後の評価を比較することも可能となる。つまり、ソースコードの評価をある日時(2020年3月31日)基準に一括評価するのではなく、最初の作成日と1回目の更新の期間で評価がどう変わったか、また完了直前の評価と完了後の評価でどの程度違いがあるかなどをソースコードごとに知ることが可能である。何度修正を加えても評価が変わらない者(高い評価のままと低い評価のままが考えられる)、更新を経るごとに評価が高くなる者、更新を経るごとに評価が下がってしまう者などが考えられる。このように、同一基準日でなく、個別のソースコードの更新履歴を追うことできめ細かい評価ができる。
また、上記の評価の変化を検出し、総合的に評価することできめ細かな人員計画も可能となる。
【0039】
評価基準設定部112は、ソースコード品質評価部111が評価を行った結果を定量的に判定するための評価基準を設定する。ここでは、モジュールごとの、場合によってはプログラマごとの、品質基準値及び更改基準値を設定する。この設定は、通常はプロジェクトの管理者が行う。ここで、品質基準値とは、開発時におけるソースコード品質の合否の基準値を定めるものであり、リリースしてよいかの判断基準である。具体的には、評価の最高値(理想的なパーフェクト値)を100とすれば、各プログラムがリリース時に最低クリアすべき評価値を、例えば、70~80のように設定する。モジュールごとに作成難易度、実環境で利用される頻度が異なるので、モジュールごとに品質評価値を定める。ここで、モジュールが利用される頻度が高いものほど(例えば、そのモジュールの機能を利用するときの画面のアクセス頻度が高いもの)、他のモジュールより品質基準値を高くする。画面のアクセス頻度(例えば、1日の画面表示の想定回数)は、過去の類似のモジュールのデータから予想したものを利用頻度データ103に格納しておく。また、モジュールの機能が画面以外の入出力装置又は他のモジュールとの直接又は間接のアクセスを伴う場合は、そのアクセスの想定頻度をアクセス頻度としてもよい。
【0040】
また、プログラムのロジックが複雑で作成の難易度が高いと判断されるモジュールは、品質基準値を他のモジュールより下げるようにしてもよい。その場合は、過去のプロジェクトの統計データを用いて、評価値を、評価ツールが出力したそのままの値(Raw Score)ではなく、スコアの同一化(Equating)と呼ばれる統計処理によって算出された換算値(Scaled Score)を用いるようにしてもよい。このようにすることで、評価値がプログラムの難易度に依存しないようにすることもできる。
【0041】
また、評価基準値は、プログラムが稼働する企業の業種別に基準値が異なるようにしてもよい。例えば、金融機関においては基準値を高くするなどである。
【0042】
更改基準値とは、保守開始後の将来の更改時期(プログラムを全面的に見直して改変が必要な時期であり、例えば、7年~15年後)を判定するための基準値である。前述したように、プログラムは修正を繰り返すと、コードが複雑になり、リリース直後よりも多くの場合、保守性に関する評価値が下がる傾向がある。したがって、本システムでは、リリース後も所定のタイミングで、例えば半年ごと、あるいは小規模な変更が実施された直後などに、同じ評価ツールを用いて評価を繰り返す。そして、設定された更改基準値より評価が下回りそうな時点を更改必要と判断する。具体的には、リリース開始直後の各モジュールの品質評価値が70~80であるとすると、品質評価値が例えば60~70を下回ると予想された時期までに更改が必要と判断する。すなわち、このようにすることで、モジュールごとの品質評価値の下降傾向に基づいて、加重平均を取るなどして、総合評価値を算出し、プログラム全体の更改基準値を下回る時期を判定し、更改計画の作成・更新に利用することができる。
【0043】
開発品質判定部113は、ソースコード品質評価部111が開発期間において算出した品質評価値を、その判定時期ごとに判定する。このとき、開発期間におけるモジュールごとの品質の判定は、利用頻度データ103を参照し、モジュールごとの変更の頻度に応じて行うようにしてもよい。そうすることで、より効率的に判定の時期を決定できる。そして、開発計画データ105に格納されたデータを参照し、開発計画の更新(開発プログラマの入れ替え、リリース時期の更新)が必要と判定した場合は、開発計画更新部114に処理を渡す。また、開発品質判定部113は、プログラマごと、モジュールごとに、品質評価値の推移と傾向を表示する手段を備える。
【0044】
開発計画更新部114は、プロジェクト管理者の判断を仰ぎながら、更新された開発計画を開発計画データ105に格納する。また、開発計画更新部114は、更新前のデータと更新後のデータを比較してグラフ化して表示する手段を備える。
【0045】
保守品質判定部115は、ソースコード品質評価部111が保守期間において算出した品質評価値を、その判定時期ごとに算出する。このとき、保守期間におけるモジュールごとの評価値の算出は、運用実績データ104を参照し、モジュールごとの変更の頻度に応じて行うようにしてもよい。そうすることで、より効率的に判定の時期を決定できる。そして、保守計画データ106に格納されたデータを参照して、保守性に関する品質が所定の基準値を下回ることが予想される場合、プログラムの全面改定が必要となる更改のタイミングを判定する。さらに、保守計画の更新(保守プログラマの入れ替え、更改時期の更新)が必要と判定した場合は、保守計画更新部116に処理を渡し、保守計画を更新させる。また、保守品質判定部115は、モジュールごと、プログラマごとに、品質評価値の推移と傾向をグラフ化して表示する手段を備える。
【0046】
保守計画更新部116は、リリース後の保守期間全般にわたって、ソースコード品質評価部111が算出した品質評価値を、その判定時期ごとに判定し、保守計画データ106に格納されたデータ及び運用実績データ104を参照し、保守計画の更新(場合によっては、保守を担当する人員の増加、保守時期の変更など)が必要と判定した場合は、保守計画を更新する。ここで、運用実績データ104には、モジュールごと、及び/又は、モジュールが提供する画面ごとに、ユーザが実際に利用した回数、頻度などのデータが格納されている。なお、保守品質判定部115は、モジュールごとに、品質評価値の推移(特に保守が入った後)と傾向をグラフ化して表示する手段も備える。
【0047】
以上で本システムの管理サーバ100の機能構成の説明を終わるが、上記の機能構成は、あくまで一例であり、一つの機能ブロック(データベース及び機能実行部)を分割したり、複数の機能ブロックをまとめて一つの機能ブロックとして構成したりしてもよい。各機能実行部は、装置に内蔵されたCPU(Central Processing Unit)が、ROM(Read Only Memory)、フラッシュメモリ、SSD(Solid State Drive)、ハードディスク等の記憶装置に格納されたコンピュータ・プログラムを読み出し、CPUにより実行されたコンピュータ・プログラムによって実現される。すなわち、各機能実行部は、このコンピュータ・プログラムが、記憶装置に格納されたデータベース(DB;Data Base)やメモリ上の記憶領域からテーブル等の必要なデータを読み書きし、場合によっては、関連するハードウェア(例えば、入出力装置、表示装置、通信インターフェース装置)を制御することによって実現される。また、本発明の実施形態におけるデータベース(DB)は、商用データベースであってよいが、単なるテーブルやファイルの集合体をも意味し、データベースの内部構造自体は問わないものとする。
【0048】
(品質評価手順)
以下、本システムにおける開発期間及び保守期間における評価手順について説明する。なお、以降の処理フロー図(フローチャート)においては、各ステップの入力と出力の関係を損なわない限り、各ステップの処理順序を入れ替えてもよい。
【0049】
図3は、開発期間における品質評価(開発品質評価)の手順を示す図である。まずステップS10において、モジュールID、及びそのモジュールを作成したプログラマIDを取得する。次にステップS11において、そのモジュールの目標として設定された品質評価値を取得し、更に、当該モジュールのアクセス頻度を利用頻度データ103から取得する。
【0050】
続いて、ステップS12において、アクセス頻度が所定値以上(例えば10万回/日以上)のモジュールか否かが判定される。アクセス頻度が所定値以上の場合は、ステップS14において、目標とする評価基準値を、アクセス頻度が所定値未満の場合のモジュール(標準の評価基準値)よりも高く設定する。アクセス頻度が所定値未満の場合は、ステップS13において、標準の評価基準値を設定する。ここでは、簡単のためアクセス頻度が高いか低いかによって基準値を二段階に設定しているが、アクセス頻度に応じて多段階で設定してもよい。
【0051】
最後に、ステップS15において、評価基準値の未設定の別のモジュールがあるか否かを判定し、未設定のモジュールがあれば、ステップS10~S14の処理を繰り返す。
【0052】
図4は、保守期間における品質評価(保守品質評価)の手順を示す図である。まずステップS20において、保守計画をデータ格納手段である保守計画データ106から取得する。次にステップS21において、保守作業が所定日後(例えば、5日~10日程度)に終了する予定か否かを判断する。その結果、所定日内に終了する予定の場合は、ステップS22において、保守作業が終了後、保守品質評価の判定を行う。この判定は保守対象のすべてのモジュールに対して実行する。また、所定日内に保守作業が終了しない場合は、いったん以降の処理を終わらせるか、図示のように、所定日が来るまで待機するようにしてもよい。ここで、ステップS22で用いられる保守品質の評価方法は、開発時における評価方法と同じにすれば、次の開発時にも保守時の評価判定の結果を実績データとして利用できる。
【0053】
保守品質判定の実行が終わると、続いて、ステップS23において、各モジュールの判定結果が基準値よりも下回ったか否かを判定する。判定結果が基準値よりも下回った場合は、ステップS24において、過去の判定結果の推移を参照し、次の更改が必要となる更改時期を判定する。例えば、全面的な改修となる更改の判定基準である品質基準値が70と設定されていたとすると、70未満のモジュールの数の推移から、更改時期を1年後、2年後などと判定する。判定結果が基準値を下回らなかった場合は、いったん処理を終了し、次回の判定時期(例えば数か月後~半年後など)が来たら再開する。また、判定結果によっては、全体的な更改までは必要ないが、モジュールごとの比較的小規模な保守が必要な時期を判定するようにしてもよい。
【0054】
図5は、システム開発期間における開発品質管理テーブルの概略を示す図である。この表は、モジュールIDごとに、品質基準値が設定され、品質評価を行った判定日ごとに、判定の結果である評価点が示されている。ただし、ここでは説明を簡単にするため、一つのモジュールは一人のプログラマが担当しているものとしている。
【0055】
前述したように、モジュールごとに想定される利用頻度(アクセス頻度)が異なるので、品質基準値は、アクセス頻度の高いモジュールほど、その他のモジュールよりも高く設定する。アクセス頻度は、一般的な銀行システムを例にとると、入出金明細機能、振込・振替機能、投資信託に関する機能などを処理する画面は、他の画面よりもアクセス頻度が高いとすると、それらの画面に対応する品質基準値を、アクセス頻度の比較的低い画面よりも高くする。画面ごとのアクセス頻度は、過去の類似のプロジェクトの実績値から予測することができる。ただし、過去の類似例にない新機能の画面の場合は、まずはアクセス頻度が高いと仮定してもよい。
【0056】
このようにすることで、プログラムの開発時におけるソースコードの評価において、プログラムの実際の利用環境で想定されるモジュールごとのアクセス頻度を考慮して、評価基準を設定することができる。その結果、一律の基準を設けることに比べて、より有効な評価をすることができる。
【0057】
図5の開発品質管理テーブルでは、モジュールごとの機能が示され、品質基準値は、説明を簡単にするため、アクセス頻度が高いモジュールは80、アクセス頻度が低いモジュールは70と設定している。また、品質評価の判定時期は、ここでは、開発がスタートしてから半年ごとと設定しているが、このような定期的な判定だけでなく、仕様変更、スケジュール変更、プログラマの変更などのイベントの後にも行うなど柔軟に設定してもよい。
【0058】
また、この例の開発品質管理テーブルでは、開発が進むにつれて評価点が上がっていく、すなわち、品質が向上していく様子が示されているが、一般的には、開発初期の段階では、プログラムのコードの完成度が低く、コードが完成していくにつれて、評価点は上がったり下がったりする。そのため、図示は省略しているが、各判定日ごとに異なる品質基準値を設けてもよい。ただし、少なくともリリース前には、あらかじめ定められた品質基準値をすべてのモジュールがクリアしているか否かを判定する必要がある。そのためには、定められた判定日だけでなく、各プログラマは、定期診断の前のプレ診断として、自分が作成したプログラムの評価を個々に自発的に行うように奨励してもよい。
【0059】
このように、開発品質管理テーブルを作成し、各判定日の評価値を記録していくことで、開発品質の推移を定期的又は不定期に、客観的・定量的に把握することができる。また、開発したプログラムがリリースの基準に達しているかも判断することができる。万一、所定の基準に達していない場合は、開発計画を見直したり、遅れているモジュールのプログラマを増員又は再配置したり、リリース時期を再検討したりすることができる。
【0060】
図6は、システム保守期間における保守品質管理テーブルの概略を示す図である。この表は、開発時の品質評価テーブルを保守時にも拡張したもので、保守を担当したプログラマIDとモジュールIDごとに、品質評価を行った判定日ごとに、判定の結果である評価点が示されている。一般に開発時のプログラマが保守を担当するとは限らない。また、一つのモジュールに対して複数のプログラマが担当することもあるし、途中でプログラマが交代する場合もある。図の例ではモジュールM00150は、判定日1の段階からプログラマPM2035が増員され、モジュールM00350は、判定日2の段階でプログラマPM2120からプログラマPM2125に交代したことが示されている。
【0061】
この例の保守品質管理テーブルでは、保守期間が進むにつれて判定日ごとに評価点が下がっていく様子が示されている。これは前述したように、保守時には障害対処の他、小規模な機能拡張が行われることも多いので、その結果、既存のモジュールにロジックが追加され、その結果プログラムが肥大化し、見易さという点では品質が徐々に低下していくことがよくあるからである。
【0062】
また、保守期間が長期化し、全面的な更改が必要となるタイミングを予想するため、更改基準値が設定される。この更改基準値もモジュールごとに設定され、更改が必要か否かも所定の時期に判定が行われる。モジュールごとの結果を総合判定し、システム全体の更改の必要な時期を予想する。
【0063】
このようにすることで、長期にわたる保守期間においても、システムの更改時期を客観的・定量的に判定することができる。より具体的には、保守品質管理テーブルを作成し、各判定日の評価値を記録していくことで、保守品質の推移を定期的又は不定期に、客観的・定量的に把握することができる。また、保守しているプログラムの保守品質が、更改が必要となるレベルまで落ち込んでいるか否かも判断することができる。品質の低下が予想よりも早く、あらかじめ計画された更改時期よりも早める必要があったり、逆に品質の低下が少なく、更改を延期してもよいと判断される場合は、保守計画を見直したり、次のバージョンの開発計画を見直したりすることができる。
【0064】
(実施形態の効果)
本システムによれば、プログラムの開発時におけるソースコードの評価において、プログラムの実際の利用環境で想定されるモジュールごとの利用頻度を指標として、評価基準を設定することができる。その結果、一律の基準を設けることに比べてより有効な評価をすることができる。
また、評価される品質の項目を、ソースコードの可読性に関する品質の項目とすることで、開発時だけでなく、保守時においても一貫して役立つ評価項目にすることができる。
また、上記利用頻度をモジュールが提供する機能の画面のユーザのアクセス頻度、又は画面以外の入出力装置若しくは他のモジュールとの直接又は間接のアクセスの頻度とすることで、過去のプロジェクトにおける類似モジュールの画面のアクセス頻度に基づいて、より確実に決定することができる。
また、過去のプロジェクトの統計データを用いて、評価値のスコアを同一化する統計処理によって算出された換算値を用いることによって、品質の評価値にモジュールの作成難易度を考慮することも可能となる。
また、個人別情報に対応付けられたソースコードを抽出し、複数の日時情報における作成者ごとの評価の変化を検出することで、プログラマ個人の特性と能力に基づいた人員計画への反映が可能となる。
【0065】
なお、上記の実施形態では、主に大規模プロジェクトを念頭にソースコードの評価システムについて説明したが、中小規模のプロジェクトにも適用が可能である。
【0066】
また、本発明は、物の発明として、ソースコードの保守性の評価システムにおける管理サーバとして主に説明したが、本発明は、管理方法の発明又はコンピュータ・プログラムの発明としても捉えることができる。
【0067】
以上、実施形態を用いて本発明を説明したが、本発明の技術的範囲は上記実施形態に記載の範囲に限定されないことは言うまでもない。上記実施形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。また、そのような変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【符号の説明】
【0068】
10 プログラマ端末
20 管理者端末
100 管理サーバ
101 ソースコードライブラリ
102 機械学習データ
103 利用頻度データ
104 運用実績データ
105 開発計画データ
106 保守計画データ
110 ソースコード解析部
111 ソースコード品質評価部
112 評価基準設定部
113 開発品質判定部
114 開発計画更新部
115 保守品質判定部
116 保守計画更新部
図1
図2
図3
図4
図5
図6