JP3703076B2 - 構造化文書により定義された品質管理及び品質評価ルールによるソフトウェア品質管理・評価方法、ならびにそのプログラムを記録した記録媒体 - Google Patents
構造化文書により定義された品質管理及び品質評価ルールによるソフトウェア品質管理・評価方法、ならびにそのプログラムを記録した記録媒体 Download PDFInfo
- Publication number
- JP3703076B2 JP3703076B2 JP2000087426A JP2000087426A JP3703076B2 JP 3703076 B2 JP3703076 B2 JP 3703076B2 JP 2000087426 A JP2000087426 A JP 2000087426A JP 2000087426 A JP2000087426 A JP 2000087426A JP 3703076 B2 JP3703076 B2 JP 3703076B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- evaluation
- quality
- value
- evaluation rule
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Description
【発明の属する技術分野】
本発明は、ソフトウェア開発下流工程における品質管理・品質評価に関する処理方法に係り、特に、その品質管理・品質評価方法に柔軟性と発展性を持たせるのに好適な品質管理・評価方法、およびその処理プログラムを記録した記録媒体に関する。
【0002】
【従来の技術】
ソフトウェア開発下流工程においては一般に、その開発対象ソフトウェアの品質管理・品質評価のために、設定したテスト件数などの静的なデータや、消し込み済みテスト件数、検出されたバグ数、解決されたバグ数あるいはテストカバレージ率などの動的なデータがそれぞれの工程のレベルに応じた区分で蓄積・管理される。そして、こうしたデータを所定の目標値と比較すること、または蓄積されたデータの経時的な変動の状況を分析することで、テスト十分性や信頼性の推定を行い、そのソフトウェアの品質が所定の水準に達しているか否かなどの評価を実施する。
【0003】
また、例えば特開平5−313881号公報に記載の評価処理方法では、上記のような品質管理データに、過去の経験に基く知識情報を加味して総合的な残存欠陥数の推定を行うことができる処理方法が提案されている。
このうよな方法では、「目標値」や「信頼性成長モデル」の策定が重要になってくる。多くの場合、それは過去のプロジェクト事例の実績値やソフトウェア組織の方針に基づいて決定される。
【0004】
従来の技術では、実績値と目標値に基く客観的な評価が可能になっている。
しかし、現実のソフトウェア開発では、このような「外形的な」数値比較だけでは不十分である。また、システム開発技法や実装技術の進歩、あるいは新しい管理技法などにより、過去の実績に基く指標だけでは対応できないこともありうる。異なる指標、場合によっては異なる考え方に基づいた評価方法が必要になってくる。そうした意味では、特開平5−313881号公報に記載の技術において、経験則から導出された知識情報による結果の補正は可能であるものの、それも特定の方法内のものでしかなく不十分である。
また、これらの技術では品質管理・評価を機械的に行うことを前提としている。しかし、どれほど「客観的」に管理・評価を行おうとしても、すべてを完全に機械化することは不可能で、いずれかの管理レベルで「主観的」な判断が介在する余地がある。すなわち、ソフトウェア品質管理を適正に実施するには、管理者の判断を支援し、さらにスキルの向上を促すような仕組みが存在することが望ましいが、従来の技術にはシステムとしてそれを支援する機能は存在しない。
【0005】
【発明が解決しようとする課題】
前述のように、従来の技術では、品質管理・評価方法が定型的な特定の手法に限定されがちで、新しい品質管理・評価方法を開発あるいは導入することが難しい点、及び品質管理者の判断を支援し、スキルの向上を促進する仕組みが存在しない点がそれぞれ問題であった。
【0006】
そこで、本発明の目的は、これら従来の問題点を解決し、従来からの品質管理・評価方法のみならず、新しい品質管理・評価方法を開発あるいは導入し、運用することが容易な品質管理・評価方法及びその処理プログラムを記録した記憶媒体を提供することにある。
【0007】
【課題を解決するための手段】
上記目的を達成するため、本発明の構造化文書により定義された品質管理及び品質評価ルールによる品質管理・評価方法では、特定の方法による品質管理・評価用のデータの収集や、収集されたデータに対して特定のルールを適用して品質評価を行うことなく、特定の形式で品質管理・評価データがデータベースに蓄積されていることを前提に、該データベース(以下、品質データベースと呼ぶ)内のデータの参照方法、参照したデータの解釈方法、参照及び解釈を行った結果を提示する方法を記述した品質管理・評価ルール(以下、評価ルールと呼ぶ)を定義し、その評価ルールを品質データベースに対して適用することで品質管理・評価を実施する。
また、上記評価ルールを構造化文書、特にXML(Extensible Markup Language)の形式で定義すること、及びその内容についての説明記述部を設けることで、評価ルールの流通(共有)を支援する。この評価ルールを記述したファイルを、評価ルール定義ファイルと呼ぶ。
【0008】
【発明の実施の形態】
以下、本発明の実施例を、図面により詳細に説明する。
まず、その概要を説明する。
図1は、本発明が適用するプログラムとファイル、データリポジトリ等の関連を示すシステム構成図である。
図1において、1は評価ルールを保持するデータリポジトリ(ファイル保存部)である。典型的には、XMLデータを保持できるデータベースシステムや、XMLファイルを保存しているディスク装置の領域を指す。評価ルールファイル保存部1内部におけるデータの蓄積方法、形式は問わないが、利用にあたって評価ルールが外部に読み出される際には、XMLファイル形式あるいはXMLとして解釈できるデータストリームとして読み出し可能でなければならない。もちろん、評価ルールファイル保存部1が通常のディスク装置上に評価ルールファイルを保存しているだけであれば、特別な読み出しの機構は必要ない。
【0009】
2は本発明を利用する組織等における情報共有のための装置あるいはシステム(情報共有機能)である。典型的にはWorld Wide Webサイトである。これは必須のものではないが、評価ルールファイル保存部1の内容を読み取り、評価ルールファイル3として実装システムに表示することにより、組織等における情報共有を支援する。従って、もし情報共有機能2が配置されていない場合には、評価ルールファイル保存部1から直接、評価ルール読み込み部4に入力される。
3は、評価ルールを内容として含むXMLファイルである。典型的には、ファイルの形態で、評価ルールファイル保存部1から直接、あるいは情報共有機能2を経由して読み出される。また、ファイルでなくXMLデータとして解釈可能なデータストリームとして読み出されることもありうる。これは、次の項目で説明するように、一般には評価ルール読み込み部4が直接評価ルールファイル保存部1または情報共有機能2にアクセスして読み込みを行う場合に発生する。
4は、本発明に基く品質評価を実施する実装システム8(アプリケーションプログラム)の評価ルール読み込み部である。指定された評価ルールを保持するXMLファイルを読み込むか、あるいは評価ルールファイル保存部1あるいは情報共有機能2に直接アクセスしてデータストリームの形態で読み込むことにより、評価ルールを実装システム8で利用可能な形態に展開する。
読み込み部4の実装方法は問わないが、典型的にはXMLデータを構文的に解釈する部分(XMLパーサと呼ばれる部分)と、次に説明する評価ルール演算部5への業務的なインタフェースを提供する部分の2階層で構成される。
【0010】
5は、実際に品質評価のための演算を行う演算部である。評価ルール演算部5は評価ルール読み込み部4で読み込まれた評価ルールに基づき、後述の評価ルール評価結果提示部7が指示する時点で指定の演算を行い、その結果を指定の方法であり、評価ルール評価結果提示部7に渡し、利用者に提示させる機能をもつ。
演算を実施するにあたっては、品質データベース6から指定の方法でデータを参照する。
6は、実装システム8による品質評価の対象となるソフトウェアプロジェクトにかかる品質データを蓄積している品質データベースである。この内容や構成については制限する必要はないが、一般的な方法でアクセス可能なデータリポジトリでなければならない。典型的には、SQL(Structured Query Language)文による操作が可能なインタフェースを装備したリレーショナルデータベースである。
7は、品質評価の結果を利用者に提示する機能を提供する評価結果提示部である。
評価ルール読み込み部4で読み込まれた評価ルールに指定された時点で評価ルール評価結果提示部7が動作し、必要に応じて評価ルール演算部5で演算処理を行わせ、その結果に基づき、所定の提示を行うか否かなどを決定する。その提示方法は実装に依存するが、典型的には警告メッセージの表示、ログファイルへの書き込み、結果レポート(ファイル)の作成などが考えられる。
【0011】
図2及び図29は、品質評価ルールマークアップ言語QEML(Quality Evaluation rule Markup Language ) Version 1.0 の概要を示したものである。評価ルール定義ファイルは、この形式に基づいて記述する。図2は、QEMLの文書型定義(DTD)である。
図3は、図2の内容を図式的に表現したものであって、各要素の関係が階層構造を有していることが分かる。
図29は、要素を一覧表示したものであって、図2の各要素番号に対応して、図29の同じ要素番号の欄に名称、内容、属性の名称、属性の内容が表示されている。QEMLは、XML規格に準拠したアプリケーションであり、そのため、評価ルール定義ファイルは、一般のテキストエディタやXMLエディタを利用して容易に編集することができる。また、World Wide WebブラウザなどのXML対応製品を利用すれば、その内容を容易に参照、表示することができる。さらに、内容のプログラム上の解析には、XMLを解析するためのアルゴリズムを流用できるので、本発明の実装も容易である。なお、これらの規定は改良のため仕様変更されることもありうる。
【0012】
以下に、本発明におけるQEMLの規定の詳細を示す。なお、図2,図3および図29中の要素番号は、互いに対応している。
【0013】
qeml要素(001)は、評価ルール定義ファイルの最上位要素である。
この下には、一つ以上のqeRule要素(003)が存在する。
【0014】
qeRule要素(003)は論理的に関連する一連の品質評価ルールの定義を収容する要素である。qeRule要素同士は互いに独立し、自己完結的であることが望ましいが他のqeRule要素内の定義を参照してもよい。
qeRule要素は四つのセクションを示す四つの要素を収容する。すなわち、explain要素(004)、dataAddress要素(005)、rules要素(006)、messages要素(007)である。
【0015】
explain要素(004)は、それが属するqeRule要素の意味的な説明を記述する部分である。この要素内の情報は通常、利用者に情報を提供する目的で利用される。
典型的には、実装システムの評価手段選択画面での評価ルールリスト表示、WWWサーバ上での品質評価ルール一覧表示ページへのリスト表示のために用いられる。
explain要素は、title要素(008)、category要素(009)、description要素(010)、association要素(011)を含む。
【0016】
title要素(008)は属する品質評価ルールの名前を示す文字列を値としてもつ。
【0017】
category要素(009)はそれが属する品質評価ルールを分類するための文字列を値としてもつ。複数の視点からの分類を可能とするため、一つの品質評価ルールに一つ以上のcategory要素をもつことができる。
例えば、二つのcategory要素が、それぞれ「バグ消化曲線」及び「CSシステム用」という値を持っているとすれば、その品質評価ルールは「帳票種別(あるいは評価方法)」及び「適用対象システム区分」という二つの視点からの分類が可能となる。また、こうした分類の種別を示すtype属性をもつことができる。この属性の値の許容値は実装依存で決定される。
【0018】
description要素(010)は、それが属する品質評価ルールを詳細に説明する文章を値としてもつ。
典型的には、適用対象システムの前提条件、開発環境、プロジェクト要員のスキルなど、適用対象システムの特性を特定するための情報を記述する。利用者はその記述内容を参考にして、その品質評価ルールの適用可否を判断する。
【0019】
association要素(011)は、description要素の内容を補強するために、関連情報を記述する。type属性で関連情報の内容の種類を特定する。許容値は実装依存する。
例えば、type属性が「URL」とされていれば、association要素の内容は参考とするURLとなり、「qeId」と記述されていれば関連する他の品質評価ルールとなる。
【0020】
dataAddress要素(005)は、属する品質評価ルールで使用される各種データの取得方法または取得先についての定義を行う。dataAddress要素はデータの種類(取得方法)毎に定義されるので、qeRule要素内に一つ以上存在する。
dataAddress要素は、datasource要素(012)、viewDefinition(013)を含む。
【0021】
datasource要素(012)は、属するdataAddress要素のデータ取得元を識別するための情報を設定する。type属性でデータソースの種類を指定し、要素の値としてはデータソースへアクセスするための情報をもつ。これらの値は実装依存である。
典型的には、type属性値「RDB」で要素値はリレーショナルデータベース名、type属性値「XML」で要素値はXMLファイルフルパス名、type属性値「SYS」で要素値は省略(システム情報を取得する)、type属性値「user」で要素値は省略(実装依存のデータ取得機能から取得する)、type属性値「manual」で要素値は省略(実装システムを経由して手入力の値を取得する)、などが考えられる。
【0022】
viewDefinition要素(013)は、属するdataAddress要素のデータソースに対する一回のデータ取得操作ごとに、そのデータ取得操作の方法及びそれにより取得できるデータ項目の定義を記述する。
viewDefinition要素は、command要素(016)とvalue要素(017)を含む。
【0023】
command要素(016)は、属するviewDefinition要素における、データ取得操作をデータソースに対して行う際のコマンド文字列の定義を記述する。内容は実装やデータソースの種類によって異なる。データソースがコマンド文字列などを必要としないような種類のものであれば、この要素は省略できる。
典型的には、データソースがリレーショナルデータベースであれば、データを取得するためのSQL文(SELECT文)、データソースがXMLファイルであれば、要素を指定するためのデータアドレッシング記述(例えば、XPath文字列など)、データソースがシステム情報であれば、その情報種別(例えば、システム日付など)を指定するための文字列が記述される。
この文字列にはparam要素(022)を含むことができるので、動的にコマンド文字列を変更することもできる。
command要素には二つの属性があるが、これらはいずれもリレーショナルデータベースのように複数のレコードが結果として返され得るデータソースに属するcommand要素での使用を前提としている。
type属性は、データ取得操作によって返される結果セットが本質的に単一(single)であるか複数(multiple)であるかを示す。デフォルトは「single」である。この値が「multiple」をとる場合、その結果セット(及びその参照)は結果セット内の特定レコードを明示的に指定しない限りは、常に集合的に扱われる。
key属性は、複数行が返されるデータ取得操作において、その結果セット内の行を一意に特定するために使用するキー項目を指定する。具体的な使用方法は実装に依存する。
これは、次に説明するvalue要素のposition属性の指定方法に影響を与える。
【0024】
value要素(017)はcommand要素で指定されるデータ取得操作の結果として返されるデータ項目またはデータ項目の一部分を特定し、それに識別子を付与して、品質評価ルールのほかの部分から参照可能にするために使用される。この要素は属性のみを持ち、要素としての値は持たない。
varId属性は、そのデータ項目の一意識別子である。position属性は、関連するデータ取得操作結果セットのどの項目を指しているかを指定する文字列である。これは実装依存であるが、典型的には以下のようになる。
データソースがリレーショナルデータベースの場合、コマンドの選択リストの先頭項目を指すには、「@1」とする。この結果セットに複数行が含まれる場合は、全行の第1項目を指していることになる。複数行中の特定行の項目を指すには「$」を用いる。例えば、第三行の第二項目を指定するには、「@2$3」のように記述する。特定のキー値を持つ行の項目を指定する場合、例えば、command要素のkey属性が「keyA」と指定されていれば、「@3[5]」と記述することにより、keyA=5である結果セット中の行の第三項目を指定していることになる。
【0025】
rules要素(006)は、属する品質評価ルール中で用いる数式のコレクションである。
【0026】
rule要素(014)は、rules要素に少なくとも一つ含まれる数式の定義である。ruId属性はrule要素の一意識別子である。
rule要素はmath要素(002)とpath要素(018)を含む。
【0027】
math要素(002)は、数式を指定する。数式の指定にはWorld Wide Web consortiumで標準化された数式記述言語MathML(TM)を取り込んで使用する。図2では、便宜上MathML(TM)のDTDの所在位置を「mmlents\mathml.dtd」としているが、現実のシステムでは実際の所在位置が記述される。
MathML(TM)の要素のうちどの要素がどのようにサポートされるのかは実装に依存する。
【0028】
path要素(018)は、math要素で指定される数式の特定の要素にパラメタを与えるために用いる。パラメタの指定が不要であれば省略可能である。要素の値として、math要素の特定の下位要素を指し示すための文字列を持つ。この文字列の書式は、World Wide Web consortiumで標準化された標準のXML文書部品指示言語であるXPathである。例えば、math要素とその子孫要素が
<math > <apply><plus/> <ci>a</ci><cn>5</cn></apply></math>
のように定義されている場合に、最初のci要素を指定する場合、「apply/ci」とする。
associatedData属性は、埋め込む値を示す識別子を指定する。これはvalue属性のvarId属性の値か、他rule要素のruId属性の値である。これらの値は循環参照を避けるように指定しなければならない。(循環参照を避ける方法は実装に依存する。)また、値が評価されるのは、数式が評価される時点である。さらに、この値は数値として評価される。
もし、associatedData属性が参照するデータ項目が集合的であった場合、math要素の評価はそのデータ項目のそれぞれについて実行される。また、同一のmath要素に設定する複数のpath要素が参照するデータ項目が同一のviewDefinition要素に属し、かつそれらが集合的であった場合、それらの値を個別に参照して評価するのではなく、同期を取って評価する。例えば、あるmath要素に関連する上記の条件を満たすpath要素が二つあり、そのデータ集合に三つのデータが含まれる場合、math要素の評価回数は九回ではなく、三回になる。
type属性及びindex属性は[0034]で後述するparam属性(022)のtype属性及びindex属性と同様の内容を持つ。
【0029】
messages要素(007)は品質評価の実行時期、評価方法、評価結果の提示方法を定義したmessage要素(015)をまとめるコレクション要素である。
【0030】
message要素(015)は、個別の品質評価の実行時期、評価方法、評価結果の提示方法を定義する。こうした一組の定義をメッセージと呼び、このメッセージを処理することをメッセージ処理と称する。
message要素はpointOfTime要素(019)、criteria要素(020)、msgDescription要素(021)を含む。
msgId属性は当該message要素の一意識別子である。
【0031】
pointOfTime要素(019)は、属するmessage要素の評価がいつ実行されるかを定義する。その値は実装に依存するが,典型的には、「REQUIRED」(利用者が明示的に要求したとき)、「LOADED」(評価ルール定義ファイルが実装システムに読み込まれたとき)、「CHANID=nnnn」(msgId属性の値がnnnnの別のmessage要素が評価されたときに連鎖して実行)などとなる。複数の時点で評価される可能性があるため、一つのmessage要素に一つ以上のpointOfTime要素を定義できる。
【0032】
criteria要素(020)は、属するmessage要素の評価が成立する条件を定義する。
要素の値は、比較演算子(<、<=、=、>=、>)、論理演算子(AND,OR,NOT)、括弧、及びパラメタによる条件式である。パラメタは固定文字列を直接記述する場合と、param要素(022)によって数式やデータ項目の値を参照する場合がある。条件式の評価結果が真であれば、そのmessage要素の評価が成立したことになる。criteria要素が省略された場合、そのmessage要素は常に成立することになる。
【0033】
msgDescription要素(021)は、criteria要素の条件式が成立し、message要素の評価が成立したときに利用者に提示される情報を定義する。
msgDescription要素は、属するmessage要素が別のmessage要素に従属する、すなわち、別message要素内のcriteria要素内のparam要素で参照されるためだけに記述されている場合は省略される。また、同時に複数の手段で利用者に提示される場合は必要な数だけ定義される。
type属性の値は、実装に依存するがmsgDescription要素の内容を利用者に提示する手段を指定する。典型的には、「MSGBOX」(ポップアップダイアログボックスによるメッセージ表示)、「LOGFILE」(所定のログファイルへの書き込み)、「MAIL」(所定の管理者宛ての電子メール送信)などがある。
要素の値は、type属性で指定された提示方法と実装に依存する。
【0034】
param要素(022)は、データ項目、数式、メッセージを参照する為に用いる。
command要素(016)に埋め込まれた場合は、主にそのコマンド文字列の変数として埋め込むデータ項目や数式(の計算結果)を参照する。
criteria要素(020)に埋め込まれた場合は、その条件式の変数として埋め込むデータ項目や数式(の計算結果)や別メッセージの(criteria要素の)評価結果を参照する。
msgDescription要素(021)に埋め込まれた場合は、そのメッセージ内に埋め込むデータ項目や数式(の計算結果)や別メッセージの(criteria要素の)評価結果を参照する。
param要素は要素としての値をもたない。
from属性で埋め込むデータの識別子を参照することで埋め込みデータを指定する。埋め込むデータが、データ項目の場合は、当該データ項目(value要素)のvarId属性値、数式の演算結果の場合は当該数式(rule要素)のruId属性値、メッセージの評価結果の場合は、当該メッセージ(message要素)のmsgId属性値を設定する。
【0035】
type属性はfrom属性で参照されるデータの種類を示す値を設定する。参照データ項目が、データであれば「V」、数式であれば「R」、メッセージであれば「M」である。デフォルトは「V」である。
index属性は集合的なデータの中から特定のデータのみを指定する場合に用いる。集合的でないデータに設定した場合は無視される。値の指定方法は三種類ある。符号無しの数値を指定した場合、そのデータ集合の先頭のデータを1とした絶対出現順でデータが指定される。符号付の数値を指定した場合、プラス記号がつく場合はデータ集合の先頭からの相対位置、マイナス記号がつく場合はデータ集合の末尾からの相対位置でデータが指定される。上記のいずれでもない場合、データ項目の識別子(varId)と見做し,そのデータ内容を参照する。そのデータ項目が集合的である場合や、数値以外のものを返す場合、あるいは該当する識別子が存在しない場合はindex属性の指定はなかったものとする。結果の値は絶対位置の指定として処理される。いずれの指定方法でも、データ集合の範囲外が指定された場合は、もっとも近い正当なデータ項目を指すように補正される。この属性が指定されている場合は、その参照元を集合的ではないものとして扱う。
例えば、あるデータ集合(1,5,2,4,7,10)があったとすると、index属性の値が、「1」または「+0」または「-5」の場合は1、「6」または「-0」または「+5」の場合は10、「3」または「+2」または「-3」の場合2を指す。「7」の場合は「6」に補正されて10を指し、「-10」の場合は「-5」に補正されて1を指す。
【0036】
次に、評価ルール定義ファイルの定義例と実装システム例を元に本発明の適用方法を説明する。説明に使用する実装システム例のシステム名はQS1と呼ぶ。
以下の文中で「QS1では・・」等と記載された場合、それはQS1における実装例であり、別の実装ではまた異なる実装方法をとることも可能であることを意味する。また、「データ「nnn」」という表現があった場合、それはデータ識別子(varId属性)で値「nnn」を指定され、その識別子で参照されるデータを意味する。数式やメッセージについても同様である。
図4〜図8は、評価ルール定義ファイルの一例を示した図である。
このファイルには一つの品質評価ルール(行005〜239)が含まれる。これは、COBOL言語で書かれたプログラムのソースコード行をベースとした単体テスト品質評価を行うためのものある。
機能は、プログラムチェックリスト消し込み予測及びバグ摘出累積件数予測グラフ、及びそれらの実績グラフの表示と、評価実行時におけるバグ摘出累積件数の実績/予測の乖離率を算出し、それが上下20%を越えた場合に警告を発するというものである。
【0037】
QS1においては、所定のディレクトリに格納されている評価ルール定義ファイルを一括して読み込み、利用者に適用する品質評価ルールを選択させる仕様になっている。この処理には、定義ファイル内のexplain要素の内容を用いる。図4であれば、行006〜行014が該当する。
【0038】
図9は、QS1における評価ルール選択画面の表示例図である。
この画面においては、画面部品201でカテゴリタイプ(分類の視点)を画面部品202でそのカテゴリタイプに含まれるカテゴリを選択することで、それに該当する品質評価ルールの名称が画面部品203に一覧表示される。
この例においては、「プログラム言語」の視点から「COBOL」言語に関する品質評価ルールを一覧しているが、図4の評価ルール定義ファイルは行008において、type属性の値が「PrgL」(QS1の表現では「プログラム言語」)で、要素値が「COBOL」(QS1の表現では「COBOL」)であるcategory要素を記述しているため、画面部品203の評価ルール一覧に、title要素(行007)の要素値を表示している。
図10は、図9とは異なる視点で分類した評価ルール選択画面の表示例図である。
この例においては、「基準指標」(画面部品301)の視点から「ソース行数」(画面部品302)を基準とした品質評価ルールを一覧(画面部品303)している。図4の評価ルール定義ファイルは行009において、type属性の値が「Base」(QS1の表現では「基準指標」)で、要素値が「LOC」(QS1の表現では「ソース行数」)であるcategory要素を記述しているため、この画面でも一覧表示されている。
【0039】
図11は、QS1における評価ルール詳細画面の表示例図である。
この画面は、図9または図10の画面部品403で評価ルールを選択し、画面部品404を押下することで表示され、選択した評価ルールのexplain要素の内容を参照できる。
この例においては、図4の評価ルール定義ファイルの評価ルール「B001」(行005)を示している。画面部品401にはtitle要素値が表示される。ここでは行007のtitle要素の値が表示されている。画面部品402にはcategory要素の内容が表示される。ここでは、行008〜行011の内容が反映されている。なお、カテゴリタイプ(type属性)の値はQS1においては、「PrgL」は「プログラム言語」、「Base」は「基準指標」、「Proc」は「適用工程」、「Doc」は「文書種別」とマップされ、カテゴリ(category要素値)の値はQS1においては、「COBOL」は「COBOL」、「LOC」は「ソース行数」、「UT」は「単体テスト(UT)」、「BugExtractionCurve」は「PCL/バグ摘出曲線」とマップされ表示されている。
【0040】
QS1においては、評価ルール選択画面で評価ルールを選択して実行することで、その評価ルールが有効になり、定義された手順で品質評価が実行される。この操作は、図9あるいは図10の画面部品203,303から評価ルールを選択し、画面部品205,305を押下することである。
ここでは、評価ルール「B001」が実行されたものとして、以下その処理の流れを説明する。
【0041】
まず、評価ルール「B001」で使用するデータについて説明する。
図30は、評価ルール「B001」で使用するデータの概要を一覧表にまとめた図である。
これらのデータの定義は、図4,図5の行015〜行092に記述されているdataAddress要素から導かれる。
【0042】
図30の行1は図4の行018〜行021のviewDefinition要素に対応する。
図4の行015〜行022のdataAddress要素が定義するデータのデータソースのタイプは、図4の行017のdatasource要素の定義により、QS1においては手入力(type="MANUAL")である。その中で、このviewDefinition要素は要素値をTargetModuleとするcommand要素(図4の行019)を持つ。これは、QS1においてTargetModuleという名前で識別される値を要求することを意味する。
この値は、QS1が表示するダイアログボックスを用いて利用者から入力される。こうして取得された値は、評価ルール内で、データ識別子「B001VM01」で参照される(図4の行018)。
command要素がもつデータ値は一つだけなので、position属性の指定は不要である。
【0043】
図20の行2は、図4の行026〜行030のviewDefinition要素に対応する。
図4の行023〜行031のdataAddress要素が定義するデータのデータソースのタイプは、図4の行025のdatasource要素の定義により、QS1においてはシステム情報(type="SYSTEM")である。その中で、このviewDefinition要素は要素値をSYSDATEとするcommand要素(図4の行028)を持つ。これは、QS1においてはシステム日付を参照することを意味する。この値は、評価ルール内で、データ識別子「B001VS01」で参照される(図4の行029)。command要素がもつデータ値は一つだけなので、position属性の指定は不要である。
【0044】
図30の行3〜行6は、図4の行032〜行058のdataAddress要素に対応する。このdataAddress要素が定義するデータのデータソースのタイプは、図4行034のdatasource要素の定義により、QS1においてはユーザ定義関数(type="USERS")である。ユーザ定義関数とは、ここでは、実装系が独自に提供する関数を指す。
図30の行3は、図4の行035〜行040のviewDefinition要素に対応する。
ユーザ定義関数のcommand要素値の書式は、QS1では、関数名と引数群の列挙である。引数は、param要素またはカンマ区切りの定数で記述する。
図4の行037のcommand要素は、CalcCalendar1という名称のユーザ定義関数をデータ「B001VD04」と、データ「B001VD02」を引数として実行することを意味する。
「B001VD04」「B001VD02」については、詳細は後述するが、それぞれ「テスト予定日数」「テスト開始日」を意味する。QS1のCalcCalendar1関数は指定した日付を含め、その日から指定した日数分の日付を返却する関数なので、このcommand要素の内容を実行すれば、予定どおりにテストが進捗した場合のすべての日付が取得できる。このcommand要素の実行結果は複数の結果を返すので、「type="MULTIPLE"」を指定する。この値はデータ識別子「B001VF01」で参照される(図4の行039)。
QS1においては、複数の結果を返す場合、それが内部的な計算に利用される場合は集合的に処理され(計算をデータ数分繰り返す)、外部出力される場合はカンマ区切りの文字列に変換して渡される。
【0045】
図30の行4は、図4の行041〜行046のviewDefinition要素に対応する。
図4の行043のcommand要素は、CalcCalendar2という名称のユーザ定義関数をデータ「B001VD04」と、データ「B001VS01」を引数として実行することを意味する。QS1のCalcCalendar2関数は指定した日付を両端とする期間に含まれる日付すべてを列挙する関数なので、ここでは、テストの開始日から現在までのすべての日付が返される(「B001VD04」は「テスト開始日」、「B001VS01」は「システム日付」を意味するため)。このcommand要素の実行結果は複数の結果を返すので、「type="MULTIPLE"」を指定する。この値はデータ識別子「B001VF02」で参照される(図4の行045)。
【0046】
図30の行5は、図4の行047〜行052のviewDefinition要素に対応する。
図4の行049のcommand要素は、CalcCalendar3という名称のユーザ定義関数をデータ「B001VD04」と、データ「B001VS01」を引数として実行することを意味する。QS1のCalcCalendar3関数は指定した日付間の日数を計算する関数なので、ここでは、テストの開始日から現在までの日数が返される(「B001VD04」は「テスト開始日」、「B001VS01」は「システム日付」を意味するため)。この値はデータ識別子「B001VF03」で参照される(図4の行051)。
【0047】
図30行6は、図4の行053〜行057のviewDefinition要素に対応する。
図4の行055のcommand要素は、Rangeという名称のユーザ定義関数を固定値「1」とデータ「B001VD02」を引数として実行することを意味する。QS1のRange関数は指定した数値を両端とする範囲に含まれる整数をすべて列挙する関数なので、ここではテスト開始日からテストの予定終了日までの各日におけるテスト開始日からの経過日数すべてが返される(「B001VD02」は「テスト予定日数」を意味するため)。このcommand要素の実行結果は複数の結果を返すので、「type="MULTIPLE"」を指定する。この値はデータ識別子「B001VF04」で参照される(図4の行056)。
【0048】
図30の行7〜行9は、図5の行059〜行084のdataAddress要素に対応する。
このdataAddress要素が定義するデータのデータソースタイプは、図5の行061のdatasource要素の指定により、QS1ではリレーショナルデータベースである(type="RDB")。このdatasource要素は要素値「QE0001」を持っているが、これはQS1では、データベース名「QE0001」のデータベースを利用することの指定である。
図30に、データベース「QE0001」のテーブル定義の一部(単体テストに関連する部分)を示す。
モジュール別単体テスト工程管理表では、システムに含まれるすべてのモジュールの単体テスト工程に関する基本情報を保持する。
「モジュールID」は、モジュールの一意識別子である。
「実績ステップ数」は、モジュールの実際のステップ数である。
「単体テスト予定日数」は、単体テストの所要日数の見積もりである。
「単体テストチェック件数」は、単体テスト用プログラムチェックリストに設定されたチェック件数である。
「単体テスト実績開始日」は、実際に単体テストが開始された日付である。
「単体テスト実績終了日」は、単体テストが終了した時に、その日付を設定する。
モジュール別チェック項目管理表は、単体テスト用プログラムチェックリストに設定されたチェック項目の基本情報と、その消し込み状況を保持する。
「モジュールID」は、モジュールの一意識別子である。
「チェックID」は、チェック項目の一意識別子である。「モジュールID」と「チェックID」の組み合わせでレコードを一意に識別する。
「チェック種別」は、そのチェック項目の種類のものであるかを示す文字を設定する。
例えば、通常処理をチェックする項目であれば「N」、異常処理をチェックする項目であれば「E」などである。
「消し込み日」は、そのチェック項目のチェックが完了した日を設定する。
モジュール別バグ管理表は、摘出されたバグを履歴的に一覧管理する表である。
「バグ通番」は、バグの一意識別子である。
「モジュールID」は、モジュールの一意識別子である。
「チェックID」は、チェック項目の一意識別子である。「モジュールID」と「チェックID」はモジュール別チェック項目管理表を参照する外部キーである。
「発生日」は、そのバグが発生した日である。
「解決日」は、そのバグが解決した日である。
【0049】
図30の行7は、図5の行063〜行070のviewDefinition要素に対応する。
データソースタイプがリレーショナルデータベースの場合、command要素の要素値は発行するSQL文など、そのデータベースが受け入れるコマンド文字列になる。
そのため、図5の行064のcommand要素の要素値は、param要素で参照するデータ「B001VM01」が仮に「AX001D05」であったとすると、SQL文「SELECT MDST,MDPC,MDCC,MDAB FROM MUTS WHERE MDID='AX001D05'」であると解釈される('はXML文書においては単一引用符を意味する)。このSQL文を実行すると、モジュール別単体テスト工程管理表(MUTS)から、指定のモジュールID(MDID)のモジュールの、実績ステップ数(MDST)、単体テスト予定日数(MDPC)、単体テストチェック件数(MDCC)、単体テスト実績開始日(MDAB)を取得できる。モジュールIDは一意であるので返される結果は単一である。
図5の行066のvalue要素の定義により、結果の第1カラム(position="@1")、すなわち実績ステップ数は「B001VD01」で参照される(varId="B001VD01")。
図5の行067のvalue要素の定義により、結果の第2カラム(position="@2")、すなわち単体テスト予定日数は「B001VD02」で参照される(varId="B001VD02")。
図5の行068のvalue要素の定義により、結果の第3カラム(position="@3")、すなわち単体テストチェック件数は「B001VD03」で参照される(varId="B001VD03")。図4の行069のvalue要素の定義により、結果の第4カラム(position="@4")、すなわち単体テスト実績開始日は「B001VD04」で参照される(varId="B001VD04")。
【0050】
図30の行8は、図5の行072〜行077のviewDefinition要素に対応する。
図5の行073のcommand要素の要素値は、param要素で参照するデータ「B001VD03」が仮に「112」で、データ「B001VM01」が仮に「AX001D05」で、データ「B001VF02」が仮に「2000/2/1,200/2/2,2000/2/3,2000/2/4」の複数の値であるとすると、SQL文「SELECT 112 ? COUNT(*) FROM MTUC WHERE MDID='AX001D05' AND MCEL<=TO_DATE('2000/2/1')」「SELECT 112 ? COUNT(*) FROM MTUC WHERE MDID='AX001D05' AND MCEL<=TO_DATE('2000/2/2')」
「SELECT 112 ? COUNT(*) FROM MTUC WHERE MDID='AX001D05' AND
MCEL<=TO_DATE('2000/2/3')」
「SELECT 112 ? COUNT(*) FROM MTUC WHERE MDID='AX001D05' AND
MCEL<=TO_DATE('2000/2/4')」
であると解釈される(<はXML文書においては「<」を意味する)。
これらのSQL文を実行すると、モジュール別チェック項目管理表(MUTC)を集計し、指定のモジュールID(MDID)のモジュールの、指定日以前の消し込み日(MCEL)を持つレコードの総件数をチェック項目総数から差し引いた値が返される。すなわち、この例では、2000/2/1〜2000/2/4までの各日におけるチェックリスト残件数が取得できる。このSQL文自体は単一の結果しか返さないが、指定のパラメタが複数の値をとりうるため、結果として複数の結果を持つことになる。
図5の行076のvalue要素の定義により、結果の第1カラム(position="@1")、すなわちチェックリスト残件数は、「B001VD06」で参照される(varId="B001VD06")。
【0051】
図30の行9は、図5の行079〜行084のviewDefinition要素に対応する。
図5の行080のcommand要素の要素値は、param要素で参照するデータ「B001VM01」が仮に「AX001D05」で、データ「B001VF02」が仮に「2000/2/1,200/2/2,2000/2/3,2000/2/4」の複数の値であるとすると、SQL文「SELECT COUNT(*) FROM MTUB WHERE MDID='AX001D05' AND MBOD<=TO_DATE('2000/2/1')」
「SELECT COUNT(*) FROM MTUB WHERE MDID='AX001D05' AND
MBOD<=TO_DATE('2000/2/2')」
「SELECT COUNT(*) FROM MTUB WHERE MDID='AX001D05' AND
MBOD<=TO_DATE('2000/2/3')」
「SELECT COUNT(*) FROM MTUB WHERE MDID='AX001D05' AND
MBOD<=TO_DATE('2000/2/4')」
であると解釈される。
これらのSQL文を実行すると、モジュール別バグ管理表(MUTB)を集計し、指定のモジュールID(MDID)のモジュールの、指定日以前の発生日(MBOD)を持つレコードの総件数を返す。すなわち、この例では2000/2/1〜2000/2/4までの各日におけるバグ摘出累積件数が取得できる。このSQL文自体は単一の結果しか返さないが、指定のパラメタが複数の値をとりうるため、結果として複数の結果を持つことになる。
図5の行082のvalue要素の定義により、結果の第1カラム(position="@1")、すなわちバグ摘出累積件数は、「B001VD07」で参照される(varId="B001VD07")。
【0052】
図30の行10は、図5の行088〜行091のviewDefinition要素に対応する。
このviewDefinition要素が属するdataAddress要素(図5の行085〜行092)が定義するデータのデータソースタイプは、図5の行087のdatasource要素の定義により、QS1ではXML文書である(type="XML")。このdatasource要素は要素値として「standards.xml」を持っているが、これはQS1では、「standards.xml」というファイル名のXML文書を参照することを意味する。
データソースタイプがXML文書である場合、QS1ではcommand要素の要素値は、XPathの構文となり、その構文で指定されるXML文書要素または属性の値が、command要素の実行結果の値となる。
図5の行089のcommand要素は、standards.xmlファイルのstandards文書要素の子要素utの子要素bugDensityKLOC要素の値(ここでは1Kステップ行当りのバグ件数を示す)を参照している。
この値は、図5の行090のvalue要素の定義により、データ識別子「B001VX01」で参照される(varId="B001VX01")。
図31(a)(b)(c)は、図1における品質データベース6の構成例を示す図である。
【0053】
次に、評価ルール「B001」で使用する数式について説明する。
図32は、評価ルール「B001」で使用する数式の概要を一覧表にまとめた図である。
これらのデータの定義は、図5〜図7の行094〜行209に記述されているrules要素から導かれる。
【0054】
図32の行1は、図5の行095〜行116のrule要素に対応する。
この要素で定義する数式の識別子は「B001R01」である(ruId="B001R01")。
数式自体の定義は、MathML(TM)にしたがって記述する。このrule要素の数式は、図5の行097〜行110のmath要素で定義されている。
MathML(TM)では演算の最小単位をapply要素で表現する。基本的には、apply要素の最初の子要素に、その演算方法(加算、減算など)を示す要素を設定し、それに続いてオペランドを指定する子要素を設定する。オペランドが数字であればcn要素で定義し、そうでないならci要素で定義する。また他のapply要素を子要素にすることもできる。
例えば、「a+1」をMathML(TM)で表現すると、
<apply><plus /><ci>a</ci><cn>1</cn></apply>
のようになる。
従って、図5の行102〜行105のapply要素は「k+1」を示し、図5の行100〜行106のapply要素は「k/(k+1)」を示し、図5の行099〜行107のapply要素は「log0.04236(k/(k+1))」を示し、図5の行108のapply要素は「1/t」を示し、図5の行098〜行109のapply要素は、「(log0.04236(k/(k+1)))^(1/t)」を示す(^は累乗を表す)。
こうして表現された数式を実際に計算するには、変数の部分に値を設定する必要があるが、これはmath要素に続くpath要素で行う。
path要素では設定するデータの指定をassociatedData属性で、設定先を要素値のXPath構文で指定する。
図5の行112のpath要素ではデータ「B001VD03」をmath要素の子のapply要素の最初の子apply要素の子のapply要素の子のci要素(図5の行101)に設定することを示している。
図5の行113のpath要素ではデータ「B001VD03」をmath要素の子のapply要素の最初の子apply要素の子のapply要素の子のapply要素の子のci要素(図5の行103)に設定することを示している。
図5の行115のpath要素では、データ「B001VD02」をmath要素の子のapply要素の2番目の子apply要素の子のci要素(図5の行108)に設定することを示している。
この数式を計算すると、予定の日数で単体テストが終了する(収束する)場合のチェック項目残件数予測グラフを描画するためのゴンペルツ曲線の傾きを決定する値を計算することができる。
【0055】
図32の行2は、図6の行117〜行138のrule要素に対応する。
この要素で定義する数式の識別子は「B001R02」である(ruId="B001R02")。
数式自体(図6の行119〜行132)は「B001R01」の数式と同様であるが、変数に設定する値が一部異なっている。
数式「B001R01」でデータ「B001VD03」を埋め込むところには、数式「B001R03」の演算結果を埋め込む(図6の行134及び行135)。「type="R"」とは数式の演算結果を参照していることを明示する(type属性省略時には値「V」がデフォルトとなる。これはデータを参照していることを示す)。
この数式を計算すると、予定の日数で単体テストが終了する(収束する)場合のバグ摘出累積件数予測グラフを描画するためのゴンペルツ曲線の傾きを決定する値を計算することができる。
【0056】
図32の行3は、図6の行139〜行151のrule要素に対応する。
この要素で定義する数式の識別子は「B001R03」である(ruId="B001R03")。
このrule要素の数式は、図6の行141〜行146のmath要素に記述されている。
図6の行144のapply要素は「d/1000」を示し、図6の行142〜行145のapply要素は「k*(d/1000)」を示している。
図6の行148のpath要素ではデータ「B001VD01」をmath要素の子のapply要素の子のci要素(図6の行143)に設定することを示している。
図6の行150のpath要素ではデータ「B001VX01」をmath要素の子のapply要素の子のapply要素の子のci要素(図6行の144)に設定することを示している。
この数式を計算すると、現在のモジュールの規模で摘出しなければならないバグの目標数を計算することができる。
【0057】
図32の行4は、図6の行152〜行172のrule要素に対応する。
この要素で定義する数式の識別子は「B001R04」である(ruId="B001R04")。
このrule要素の数式は、図6の行154〜行165のmath要素に記述されている。
図6の行159〜行162のapply要素は「b^t」を示し、図6の行157〜行163のapply要素は「0.04236^(b^t)」を示し、図6の行155〜行164のapply要素は「K*(0.04236^(b^t))」を示している。
図6の行167のpath要素では数式「B001R03」の演算結果をmath要素の子のapply要素の子のci要素(図6の行156)に設定することを示している。
図6の行169のpath要素では数式「B001R02」の演算結果をmath要素の子のapply要素の子のapply要素の子のapply要素の最初の子ci要素(図6の行160)に設定することを示している。
図6の行171のpath要素ではデータ「B001VF04」をmath要素の子のapply要素の子のapply要素の子のapply要素の2番目の子ci要素(図4の行161)に設定することを示している。
なお、データ「B001VF04」は複数の値を持つため、この数式の演算結果も同様に集合的に扱われる。
この数式を計算すると、単体テスト期間内の各日におけるバグ摘出累積予測件数を取得できる。
【0058】
図32の行5は、図7の行173〜行198のrule要素に対応する。
この要素で定義する数式の識別子は「B001R05」である(ruId="B001R05")。
このrule要素の数式は、図7の行175〜行190のmath要素に記述されている。
図7の行183〜行186のapply要素は「b^t」を示し、図7の行181〜行187のapply要素は「0.04236^(b^t)」を示し、図7の行178〜行188のapply要素は「-1*K*(0.04236^(b^t))」を示し、図7の行176〜行189のapply要素は「K+(-1*K*(0.04236^(b^t)))」を示す。
図7の行192のpath要素はデータ「B001VD03」をmath要素の子のapply要素の子のci要素(図7の行177)に設定することを示している。
図7の行193のpath要素はデータ「B001VD03」をmath要素の子のapply要素の子のapply要素の子のci要素(図7の行180)に設定することを示している。
図7の行195のpath要素は数式「B001R01」の演算結果をmath要素の子のapply要素の子のapply要素の子のapply要素の子のapply要素の先頭の子ci要素(図7の行184)に設定することを示している。
図7の行197のpath要素はデータ「B001R01」をmath要素の子のapply要素の子のapply要素の子のapply要素の子のapply要素の2番目の子ci要素(図7の行185)に設定することを示している。
なお、データ「B001VF04」は複数の値を持つため、この数式の演算結果も同様に集合的に扱われる。
この数式を計算すると、単体テスト期間内の各日におけるチェックリスト残件数予測を取得できる。
【0059】
図32の行6は、図7の行199〜行208のrule要素に対応する。
この要素で定義する数式の識別子は「B001R06」である(ruId="B001R06")。
このrule要素の数式は、図7の行201〜行203のmath要素に記述されている。
図7の行202のapply要素は「a/b」を示す。
図7の行205のpath要素は複数の結果を返すデータ「B001VD07」の末尾(index="-0")のデータをmath要素の子のapply要素の最初の子ci要素に設定することを示している。
図7の行207のpah要素は複数の結果を返す数式「B001R04」の、データ「B001VF03」で示される位置の演算結果(例えば、「B001R04」が「0 5 7 9」の結果を持ち、「B001VF03」が「2」を返すなら、「5」がとるべき値となる)をmath要素の子のapply要素の2番目の子ci要素に設定することを示している。
この数式を計算すると、評価実行日におけるバグ摘出累積予測件数と実際の値の乖離率を取得できる。
【0060】
前記の段落番号〔0041〕〜〔0059〕で説明したデータ及び数式は、メッセージ処理の開始をトリガーとして、参照・評価される。
【0061】
評価ルール「B001」のメッセージ処理は、図7の行211〜行238のmessages要素で定義される。このmessages要素には、メッセージ識別子「B001M01」のmessage要素(図7の行213〜行226)と、メッセージ識別子「B001M011」のmessage要素(図8の行227〜行237)が含まれる。
【0062】
メッセージ「B001M01」は、図7の行214のpointOfTime要素の要素値が「REQUIRED」であるため、QS1においては、評価ルール実行時に即座に処理される。
メッセージ「B001M011」は、図8の行229のpointOfTime要素の要素値が「CHAINED:B001M01」であるため、QS1においては、メッセージ「B001M01」が処理された時点で連鎖して実行される。
以上より、評価ルール「B001」のメッセージ処理はすべて、評価ルール適用時に一括して処理される。
【0063】
メッセージ「B001M01」には、criteria要素が含まれていないので、そのmsgDescription要素(図7の行215〜行225)は、メッセージ処理時には常に提示される。このmsgDesciption要素は、「type="GRAPH"」の指定により、QS1においては、QS1のグラフ作成機能を利用することを意味する。QS1のグラフ作成機能では、描画に必要なデータは、XML形式で設定することになっているため、msgDescription要素の要素値は、そのXML形式データのテンプレート文字列である。
このテンプレートにデータを埋め込む場所とその内容はparam要素で指定されている(図7の行217、行218、行219、行221、行222、行224)。
図33は、これらのparam要素で参照されているデータ及び数式を一覧表にまとめた図である。
【0064】
メッセージ処理が開始され、msgDescription要素の内容が評価される時点で、これらの値がその定義された方法に従って評価され、その最終的な結果がmsgDescription要素内容に埋め込まれ、そのmsgDescription要素のタイプに適切な処理部に渡される。
図15は、これらのparam要素の評価方法を示した図である。
例えば、データ「B001VD06」(図15の004)を参照するparam要素を評価するには、データ「B001VD03」(図15の005)、データ「B001VM01」(図15の008)、データ「B001VF02」(図15の009)を必要とする。このうち、データ「B001VF02」は複数の結果を返すので、データ「B001VD06」も複数の結果を返す。データ「B001VD03」を取得するには、データ「B001VM01」(図15の010)が必要で、データ「B001VF02」を取得するには、データ「B001VD04」(図15の011)とデータ「B001VS01」(図15の012)を必要とする。データ「B001VD04」を取得するにはデータ「B001VM01」(図15の013)を必要とする。
他のparam要素も同様に評価する。なお、ここに示したのは意味的なデータ間の依存関係であり、実際の演算方法は実装に依存する。
【0065】
ここで、品質データベースが図34,図35で示す内容を保持していたとする。
QS1では、msgDescription要素内の出現順でparam要素を評価するため、まず、データ「B001VF01」のparam要素(図15の001)が評価される。
このときまず、依存関係の終端にある、データ「B001VM01」の解決が試みられる。データ「B001VM01」は、「TargetModule」パラメタを手入力するデータ項目であるため、QS1では、入力ダイアログボックスを開いて利用者に入力を促す。ここでは、値「AX001D05」を入力したものとする。
図12はその画面表示イメージ図である。
この時点で、メッセージ「B001M01」のmsgDescription要素の評価処理の進捗状況は、図16のようになっている。
【0066】
次に、データ「B001VD04」及びデータ「B001VD02」を解決するために、これらのデータ項目定義が属するviewDefinition要素のcommand要素によって示されるSQL文「SELECT MDST,MDPC,MDCC,MDAB FROM MUTS WHERE MDID='AX001D05'」がデータベース「QE0001」に対して実行される。このviewDefinition要素には、データ「B001VD01」及びデータ「B001VD03」のデータ項目定義も含まれるため、これらのデータ項目も同時に解決される。表6のモジュール別単体テスト工程管理表テーブルの内容から、上記SQL文の実行結果は「1232,10,112,2000/2/1」となるため、データ「B001VD01」、データ「B001VD02」、データ「B001VD03」、データ「B001VD04」はそれぞれ、「1232」、「10」、「112」、「2000/2/1」と解決される。
この時点で、メッセージ「B001M01」のmsgDescription要素の評価処理の進捗状況は、図17のようになっている。
【0067】
次に、データ「B001VF01」を解決するために、値「2000/2/1」及び「10」を引数としてユーザ定義関数「CalcCalendar1」を実行する。結果は、
「2000/2/1,2000/2/2,2000/2/3,2000/2/4,2000/2/5,2000/2/6,2000/2/7,2000/2/8,2000/2/9,2000/2/10」となる。
この時点で、メッセージ「B001M01」のmsgDescription要素の評価処理の進捗状況は、図18のようになっている。
【0068】
次に、データ「B001VF02」のparam要素(図15の002)を解決する。
データ「B001VD04」はすでに評価済みであるので参照のみを行い、データ「B001VS01」の評価を行う。データ「B001VS01」はシステム日付の取得を行うものであり、ここではシステム日付を「2000/2/4」と仮定するので、評価結果は「2000/2/4」となる。
次にデータ「B001VF02」を解決するために、値「2000/2/1」及び「2000/2/4」を引数としてユーザ定義関数「CalcCalendar2」を実行する。結果は、
「2000/2/1,2000/2/2,2000/2/3,2000/2/4」となる。
この時点で、メッセージ「B001M01」のmsgDescription要素の評価処理の進捗状況は、図19のようになっている。
【0069】
次に、データ「B001R05」のparam要素(図15の003)を解決する。
これに必要な、データ「B001VD03」、数式「B001R01」、データ「B001VF04」のうち、データ「B001VD03」は評価済みであるので、まず数式「B001R01」を評価する。
数式「B001R01」の評価に必要な変数はすでに評価済みであるので、それを数式に当てはめて計算する。すなわち、式「(log0.04236(112/(112+1)))^(1/10)」の計算結果「0.55577」が評価結果となる。
次に、データ「B001VF04」を評価する。このとき、引数として固定値「1」とデータ「B001VD02」の評価結果「10」を引数としてユーザ定義関数「Range」を実行する。
結果は、「1,2,3,4,5,6,7,8,9,10」となる。
よって、数式「B001R05」の評価結果は、式「112+(-1*112*(0.04236^(0.55577^t)))」の変数tに、データ「B001VF04」の評価結果の値を一つづつ設定して計算した値の集合「92.057,69.075,46.274,28.715,17.001,9.793,5.553,3.121,1.745,0.973」となる。
この時点で、メッセージ「B001M01」のmsgDescription要素の評価処理の進捗状況は、図20のようになっている。
【0070】
次に、データ「B001VD06」のparam要素(図15の004)を解決する。
ここで必要なパラメタはすでに解決済みであるので、データ「B001VD06」の評価結果は、SQL文「SELECT 112 ? COUNT(*) FROM MTUC WHERE MDID='AX001D05' AND MCEL <=TO_DATE('2000/2/1')」
「SELECT 112 ? COUNT(*) FROM MTUC WHERE MDID='AX001D05' AND
MCEL <=TO_DATE('2000/2/2')」
「SELECT 112 ? COUNT(*) FROM MTUC WHERE MDID='AX001D05' AND
MCEL <=TO_DATE('2000/2/3')」
「SELECT 112 ? COUNT(*) FROM MTUC WHERE MDID='AX001D05' AND
MCEL <=TO_DATE('2000/2/4')」
の実行結果「98,82,68,66」となる。
この時点で、メッセージ「B001M01」のmsgDescription要素の評価処理の進捗状況は、図21のようになっている。
【0071】
次に、数式「B001R04」のparam要素(図15の005)を解決する。
ここで、データ「B001VX01」として参照されるstandards.xmlファイルの「standards/ut/bugDensityKLOC」要素の要素値が、「10」であったとすると、数式「B001R03」の値は、式「1232*(10/1000)」の評価結果、すなわち「12.32」であるため、数式「B001R02」の値は、式「(log0.04236(12.32/(12.32+1)))^(1/10)」の計算結果「0.690626」である。
よって、数式「B001R04」の評価結果は、式「12.32*(0.04236^(0.690626^t))」」の変数tに、データ「B001VF04」の評価結果の値を一つづつ設定して計算した値の集合「1.443,2.802,4.43,6.079,7.564,8.796,9.763,10.491,11.026,11.411」となる。
この時点で、メッセージ「B001M01」のmsgDescription要素の評価処理の進捗状況は、図22のようになっている。
【0072】
最後に、データ「B001VD07」のparam要素(図15の006)を解決する。
ここで必要なパラメタはすでに解決済みであるので、データ「B001VD07」の評価結果は、SQL文「SELECT COUNT(*) FROM MTUB WHERE MDID='AX001D05' ANDMCEL <=TO_DATE('2000/2/1')」
「SELECT COUNT(*) FROM MTUB WHERE MDID='AX001D05' AND MCEL
<=TO_DATE('2000/2/2')」「SELECT COUNT(*) FROM MTUB WHERE MDID='AX001D05' AND MCEL <=TO_DATE('2000/2/3')」
「SELECT COUNT(*) FROM MTUB WHERE MDID='AX001D05' AND MCEL
<=TO_DATE('2000/2/4')」の実行結果「1,2,4,8」となる。こうして、メッセージ「B001M01」のmsgDescription要素の評価は最終的に図23のようになる。
【0073】
よって、メッセージ「B001M01」のmsgDescription要素(図7の行215〜行225)の内容は最終的に、「<gp><template>Curve1</template><axis type="y" id="X" min="0" max="120" /><axis type="y" id="Y" min="0" max="15" /><axis id="A" type="x" 2000/2/1,2000/2/2,2000/2/3,2000/2/4,2000/2/5,2000/2/6,2000/2/7,2000/2/8,2000/2/9,2000/2/10</axis><axis id="B" type="x" >2000/2/1,2000/2/2,2000/2/3,2000/2/4</axis><axis id="c" type="union A B" /><unit name="PCL消化予測" xAx="c" yAx="X"><data>92.057,69.075,46.274,28.715,17.001,9.793,5.553,3.121,1.745,0.973</data></unit><unit name="PCL消化実績" xAx="c" yAx="X"><data>98,82,68,66</data></unit><unit name="バグ累積予測" xAx="c" yAx="Y" /><data>1.443,2.802,4.43,6.079,7.564,8.796,9.763,10.491,11.026,11.411</data></unit><unit name="バグ累積実績" xAx="c" yAx="Y" ><data>1,2,4,8</data></unit></gp>」と解釈され、グラフ描画機能部に渡される(<![CDATA[……]]>は、XML文書においては、それに挟まれる部分を単なる文字列として扱うことを意味するので、解釈時には取り外す)。
QS1は上記のデータを利用して、図13のように、グラフを描画する。
【0074】
続いて、メッセージ「B001M011」の評価を行う。
メッセージ「B001M011」にはcriteria要素(図8の行230〜行231)が含まれるので、この要素内容である論理演算式を評価し、その結果が真であれば、続くmsgDescription要素(図8の行232〜行233、行234〜行236)が処理される。
ここで、criteria要素の論理演算式の内容は、数式「B001R06」の演算結果が1.2以上か0.8以下である場合に真となるので、まず、数式「B001R06」の評価を行う。
数式「B001R06」は、図6,図7の行119〜行208の定義により、データ「B001VD07」の最後のデータ(図7の行205)を数式「B001R04」の演算結果のデータ「B001VF03」番目のデータで割ったものであり、これらのデータが、メッセージ「B001M01」の評価結果からも分かるように、データ「B001VD07」が「1,2,4,8」で、数式「B001R04」の演算結果が「1.443,2.802,4.43,6.079,7.564,8.796,9.763,10.491,11.026,11.411」、また、データ「B001VF03」が、ユーザ定義関数「CalcCalendar3」(図4の行047〜行052)を値「2000/2/1」と値「2000/2/4」を引数として実行(ここでデータ「B001VD04」は「2000/2/1」、データ「B001VS01」は「2000/2/4」であるため)した結果である「4」であるため、式「8/6.079」の演算結果、すなわち「1.316」が評価結果となる。
よって、「(1.316>=1.2) OR (1.316 <=0.8)」という論理演算式は真となる。
【0075】
criteria要素値の論理演算が成立したので、それに続くmsgDescription要素が処理される。
まず、図8の行232〜行233のmsgDescription要素が処理される。このmsgDescription要素は、「type="MSGBOX"」の指定により、QS1においてはmsgDescription要素値をメッセージボックスに表示することを意味する。ここで、データ「B001VM01」の値は、「AX001D05」であるので、「B001:AX001D05:バグ累積件数の予定件数よりの乖離率が20%を越えています。」という文字列が、図14のように、画面に表示される。
次に、図8の行234〜行236のmsgDescription要素が処理される。このmsgDescription要素は、「type="LOGFILE"」の指定により、QS1においてはmsgDescription要素値を所定のログファイルに出力することを意味する。ここで、データ「B001VS01」の値は「2000/2/4」で、データ「B001VM01」の値は、「AX001D05」であるので、「B001:2000/2/1:AX001D05:バグ累積件数の予定件数よりの乖離率が20%を越えています。」という文字列がログファイルに出力される。
【0076】
以上で、評価ルール「B001」に基く品質評価処理が終了する。
【0077】
次に、ソフトウェア品質評価ルールが変更になった場合の措置の例を示す。
ルール変更のシナリオは以下の通りであるとする。
(1)ソースコード行による管理からファンクションポイントに基く管理へ移行する上での暫定処置とする。
(2)品質データベースにおいて、モジュールサイズのステップ数による管理は廃止し、代用として、モジュールごとのファンクションポイントを管理するためのテーブルを設ける。
(3)品質データベースにはファンクションポイントを算出するための基礎データを入れ、ファンクションポイントを算出するには、それらのデータと別途定義する基準値を元に計算を行う。
(4)品質評価時には、ファンクションポイントベースの基準値が未決のため、1ファンクションポイント当り90COBOL行として換算し、従来の基準値を適用するものとする。
【0078】
上記のシナリオに従って品質データベースを変更すると、図24のようになる。
モジュール別単体テスト工程管理表(MUTS)からは実績ステップ数(MDST)を削除する。
新たに、モジュール別ファンクションポイント管理表(MFPC)を追加する。
「モジュールID」は、レコードの一意識別子である。
「入力項目数」「出力項目数」「参照項目数」「インタフェース数」「データファイル数」はそれぞれ、ファンクションポイント法上のパラメタに対応する。
これらの値にその項目別に設定される「重み」の係数を乗じ、その合計を補正前のファンクションポイントとする。
「複雑さのレベル」は、そのモジュールの難易度を示し、この値に対応した補正係数を補正前のファンクションポイントに乗じて、補正後のファンクションポイントを取得する。
その他のテーブルには変更は加えない。
【0079】
ファンクションポイント法上の「重み」係数、難易度による補正係数、及び1FP当りのソースコード行換算係数は、すべてファイルstandards.xmlに追加するものとする。
その変更後の内容の一部を、図24に示す。
ここでの追加範囲は、行010〜行032までである。
行010〜行032までのfp要素は、standards文書要素の直下にあり、ファンクションポイント関連のデータを保持する。
行011のinput要素は要素値として入力項目数に対する重み係数を持つ。
行012のoutput要素は要素値として出力項目数に対する重み係数を持つ。
行013のreference要素は要素値として参照項目数に対する重み係数を持つ。行014のinterface要素は要素値としてインタフェース数に対する重み係数を持つ。
行015のdatafile要素は要素値としてデータファイル数に対する重み係数を持つ。
行016〜行028のdifficulty要素は、補正前ファンクションポイントに対する難易度による補正係数のデータを保持する。その子要素である各coefficient要素(行017〜行027)は、degree属性で指定される複雑さのレベルに応じた補正係数を要素値としてもつ。例えば、行023のcoefficient要素では複雑さのレベルが7である場合に、係数1.1が適用されることを示している。
行029〜行031の1ファンクションポイント当りのソースコード行を算出するための係数のデータを保持する。その子要素であるSLOCperFP要素(行030)は、Lang属性で示されるプログラミング言語における標準的な1FP当りのソースコード行数を要素値として持つ。
【0080】
上記のような、品質評価方法及び品質データベース及び関連ファイルの構成の変化に対応するために、評価ルール「B001」の定義ファイルを変更する。変更の内容は、モジュール別単体テスト工程管理表から直接参照できなくなった実績ステップ数の変わりに、モジュール別ファンクションポイント管理表の内容から導出されるファンクションポイント数からCOBOLソース行数への換算ステップ数を用いるようにすること、である。
【0081】
まず、図5の行063〜行070のviewDefinition要素を図25のように変更する。これによって、実績ステップ数の代わりに、ファンクションポイントを計算するために必要な基礎データを取得する。対象モジュールの「入力項目数」「出力項目数」「参照項目数」「インタフェース数」「データファイル数」「複雑さのレベル」をそれぞれ、「B001VD08」(図25の行009)、「B001VD09」(図25の行010)、「B001VD10」(図25の行011)、「B001VD11」(図25の行012)、「B001VD12」(図25の行013)、「B001VD13」(図25の行014)で参照する。
【0082】
次に、図5の行088〜行091のviewDefinition要素の次(すなわち図5の行091と行092の間)に、図27のviewDefinition要素を追加する。これによって、ファンクションポイントの計算に必要な係数類を参照する。
図26の行001〜行004では、入力項目数に対する重み係数を「B001VX02」で参照している。
図26の行005〜行008では、出力項目数に対する重み係数を「B001VX03」で参照している。
図26の行009〜行012では、参照項目数に対する重み係数を「B001VX04」で参照している。
図26の行013〜行016では、インタフェース数に対する重み係数を「B001VX05」で参照している。
図26の行017〜行020では、データファイル数に対する重み係数を「B001VX06」で参照している。
図26の行021〜行025では、データ「B001VD13」をdegree属性値としてもつ補正係数(言い換えると、品質データベースから取得した対象モジュールの複雑さのレベルに対応した補正係数)を「B001VX07」で参照している。「[@degree="x"]」と言う表現は、「degree属性に「x」をもつ要素を選択する」ということを意味する。
同様に、図26の行026〜行030では、「COBOL」をLang属性値としてもつ換算係数を「B001VX08」で参照している。
【0083】
次に、図7の行199〜行208のrule要素の次(すなわち、図7の行208と行209の間)に、図27ののrule要素を追加する。
このrule要素で追加する数式「B001R07」は、対象モジュールのファンクションポイントの算出とその結果にソースコード行換算係数を乗じて、換算ソースコード行数の算出を行う。
【0084】
最後に、図6の行148のpath要素のassociatedData属性値を「B001R07」に変更する。
これにより数式「B001R03」において、以前にデータ「B001VD01」すなわち対象モジュールの実績ステップ数を設定していた変数に、数式「B001R07」すなわち概算ソースコード行数を設定できるようになる。
【0085】
上記の段落番号〔0080〕〜〔0084〕の修正を行うことで、実装システムを更新することなく、定義ファイルの変更のみで新しい品質評価方法に対応できるようになる。
【0086】
次に、評価ルール定義ファイルの共有例を示す。
【0087】
評価ルール「B001」をQS1とは異なる実装系QS2と共有するものとし、QS2の実装がQS1とほぼ同様であるが、幾つかのキーワードが異なっているものとする。
仮に、QS1のおけるユーザ定義関数「CalcCalendar1」をQS2では「GetDate1」、QS1におけるデータソース指定キーワード「MANUAL」をQS2では「UserInput」と表現するものとする。
共有する評価ルール定義ファイルとその文書型宣言ファイルは、QS1及びQS2の両方からアクセス可能な評価ルールファイル保存部(例えばネットワーク上の共有ディレクトリ上など)に置かれ、必要なときに、QS1及びQS2のローカルな評価ルール保存部にダウンロードされて利用されるものとする。
【0088】
この場合は、単なる名前の置き換えでよいので、XMLのエンティティ参照機能を用いて、図28のようにして解決できる。
まず、QEMLの文書型宣言ファイルに、ローカルな名前解決を行うために、外部エンティティ宣言を追加する(図28の401)。
次に、評価ルール定義ファイル(ここではB001.xml)において、実装システム毎に異なる名称は、エンティティ参照で表現するようにする。この例では、QS1におけるキーワード「MANUAL」は「&dst1」と置き換えられ(図9の002)、ユーザ定義関数名「CalcCalendar1」は「&udf1;」と置き換えられている(図28の403)。
そして、QS1及びQS2のローカルな評価ルール保存部に、上記のエンティティ参照を解決するためのエンティティ宣言を含んだファイルlocal.dtdを置いておけば(図28の404、図28の405)、それぞれの実装系で当該評価ルール定義ファイルが解釈されるときに、エンティティ参照が適切に解決される。
また、それぞれの実装系が利用する品質データベースの構成が異なる場合でも、同様の方法を用いて共有することができる。
【0089】
【発明の効果】
以上説明したように、本発明によれば、品質管理・評価方法をテキストファイルであるXML文書で定義するため、特定の品質管理・評価方法に依存することなく、新しい品質管理・評価方法を開発、導入、運用することが容易となり、また品質管理・評価方法を異なる場所、異なる実装システム間で共有することが容易になる。品質管理・評価方法は、既存の実装システムが前提としない種類のデータソースや、既存の実装システムがユーザ定義関数として提供しない関数機能や、既存の実装システムの機能範囲外の演算方法(math要素の機能範囲)や、既存の実装システムが提供しないような評価結果の出力方法を必須のものとして要求しない限りは、自由に新しいものを開発可能である。
また、定義された品質管理・評価方法は、実装システム間に基本的な共通性がある限りは、異なる場所、異なる実装システム間で共有できる。
なお、基本的な共通性があるとは、(1)提供するユーザ定義関数の機能や評価結果出力方法に共通性があること(2)サポートするデータソースのタイプに共通性があること(3)利用可能な品質データベースの構成が類似していることを意味する。これらについて共通性が高いほど共有が容易になり、そうでない場合は共有が困難になる。但し、その場合でも、評価ルール定義ファイルは単なるテキストファイルであるため、別の実装システムで利用可能なようにそれを変更することは容易である。
【図面の簡単な説明】
【図1】本発明が適用される品質管理及び品質評価システムの構成図である。
【図2】品質評価ルールマークアップ言語QEML、Version1.0の文書型定義を示す図である。
【図3】図2の内容を図式的に表現した図である。
【図4】本発明における評価ルール定義ファイル例(1)を示す図である。
【図5】本発明における評価ルール定義ファイル例(2)を示す図である。
【図6】本発明における評価ルール定義ファイル例(3)を示す図である。
【図7】本発明における評価ルール定義ファイル例(4)を示す図である。
【図8】本発明における評価ルール定義ファイル例(5)を示す図である。
【図9】本発明におけるQSI評価ルール選択画面(1)を表す図である。
【図10】本発明におけるQSI評価ルール選択画面(2)を表す図である。
【図11】本発明におけるQSI評価ルール詳細画面を表す図である。
【図12】本発明におけるパラメタ入力画面例を表す図である。
【図13】本発明におけるグラフ画面例を示す図である。
【図14】本発明における警告表示例を示す図である。
【図15】本発明におけるメッセージ「B001M01」msgDescription要素内param要素の評価方法を示す図である。
【図16】本発明におけるメッセージ「B001M01」msgDescription要素の評価(1)の図である。
【図17】本発明におけるメッセージ「B001M01」msgDescription要素の評価(2)の図である。
【図18】本発明におけるメッセージ「B001M01」msgDescription要素の評価(3)の図である。
【図19】本発明におけるメッセージ「B001M01」msgDescription要素の評価(4)の図である。
【図20】本発明におけるメッセージ「B001M01」msgDescription要素の評価(5)の図である。
【図21】本発明におけるメッセージ「B001M01」msgDescription要素の評価(6)の図である。
【図22】本発明におけるメッセージ「B001M01」msgDescription要素の評価(7)の図である。
【図23】本発明におけるメッセージ「B001M01」msgDescription要素の評価(8)の図である。
【図24】本発明におけるstandards.xmlの内容変更を示す図である。
【図25】図5の行063〜行070のview Definition要素内容変更を示す図である。
【図26】図5の行091の直後のview Definition要素追加を示す図である。
【図27】図5の行091の直後のview Definition要素追加を示す図である。
【図28】本発明における評価ルール評価ファイル共有例を示す図である。
【図29】図2の要素を一覧表示した図である。
【図30】評価ルール「B001」のデータソース一覧を示す図である。
【図31】品質データベースの構成例を示す図である。
【図32】数式一覧を示す図である。
【図33】メッセージ「B001M01」で用いるデータ及び数式を示す図である。
【図34】品質データベースの内容例(1)を示す図である。
【図35】品質データベースの内容例(2)を示す図である。
【図36】品質データベース変更例を示す図である。
【符号の説明】
1…評価ルールファイル保存部、2…情報共有機能、
3…評価ルールファイル、4…評価ルール読み込み部、
5…評価ルール演算部、6…品質データベース、
7…評価ルール評価結果提示部、8…実装システム、
001〜022…要素番号。
Claims (2)
- コンピュータシステム上に組み込まれた品質管理データを保持するためのデータベースシステムと、品質管理・品質評価ルールを記載した構造化文書を保持するファイルによるソフトウェア品質管理方法であって、
利用する組織等に情報を共有させる手段において、上記品質管理・品質評価ルールを記載した構造化文書を保持するファイルにアクセスして、該構造化文書の内容を読み取る第1のステップと、
評価ルール読込み手段において、上記情報共有手段にアクセスして、該情報共有手段が有する構造化文書の内容を読み取り、上記構造化文書を構文的に解釈し、評価ルール演算手段へのインタフェースを提供する第2のステップと、
上記評価ルール演算手段において、上記第2のステップで読み込んだ品質管理・品質評価ルールを記載した構造化文書に基づき、上記品質管理データを保持したデータベースシステムにアクセスし、参照すべき品質管理データを読み取り、読み取った該品質管理データを参照して、演算回路で演算を行うことにより品質評価を実施する第3のステップと、
評価ルール評価結果提示手段において、上記第2のステップで構文的に解釈された構造化文書を受け取ると、上記評価ルール演算手段に対して演算する時点,演算の種類,および演算結果の方法を指示する通知を出し、演算結果として、表示部による警告メッセージの表示、書込み制御部によるログファイルへの書き込み、あるいは書込み制御部による結果レポートの作成のいずれか1つを実行する第4のステップと
を有することを特徴とするソフトウェア品質管理・評価方法。 - コンピュータが読み取り可能なプログラム及びデータを記録する記録媒体であって、
該コンピュータに、品質管理・品質評価ルールを記載した構造化文書を保持するファイルにアクセスして、該構造化文書の内容を読み取る第1の手順、情報共有手段にアクセスして、該情報共有手段が有する構造化文書の内容を読み取り、上記構造化文書を構文的に解釈し、評価ルール演算手段へのインタフェースを提供する第2の手順、上記第2の手順で読み込んだ品質管理・品質評価ルールを記載した構造化文書に基づき、品質管理データを保持したデータベースシステムにアクセスし、参照すべき品質管理データを参照して、演算回路で演算を行うことにより品質評価を実施する第3の手順、評価ルール演算手段に対して演算する時点,演算の種類,および演算結果の方法を指示する通知を出し、演算結果として、表示部による警告メッセージの表示、書込み制御部によるログファイルへの書き込み、あるいは書込み制御部による結果レポートの作成のいずれか1つを実行する第4の手順を、それぞれ実行させるためのプログラム及びデータを記録したことを特徴とする記録媒体。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000087426A JP3703076B2 (ja) | 2000-03-27 | 2000-03-27 | 構造化文書により定義された品質管理及び品質評価ルールによるソフトウェア品質管理・評価方法、ならびにそのプログラムを記録した記録媒体 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000087426A JP3703076B2 (ja) | 2000-03-27 | 2000-03-27 | 構造化文書により定義された品質管理及び品質評価ルールによるソフトウェア品質管理・評価方法、ならびにそのプログラムを記録した記録媒体 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2001273129A JP2001273129A (ja) | 2001-10-05 |
| JP3703076B2 true JP3703076B2 (ja) | 2005-10-05 |
Family
ID=18603439
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000087426A Expired - Fee Related JP3703076B2 (ja) | 2000-03-27 | 2000-03-27 | 構造化文書により定義された品質管理及び品質評価ルールによるソフトウェア品質管理・評価方法、ならびにそのプログラムを記録した記録媒体 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3703076B2 (ja) |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003345918A (ja) * | 2002-05-27 | 2003-12-05 | Nec Corp | ソフトウェア品質管理システムおよびソフトウェア品質管理方法 |
| US6938026B2 (en) * | 2003-07-21 | 2005-08-30 | Bio-Rad Laboratories, Inc. | System and method for implementing quality control rules formulated in accordance with a quality control rule grammar |
| JP5380024B2 (ja) * | 2008-09-19 | 2014-01-08 | 株式会社東芝 | テストデータ生成装置、及びテストデータ生成方法 |
| CN102012822B (zh) * | 2010-12-28 | 2014-10-15 | 西北大学 | 对生产线中的bpm构件可信评估的系统及方法 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH06119205A (ja) * | 1992-10-01 | 1994-04-28 | Toshiba Corp | ソフトウェアの品質分析装置およびその高品質化支援装置 |
| JPH09265393A (ja) * | 1996-03-28 | 1997-10-07 | Hitachi Ltd | プログラム品質評価方法 |
| JPH11296541A (ja) * | 1998-04-14 | 1999-10-29 | Fujitsu Ltd | 構造化データ管理システム及び構造化データ管理プログラムを記録したコンピュータ読み取り可能な記録媒体 |
| JP3545256B2 (ja) * | 1998-04-17 | 2004-07-21 | 松下電器産業株式会社 | 送信装置及び受信装置 |
-
2000
- 2000-03-27 JP JP2000087426A patent/JP3703076B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2001273129A (ja) | 2001-10-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6279006B1 (en) | Structured data management system and computer-readable recording medium storing structured data management program | |
| US9785907B2 (en) | Supplemental system for business intelligence systems | |
| US7418453B2 (en) | Updating a data warehouse schema based on changes in an observation model | |
| US8825695B2 (en) | Mapping dataset elements | |
| US7600182B2 (en) | Electronic data capture and verification | |
| KR101046831B1 (ko) | 문서 내 엘리먼트를 데이터베이스 내 대응 데이터에 링크하는 방법 및 컴퓨터 판독가능 기록 매체 | |
| US7475289B2 (en) | Test manager | |
| US7895238B2 (en) | Generating an information catalog for a business model | |
| US20100114628A1 (en) | Validating Compliance in Enterprise Operations Based on Provenance Data | |
| US7873680B2 (en) | Hierarchical inherited XML DOM | |
| JP2020522779A (ja) | ルールを編集、シミュレート、バージョン制御、及びビジネスプロセス管理する統合システム | |
| Hessellund et al. | Guided development with multiple domain-specific languages | |
| JP5207007B2 (ja) | モデル検証システム、モデル検証方法および記録媒体 | |
| US20070276825A1 (en) | Query reuse through recommend parameter flexibility | |
| US11947567B2 (en) | System and method for computing and managing datasets using hierarchical analytics | |
| US20090083617A1 (en) | Input form design device and input form design method | |
| US20240070580A1 (en) | Systems and Methods for Decommissioning Business Intelligence Artifacts | |
| US20060282441A1 (en) | Definition and management of procedures in a distributed environment | |
| US20020180789A1 (en) | Framework for developing web-based and email-based collaborative programs | |
| JP3703076B2 (ja) | 構造化文書により定義された品質管理及び品質評価ルールによるソフトウェア品質管理・評価方法、ならびにそのプログラムを記録した記録媒体 | |
| US20040267704A1 (en) | System and method to retrieve and analyze data | |
| US20080256092A1 (en) | Data Processing Device and Data Processing Method | |
| Yang | Improving Performance and Correctness of Database-Backed Web Applications | |
| Sonnleitner et al. | Persistence of workflow control data in temporal databases | |
| CN118170358A (zh) | 应用程序的生成方法、装置、电子设备及存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050225 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050315 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050511 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050701 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050714 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090729 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100729 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100729 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110729 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110729 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120729 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130729 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130729 Year of fee payment: 8 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130729 Year of fee payment: 8 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140729 Year of fee payment: 9 |
|
| LAPS | Cancellation because of no payment of annual fees |