JP2003044275A - 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム - Google Patents

変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム

Info

Publication number
JP2003044275A
JP2003044275A JP2001226730A JP2001226730A JP2003044275A JP 2003044275 A JP2003044275 A JP 2003044275A JP 2001226730 A JP2001226730 A JP 2001226730A JP 2001226730 A JP2001226730 A JP 2001226730A JP 2003044275 A JP2003044275 A JP 2003044275A
Authority
JP
Japan
Prior art keywords
influence
degree
risk
affected
program
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.)
Granted
Application number
JP2001226730A
Other languages
English (en)
Other versions
JP3842592B2 (ja
Inventor
Yoshio Kataoka
欣夫 片岡
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2001226730A priority Critical patent/JP3842592B2/ja
Priority to US10/205,400 priority patent/US6757639B2/en
Publication of JP2003044275A publication Critical patent/JP2003044275A/ja
Priority to US10/841,611 priority patent/US7072796B2/en
Application granted granted Critical
Publication of JP3842592B2 publication Critical patent/JP3842592B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3616Software analysis for verifying properties of programs using software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 変更計画の影響度と影響範囲を測定し、この
測定情報から危険度を算出し、それを基に適した変更計
画を選択する際の指針として用いる変更危険度測定シス
テム、変更危険度測定方法及び変更危険度測定プログラ
ムを提供する。 【解決手段】 変更危険度測定システムは、中央演算装
置(CPU)20、プログラム記憶部21、データ記憶
部22、制御の指示及びデータの入力を行う入力部2
3、データの出力を行う出力部24を含む。CPU20
内には抽出手段1、影響範囲特定手段2、影響度判定手
段3、危険度算出手段4、再構成手段5が内蔵されてい
る。抽出手段1は抽出処理を行い、影響範囲特定手段2
は影響範囲を特定し、影響度判定手段3は影響度を判定
し、危険度算出手段4は影響範囲と影響度より危険度を
算出し、再構成手段5は再構成の支援を行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、プログラムの変
更を行う際に、この変更によって副次的に引き起こされ
る可能性の有る変更結果の発生度を危険度として算出す
る変更危険度測定システム、変更危険度測定方法及び変
更危険度測定プログラムに関するものである。
【0002】
【従来の技術】ソフトウェアの開発工程において、プロ
グラムの変更作業は不可避の作業である。また、プログ
ラムの変更を行う技術の1つとして再構成(refactorin
g)という技術が存在する。再構成技術とは、既存プロ
グラムの保守性、拡張性を向上させるための技術であ
り、既存プログラムの動作を変更すること無く、モジュ
ール構成、クラス構成等を変更し、よりプログラムに安
定性を持たせようとするものである。
【0003】上記のようなプログラムの変更作業で常に
問題となるのが、変更作業の結果、プログラマが意図し
た変更結果(目的変更結果)を導き出すのみならず、多
くはプログラマの意図しない副次的結果(副作用結果)
を共に発生させてしまうという点である。
【0004】既存プログラムの変更作業において発生す
る副作用結果を如何に予測、回避するか、また、回避不
可の場合は、既存プログラムのどの箇所に副作用結果が
発生するのかを調べる為に様々な技術が開発されてい
る。例えば、プログラム中の各要素の影響関係を調べる
ためには、「スライシング」という技術が多く使われて
来た(特開平6−202905号公報、特開平6−17
5884号公報、特開平7−134664号公報参
照)。「スライシング」とは、既存プログラムを改造す
る際、改造対象機能および非改造機能について計算して
いる部分を、プログラムの依存関係と制御依存関係を用
いて、プログラム内から抽出する技術のことである。一
方、プログラムの各要素関係を測定するという観点で
は、凝集度の計測を行う技術が提案されている(特開平
11−224210号公報参照)。凝集度とは、プログ
ラムの機能構成単位、すなわち関数やメソッドなどが、
いかに機能的に独立しているかを示す度合いであり、構
成要素単体の性質をあらわす尺度となる。この指標の定
量的評価は大体七段階に分けられ、一番高いのが「機能
的凝集度」と呼ばれるもので、単一の機能が提供可能な
プログラム機能構成単位を指し、これより弱い凝集度と
しては例えば「時間的凝集度」と呼ばれるものがあり、
これは初期化処理をまとめた関数等を指す。一番弱いの
が「暗号的凝集度」と呼ばれ、お互いに全くかかわりの
ない二つ以上の機能が一つの関数にまとまっているプロ
グラム機能構成単位を指す。このように凝集度を用いる
と、関数やメソッドの機能を計測し、プログラムの品質
を数値として客観的に示すことができる。
【0005】
【発明が解決しようとする課題】しかしながら、上記の
従来技術では、既存プログラムの変更作業は、変更作業
後に発生する副作用結果がいずれも0と想定される場合
のみ実施された。つまり、安全が保証された変更のみを
対象としており、少しでも変更後に副作用結果を孕む危
険のあるような変更は放置されるしかないという問題が
あった。
【0006】スライシング技術に関しては、非改造機能
に影響を与えないように改造を行うことはできるが、逆
に、非改造部分から改造部分が影響を受け、正しく改造
できない場合が発生する場合も存在した。また、スライ
シングによって得られる結果は、あくまで各要素の影響
関係の有無を調べるだけであって影響度の測定は不可能
であった為、スライシングの結果が、既存プログラムの
変更方針を決定する為の判断基準とは成り得なかった。
【0007】凝縮度の測定技術に関しては、既存プログ
ラムの変更作業において、手続きの凝縮度が密であるか
どうかは直接プログラムの変更には関係せず、手続きの
凝縮度が高ければ変更作業にとって適、不適とは、一概
には説明できなかった。
【0008】また、再構成の案には唯一の解が存在する
訳ではなく、同等の効果が得られる複数の再構成案が存
在し得るが、複数存在する再構成案の内の最適案、適
案、不適案等のランク付けの判断は容易ではなく、その
結果、プログラムの再構成の有効性は一般のユーザに認
識されているものの、実際に適用されることは少なかっ
た。
【0009】このように、従来技術によれば、既存プロ
グラムの変更を行う際に、その変更によって引き起こさ
れる新規バグ発生等のプログラムの副作用結果を予測す
ることは可能であっても、この副作用結果を影響度とし
て客観的に測定し、この測定値を用いてプログラムの変
更計画を柔軟に行うための指針となる情報を得ることが
困難であった。
【0010】本発明は、上記の問題に鑑みて為されたも
ので、複数存在する変更計画のそれぞれについて、その
影響度の高低や影響範囲の狭広を測定し、この測定情報
から危険度を算出し、複数存在する変更計画内より最も
適した変更計画を選択する際の指針として用いることが
出来る変更危険度測定システム、変更危険度測定方法及
び変更危険度測定プログラムを提供することを目的とす
る。
【0011】
【課題を解決するための手段】上記の目的を達するた
め、本発明の第1の特徴は、(イ)プログラム変更データ
により影響を受ける既存プログラム内のプログラム構成
要素を被影響要素として抽出する抽出手段と、(ロ)被影
響要素を記憶する被影響要素記憶部と、(ハ)被影響要素
から影響範囲を特定する影響範囲特定手段と、(ニ)影響
範囲を記憶する影響範囲記憶部と、(ホ)被影響要素が既
存プログラム全体に及ぼす影響度を判定する影響度判定
手段と、(へ)影響度を記憶する影響度記憶部と、(ト)
影響範囲と影響度とを用いて、既存プログラムの変更の
危険度を算出する危険度算出手段とを有する変更危険度
測定システムであることを要旨とする。
【0012】本発明の第1の特徴に係る変更危険度測定
システムによれば、影響度と影響範囲の双方を考慮して
変更危険度を算出する方式を採ることにより、それぞれ
一方のみを考慮する方式と比べて優れた危険度予測を立
てることが可能である。
【0013】尚、本発明の第1の特徴において、危険度
算出手段は、(チ)影響度と影響範囲の数値若しくは正
規値を用いて危険度を算出する危険度算出部と、(リ)
影響度と影響範囲とをパラメータとして、2次元的に危
険度を表示する危険度表示部とを有しても良い。このよ
うな危険度算出手段によれば、危険度算出手段の算出結
果である危険度を影響範囲と影響度とを組にしたベクト
ル値として評価し、評価結果を危険度表示部に表示する
ことができる。
【0014】ここで「数値」とは数量化された値と定義
し、「数量化」とは出現位置毎に出現回数をカウントす
ることと定義する。また、「正規値」とは正規化された
値と定義し、「正規化」とはデータを特定の変換によっ
て一定範囲に収めることと定義する。尚、上記特定の変
換には、計算式等を用いて一定の値を求めること等があ
る。一例として、縦ベクトルを数量化若しくは正規化さ
れた影響度、横ベクトルを数量化若しくは正規化された
影響範囲とし、原点をmin、原点より離れるたびma
xに近づくように設定する。パラメータ群にはソースコ
ード、変更計画に応じて危険度を数種類の分布マップ上
に割り付ける。更に、影響範囲や影響度に任意の重み付
けを行うことにより、変更計画の目的に応じた危険度の
算出を行い、算出結果を表示することが可能である。
【0015】本発明の第2の特徴は、(イ) 抽出手段を
用いて、プログラム変更データにより影響を受ける既存
プログラム内のプログラム構成要素を被影響要素として
抽出するステップと、(ロ)被影響要素を被影響要素記憶
部に記憶するステップと、(ハ) 影響範囲特定手段を用
いて、被影響要素記憶部から被影響要素を取り出し、被
影響要素から影響範囲を特定するステップと、(ニ)影響
範囲を影響範囲記憶部に記憶するステップと、(ホ) 影
響度判定手段を用いて、被影響要素記憶部から被影響要
素を取り出し、被影響要素が既存プログラム全体に及ぼ
す影響度を判定するステップと、(へ)影響度を影響度記
憶部に記憶するステップと、(ト) 危険度算出手段を用
いて、影響範囲記憶部に記憶された影響範囲と影響度記
憶部に記憶された影響度とにより、プログラム変更デー
タによる既存プログラムの変更の危険度を算出するステ
ップとを有する変更危険度測定方法であることを要旨と
する。
【0016】又、付け加えると、この変更危険度測定方
法は、(チ)被影響要素の既存プログラム内分布状況か
ら影響範囲を特定するステップの影響範囲の単位が、
(リ)一つのプログラム構成要素を一つの影響範囲とす
る単位と、機能、性質に共通点のあるプログラム構成要
素の集合体を一つの影響範囲とする単位とを有し、影響
範囲特定手段が影響範囲を特定する際に、一つのプログ
ラム構成要素を一つの影響範囲とする単位と機能、性質
に共通点のあるプログラム構成要素の集合体を一つの影
響範囲とする単位の内一つを選択するステップを含んで
いても良い。
【0017】本発明の第3の特徴は、プログラム変更に
よる危険度を測定する変更危険度測定システムを駆動制
御するためのプログラムであって、(イ)プログラム変
更データにより影響を受ける既存プログラム内のプログ
ラム構成要素を被影響要素として抽出手段に抽出させる
命令と、(ロ)被影響要素を被影響要素記憶部に記憶さ
せる命令と、(ハ)被影響要素記憶部から被影響要素を
取り出し、被影響要素から影響範囲を影響範囲特定手段
に特定させる命令と、(ニ)影響範囲を影響範囲記憶部
に記憶させる命令と、(ホ)被影響要素記憶部から被影
響要素を取り出し、被影響要素が既存プログラム全体に
及ぼす影響度を影響度判定手段に判定させる命令と、
(ヘ)影響度を影響度記憶部に記憶させる命令と、
(ト)影響範囲記憶部に記憶された影響範囲と影響度記
憶部に記憶された影響度とを用いて、プログラム変更デ
ータによる既存プログラムの変更の危険度を危険度算出
手段に算出させる命令とを有する変更危険度測定プログ
ラムであることを要旨とする。
【0018】本発明の第3の特徴に係るプログラムは、
プログラム記憶部に保存される。この変更危険度測定プ
ログラムを中央演算装置(CPU)が読み出すことによ
り、抽出手段と、影響範囲特定手段と、影響度判定手段
と、危険度算出手段と、再構成手段とに上記の命令を実
行させることが可能となる。
【0019】
【発明の実施の形態】本発明の実施の形態に係る変更危
険度測定システムにおいては、被影響要素の既存プログ
ラム内分布状況である「影響範囲」と被影響要素が既存
プログラム全体に及ぼす「影響度」の両方を考慮に入れ
て変更の危険度を算出する(図16、図17参照)。こ
こで「危険度」とは、特定の変更計画がどの程度の範囲
に渡ってどれくらいの影響を与えるかと言うことを総合
的に判断して得られる尺度である。例えば、非常に独立
性の高い要素に対する変更を行う場合を考える。このよ
うな要素は、影響度と言う観点では非常に低いことが考
えられるが、仮にこの要素がプログラム中で広く使用さ
れている場合には危険度はそれなりに高くなる。逆に独
立性の低い要素に対する変更を行う場合を考える。この
ような要素は、他の要素との繋がりが比較的強く、影響
度と言う観点では大きいことが考えられる。しかしこの
要素がプログラム中で数箇所でしか使用されていないの
ならば、その危険度はそれほど高くはならない。
【0020】危険度を算出する場合、影響範囲と影響度
を数量化若しくは正規化しておくことが望ましいが、本
発明では両方とも、定量化にソースコード内の情報だけ
を用いる為、上限の決まった値をとることは明らかであ
り、出現位置及び出現回数をカウントして数量化した
り、若しくは、予め設定された計算式により適当な正規
化をすることが可能である。
【0021】ここで、本発明の実施の形態に係る「影響
範囲」について説明する。影響範囲は、プログラム全体
をメソッド(関数)単位で見たときの広がり具合と、ク
ラス(モジュール) 単位で見たときの広がり具合に差
が生じる可能性がある。具体例で見てみると、図13で
は、メソッド単位で見ると、メソッド m1は9つのメ
ソッドで使われており、メソッドm2は4つのメソッド
で使われていることから、メソッド m1のほうが影響
範囲が広いと言うことが出来る。しかしながら、クラス
単位で見ると、メソッド m1はクラス C、D及びEの
3つのクラスで使われているが、メソッドm2 はクラ
ス B、D、E及びIの4つのクラスで使われている。
影響範囲の定義としていずれを取るかは画一的に決めら
れる問題ではない。例えばオブジェクト指向言語であれ
ば、各クラスは比較的独立性が高く設計されていること
が期待されるため、単純にメソッドの数で数えるよりも
クラスの数で影響範囲を定量化する方が妥当なケースが
多い。しかしながらC言語などの場合は各モジュール
(クラス)の独立性が必ずしも高くは無く、関数単位で
の定量化が望ましいケースもある。つまり、「影響範
囲」はプログラムの変更計画や使用するプログラミング
言語に応じて柔軟な単位変更が望まれる。
【0022】「影響度」は、プログラム(ソースコー
ド)内に存在する外部変数、引数、クラス変数及び返り
値等をカウントした値、若しくは、カウントした値を正
規化した正規値より求められる。外部変数、引数、クラ
ス変数及び返り値等が他のソースコードに及ぼす影響に
ついては、直接影響を及ぼす1次的影響、間接的に影響
を受ける2次的影響等が考えられる。また、影響度は、
変数の種類や使用するプログラミング言語に応じた柔軟
な変更を必要とする。
【0023】まず単純に影響度のみを考慮する方式の問
題点に付いて考察する。図14では、2つのメソッドメ
ソッドm1とメソッドm2の影響度が同じであるとす
る。このとき、影響度のみを考慮して危険度を算出する
場合、影響度が同じであるから危険度も同じと算出され
る。しかしながらこのケースでは、メソッドm1 に関
する変更を行うと、プログラム中の他の9つの要素への
2次影響が派生する可能性がある。一方、メソッドm2
に関する変更では、他の4つの要素への2次影響が派生
する可能性がある。この場合、双方の変更の危険度が同
じであるとするのは妥当ではないことは明白である。
【0024】次に影響範囲のみを考慮する方式の問題点
に付いて考察する。図15に示される通り、2つのメソ
ッド、メソッドm1とメソッドm2 は、いずれもプロ
グラム中の他の4つの要素への2次影響派生の可能性を
持っている。影響範囲のみを考慮すれば、これら二つの
メソッドに関する変更作業の危険度は同じと算出され
る。しかしながら、このケースで、メソッドm1とメソ
ッドm2の影響度に差があるとする。メソッドm1 よ
りもメソッドm2のほうが、使用している外部変数やパ
ラメータの数などが多い場合、この2つの影響度の差を
考慮せずに危険度が同等であるとすることが妥当ではな
いことは明白である。
【0025】本発明の実施の形態の説明では、Java
やC++といった一般のオブジェクト指向言語を対象
とした変更を題材とする。
【0026】(プログラム変更危険度測定システム)本
発明の実施の形態に係るプログラム変更危険度測定シス
テムは、図1に示すように、中央演算装置(CPU)2
0、プログラム記憶部21、データ記憶部22と、制御
の指示及びデータの入力を行う入力部23と、データの
出力を行う出力部24と、ホストコンピュータ25及び
インタフェース26およびこれらを接続するシステムバ
ス27等からなる。
【0027】CPU20がプログラム記憶部21に格納
された変更危険度測定プログラムを実行することにより
本実施の形態に係る変更危険度測定システムによる処理
が実現される。CPU20は、抽出手段1、影響範囲特
定手段2、影響度判定手段3、危険度算出手段4、再構
成手段5等のモジュールを内蔵している。抽出手段1
は、既存プログラムとプログラム変更データから、プロ
グラム変更データにより影響を受ける既存プログラム内
のプログラム構成要素を被影響要素として抽出する。影
響範囲特定手段2は、被影響要素から影響範囲を特定す
る。影響度判定手段3は、被影響要素が既存プログラム
全体に及ぼす影響度を判定する。危険度算出手段4は、
影響度と影響範囲を用いて、プログラム変更データによ
る既存プログラムの変更の危険度を算出する。再構成手
段5は、算出された危険度を基に、最も適したプログラ
ム変更データを選択する際の支援を行う。
【0028】プログラム記憶部21は、被影響要素抽出
プログラム、影響範囲特定プログラム、影響度判定プロ
グラム、危険度算出プログラム及び再構成プログラムを
有している。また、これらのプログラムはそれぞれソフ
トウェアの論理的な機能単位であり、それぞれが互いに
物理的に異なるシステム上で動作することも可能であ
る。データ記憶部22は、被影響要素記憶部8と、影響
範囲記憶部9と、影響度記憶部10と、危険度記憶部1
1と、再構成記憶部12と、ソースコード記憶部6と、
変更計画記憶部7とを備えている。被影響要素記憶部8
は被影響要素抽出プログラムの実行結果等を格納し、影
響範囲記憶部9は影響範囲特定プログラムの実行結果等
を格納し、影響度記憶部10は影響度判定プログラムの
実行結果等を格納し、危険度記憶部11は危険度算出プ
ログラムの実行結果等を格納し、再構成記憶部12は再
構成プログラムの実行結果等を格納する。また、ソース
コード記憶部6は入力部23より入力されたソースコー
ドを格納し、変更計画記憶部7は入力部23より入力さ
れた変更計画を格納する。入力部23は、キーボード、
マウス等を設けソースコード、変更計画等のデータの入
力を行う。尚、入力部23は、上記の他に、インタフェ
ース26を介したホストコンピュータ25やフロッピー
(登録商標)ディスク等の記憶装置から入力させるよう
にしても良い。出力部24は、表示部、プリンタ等を設
けデータの出力を行う。尚、出力部24は、上記の他に
出力結果をファイルやフロッピーディスク等の記憶装置
に格納したり、インタフェース26を介してホストコン
ピュータ25に出力するようにしても良い。
【0029】図2に示すように、本発明の実施の形態に
係る抽出手段1は、構文解析部11と、被影響要素抽出
部12とを有している。構文解析部11は、入力部23
より変更計画7aとソースコード6aを読み込み、構文
解析を行い、構文構造、変数定義等の影響範囲を特定す
る際に必要と思われる情報を作成する。尚、図示しない
が、入力された変更計画7aは変更計画記憶部7へ、ソ
ースコード6aはソースコード記憶部6へ送信され、記
憶される。被影響要素抽出部12は、構文解析部11で
解析された変更計画7aとソースコード6aを用いて、
変更計画7aを実行した結果、変更の可能性のあるソー
スコード箇所(被影響要素情報8a)をソースコード内
より抽出する。変更計画の例としては、UNIX(登録
商標)のpatchコマンドで使用される差分情報等が
挙げられる。尚、抽出された被影響要素8aは要素ごと
に被影響要素記憶部8に格納される。
【0030】図3に示すように、本発明の実施の形態に
係る影響範囲特定手段2は、単位決定部20と、メソッ
ド探索部21と、クラス探索部22と、影響範囲特定部
23とを有している。単位決定部20は、記憶部7に格
納されている変更計画7aと、被影響要素記憶部8に格
納されている被影響要素8aを1つ取り出し、変更計画
7aの目的に応じて、オペレータの指示若しくは格納さ
れているプログラムによって影響範囲の単位を決定す
る。本実施形態ではメソッド単位とクラス単位の2つの
単位を使用する。単位決定部20でメソッド単位を選択
すると、被影響要素8aはメソッド探索部21へ送信さ
れ、クラス単位を選択すると被影響要素8aはクラス探
索部22へ送信される。
【0031】メソッド探索部21では、スライシング技
術等を用いて、被影響要素8aとなるメソッドを探索す
る。探索された被影響要素8aはメソッド単位で影響範
囲特定部23に送信される。クラス探索部22では、ク
ラス間依存関係グラフ等を用いて被影響要素8aとなる
クラスを探索する。探索された被影響要素8aはクラス
単位で影響範囲特定部23に送信される。影響範囲判定
部23は、単位ごとに、被影響要素8aのソースコード
6a内での分布状況を判定する。具体的には被影響要素
8aの出現位置、出現回数等を抽出する。尚、被影響要
素8aの出現位置、出現回数の抽出は被影響要素8aと
ソースコード6aの併合処理等を行うことにより実現す
る。また、影響範囲は後に危険度を算出する際に使用さ
れる為、数量化若しくは正規化する。影響範囲特定部2
3によって求められた被影響要素8aの出現位置、出現
回数、正規化された数値等の情報は影響範囲記憶部9に
格納される。尚、影響範囲の単位には、メソッド単位、
クラス単位、ブロック単位、変数単位等のものが考えら
れ、いずれの単位においても使用可能とする。
【0032】図4に示すように、本発明の実施の形態に
係る影響度判定手段3は、影響度判定手段3は影響度抽
出部30と、影響度正規部31とを有している。影響度
判定手段3は、被影響要素記憶部8に格納されている被
影響要素8aを1つ取り出し、影響度の基となる被影響
要素8aに含まれている影響度を抽出する。影響度には
動的情報8bと静的情報8cの2種類の情報が存在す
る。動的情報8bは、抽出手段1により被影響要素8a
としてカウントされた回数や、動作プロファイルに基づ
いた実行回数カウント等を指し、静的情報8cは、被影
響要素8aのプログラム中での参照頻度、被影響要素8
aと他の要素間の相互依存関係等を指す。抽出された影
響度の内、動的情報8bは影響度正規部31へ送信さ
れ、静的情報8cは影響度記憶部10へ送信、格納され
る。影響度正規部31では動的情報の数量化若しくは正
規化を行う。動的情報8bとして数量化若しくは正規化
される外部変数、引数、クラス変数及び返り値等の情報
は、出現回数等をカウントして数量化するか若しくは計
算式等を用いて正規化する。尚、影響度正規部31によ
って求められた数値等の情報は、動的情報8bとして影
響度記憶部10に格納される。影響度記憶部10に格納
された情報は蓄積され、影響度算出式の生成等といった
影響度値の適正化の際に利用する、外部からの補助的情
報として今後利用する。
【0033】図5に示すように、本発明の実施の形態に
係る危険度算出手段4は、危険度算出部40と、危険度
表示部41とを有している。危険度算出部40は、影響
範囲記憶部9に記憶された影響範囲情報9aと、この影
響範囲情報9aとペアの被影響要素8aを一つずつ取り
出し、影響度記憶部10より影響範囲情報9aに対応す
る影響度情報10aを取り出し、取り出された影響範囲
情報9a、被影響要素8a、影響範囲情報9aを合わせ
て被影響要素8a毎の危険度を算出する。尚、影響範囲
や影響度の他にも、計算式に任意の重み付け(数値代
入)をすることで、様々な目的に応じた危険度の算出を
行うことが可能である。尚、危険度算出部40によって
求められた数値等の情報は、危険度記憶部11に格納さ
れる。
【0034】危険度表示部41は、危険度算出部40に
よって求められた数値等の情報を編集し、図1に示す出
力部等を用いて危険度の情報を閲覧する準備を行う。具
体的に、第1のパラメータとして影響度を入力し、第2
のパラメータとして影響範囲を入力し、第1のパラメー
タと第2のパラメータとで2次元的に表現されるパラメ
ータ群を構成し、2次元的に危険度を表示する(図1
6、図17参照)。表示方法としては、単純な線形結合
だけでなく、様々なポリシーを反映した組み合わせを考
える事が可能である。
【0035】図6に示すように、本発明の実施の形態に
係る再構成手段5は、再構成候補抽出部50と、再構成
危険度算出部52と、再構成実行支援部54とより構成
される。再構成候補抽出部50は、ソースコード記憶部
6に入力されたソースコード6aを取り出して構文解析
し、再構成のための候補案を探し出し、再構成候補51
を抽出する。抽出された再構成候補51は再構成危険度
算出部52へ送信され、再構成記憶部55にて一時記憶
される。
【0036】再構成危険度算出部52は、抽出された再
構成候補51とソースコード6aを基に再構成の危険度
を算出する。再構成候補51は算出された危険度を付加
され、危険度付再構成候補53として再構成実行支援部
54へ送信され、再構成記憶部55にて記憶される。再
構成実行支援部54では、危険度付再構成候補53を用
いて、実際に基のソースコード6aを再構成するために
有益となる情報を提示し、再構成の支援を行う。尚、再
構成候補51、危険度付再構成候補53、再構成済みソ
ースコード55aは再構成記憶部55にて記憶される。
【0037】(変更危険度測定方法)次に、本発明の実
施の形態に係る変更危険度測定システムを用いた測定方
法について説明する。オペレータがソースコード6aと
変更計画7aを入力し、危険度を出力し、危険度に基づ
き再構成する動作を図7に示すフローチャートを用いて
説明する。
【0038】(a)ステップS101では、先ず、図7
に示すように、オペレータがソースコード6aと変更計
画7aを入力する。最初に入力部23から対象となるソ
ースコード6aを読み込みソースコード記憶部6に格納
し、次に入力部23から変更計画7aを読み込み変更計
画記憶部7に格納する。
【0039】(b)ステップS102では、ステップS
101で格納されたソースコード6aと変更計画7a
を、再びソースコード記憶部6及び変更計画記憶部7よ
り読み出し、これらを解析し、構文構造、変数定義等の
各情報を作成し、抽出処理の準備を行う。
【0040】(c)ステップS103では、抽出手段1
を用いて、被影響要素8aの抽出処理を行う。変更計画
7aから、変更要素を一つずつ取り出して、その要素が
影響を与え得る要素(被影響要素8a)をソースコード
6a内から抽出する。抽出された被影響要素8aは被影
響要素記憶部8に送信され、格納される。
【0041】(d)ステップS104では、影響範囲特
定手段2を用いて、被影響要素8aの影響範囲特定処理
を行う。被影響要素記憶部8に格納されている被影響要
素8aを一つずつ取り出して、変更計画7aの目的に応
じて範囲の単位を決定し、被影響要素8aのソースコー
ド6a内分布位置等を範囲の単位ごとに判定する。判定
された影響範囲は影響範囲記憶部9に送信され、格納さ
れる。
【0042】(e)ステップS105では、影響度判定
手段3を用いて、被影響要素8aの影響度判定処理を行
う。変更計画7aから、変更要素を一つずつ取り出し、
変更要素に対応する被影響要素8aをソースコード6a
内から抽出する。抽出された影響度は影響度記憶部10
に送信され、格納される。
【0043】(f)ステップS106では、危険度算出
手段4を用いて、危険度の算出処理を行う。影響度の数
量化若しくは正規化された値と、影響範囲の数量化若し
くは正規化された値を取り出し、計算式を用いて危険度
を算出し、汎用機等の画面上に出力する。算出された危
険度の情報は危険度記憶部11に送信され、格納され
る。
【0044】(g)ステップS107では、再構成手段
5を用いて、ステップS101〜S106で得た変更の
危険度の情報を基に再構成処理を行う。ソースコード記
憶部6よりソースコード6aを取り出し、再構成候補5
1を抽出する。更に、抽出された再構成候補51に基づ
いて危険度を算出し、算出された危険度付再構成候補5
3を基に再構成支援を実行する。再構成支援済みのソー
スコードは再構成記憶部55に送信され、格納される。
【0045】図7に示したステップS102では、ステ
ップS101で格納されたソースコード6aと変更計画
7aを解析し、構文構造、変数定義等の各情報を作成
し、抽出処理の準備を行う。構文等を解析するアルゴリ
ズムは、コンパイラ等に使われる公知の技術を用いる。
これは、記号表(変数定義情報)と構文木(構文構造情
報)から構成されており、登録されている情報には、変
数名、定義されている行番号、変数の型、変数の初期
値、上位(親)の変数の情報へのポインタ、下位の先頭
(長子)の変数の情報へのポインタ、同じ親をもち次に
定義されている変数(弟)へのポインタ、その変数が再
定義している変数の情報へのポインタ、その変数を再定
義している変数の情報のリストへのポインタ、構文木上
でその変数が設定されている箇所へのポインタのリス
ト、構文木上でその変数が参照されている箇所へのポイ
ンタのリスト、その変数と包含関係にある変数の情報等
がある。
【0046】構文木はプログラムの実行順序に応じて得
られる文のつながりを表すことによりプログラムの構文
構造を表現する。構文木の個々のノードはプログラムの
命令文や式に相当し、各々情報を持ち、情報全体でプロ
グラムを構成する。構文木が持ち合わせる情報には、代
入文の場合には、文種別(=代入)情報として、行番
号、ベーシックブロックへのポインタ、代入元の式への
ポインタ、代入先の変数に対応する名前表のコラムへの
ポインタ、次の文へのポインタ等がある。条件分岐文の
場合には、文種別(=条件分岐)情報として、行番号、
ベーシックブロックへのポインタ、条件式情報へのポイ
ンタ、then部の文の先頭へのポインタ、else部の文の先
頭へのポインタ、次の文へのポインタ等がある。また、
条件式の情報としては、演算子の種別、右辺の式の情報
へのポインタ、左辺の式の情報へのポインタ等がある。
【0047】次に、図8を用いて、図7におけるステッ
プS103(被影響要素8aの抽出処理)の動作の流れ
について説明する。
【0048】(a)先ず、ステップS201で抽出の対
象となるソースコード6aを読み込み、次にステップS
202にてソースコード6aの変更を目的とする変更計
画7aを読み込む。このとき、ソースコード6a1つに
対し、変更計画7aは複数存在していても良い。
【0049】(b)次にステップS203では、ステッ
プS202で読み込まれた変更計画7aより一つの変更
要素を取り出し、その変更要素が影響を与える可能性の
ある箇所(被影響要素8a)をソースコード6a内より
検索し、被影響要素8a数をカウントし、数量化する。
尚、特定の変更cによって影響を受ける被影響要素8a
の集合を、 ε(c)・・・・・(1) と定義する。尚、正規化に関しては変更例にて説明す
る。
【0050】(c)次にステップS205で、検索され
た被影響要素8aは1つずつ抽出され、被影響要素記憶
部8において記憶される。最後にステップS206で、
現在処理した変更要素が、最後の変更要素であったかど
うかの判定を行い、最後の変更要素でなかったらステッ
プS203へ戻り、上記の動作を繰り返す。最後の変更
要素であったなら、この抽出処理を終了する。
【0051】次に、図9を用いて、図7のステップS1
04(影響範囲の特定処理)の動作の流れについて説明
する。
【0052】(a)先ずステップS301で、抽出の対
象となるソースコード6aを読み込み、ステップS30
2で、ステップS103で作成された被影響要素情報8
を読み込む。
【0053】(b)次に、ステップS303では、影響
範囲そのものの単位を決定する。これは、ステップS3
03にて取り出された1つの被影響要素8aを、変更計
画7aの目的や使用されているプログラミング言語等に
応じて、ソースコード6aを区分する単位を変更するも
ので、オペレータ若しくは格納されているプログラムに
よって実行される。本実施形態ではメソッド単位と、ク
ラス単位とでソースコード6aを区分けする。メソッド
単位と決定されると、ソースコード6aはメソッド単位
に区分けされ、クラス単位と決定されると、ソースコー
ド6aはクラス単位に区分けされる。
【0054】(c)次にステップS304で、被影響要
素情報8より一つの被影響要素8aを取り出す。その後
ステップS305で被影響要素8aの、ソースコード6
a内での出現位置、出現回数を求める。
【0055】(d)ステップS306では、出現位置、
出現回数に基づき被影響範囲を特定し、また被影響範囲
を数量化若しくは正規化する。影響範囲として、特定の
変更cの影響範囲は、被影響要素8a集合ε(c)の各
要素が存在するメソッドの数として表現され、メソッド
の出現回数を出現位置(メソッド及びクラス)毎にカウ
ントして数量化し、これを、 ρ(c)・・・・・(2) と定義する。尚、正規化に関しては変更例にて説明す
る。
【0056】(e)尚、特定された被影響範囲及び数量
化若しくは正規化された被影響範囲は、ステップS30
7で影響範囲記憶部にて記憶される。
【0057】(f)最後にステップS308では、現在
処理した被影響要素8aが、最後の被影響要素8aであ
ったかどうかの判定を行い、最後の被影響要素8aでな
かったらステップS304へ戻り、上記の動作を繰り返
す。最後の被影響要素8aであったなら、この特定処理
を終了する。
【0058】次に、図10を用いて、図7のステップS
105(影響度の判定処理)の動作の流れについて説明
する。
【0059】(a)先ずステップS401で、ステップ
S103で作成された被影響要素8a情報を読み込み、
ステップS402で、被影響要素8a情報より一つの被
影響要素8aを取り出す。
【0060】(b)次にステップS403では、その被
影響要素8aの影響度を判定する。影響度には動的情報
と静的情報の2種類の情報があり、動的情報としては、
被影響要素8a抽出手段により被影響要素8aとしてカ
ウントされた回数と、動作プロファイルに基づいた実行
しカウントされた回数とがあり、具体的に、外部変数、
引数、クラス変数及び返り値等を指す。静的情報として
は、被影響要素8aのプログラム中での参照頻度、被影
響要素8aと他の要素間の相互依存関係がある。本実施
形態では、影響度の内、重要とみなされる動的情報は数
量化若しくは正規化し、静的情報は影響度記憶部10へ
送信、格納される。
【0061】ここで、動的情報の影響度を数量化若しく
は正規化する。特定の変更cの影響度は、特定の要素
(メソッド及びクラス)で使用される外部変数、引数、
クラス変数及び返り値の総数とし、外部変数、引数、ク
ラス変数及び返り値を、メソッド及びクラス内での出現
毎にカウントし、これを、 Δ(m) ・・・・・(3) と定義する。尚、正規化に関しては変更例にて説明す
る。
【0062】(c)ステップS404で、判定された影
響度及び数量化若しくは正規化された影響度は、影響度
記憶部10にて記憶される。最後にステップS405
で、現在処理した被影響要素8aが、最後の被影響要素
8aであったかどうかの判定を行い、最後の被影響要素
8aでなかったらステップS402へ戻り、上記の動作
を繰り返す。最後の被影響要素8aであったなら、この
判定処理を終了する。
【0063】次に、図11を用いて、図7のステップS
106(危険度の算出処理)の動作の流れについて説明
する。
【0064】(a)先ずステップS501で、影響範囲
情報9aを読み込み、影響範囲情報9aより、被影響要
素8aと影響範囲情報9aのペアを一つ取り出す(S5
02)。次にステップS503で、被影響要素8aと影
響範囲情報9aのペアに対応する影響度を影響度記憶部
10から読み込む。
【0065】(b)次にステップS504では、被影響
要素8a毎の危険度を算出する。危険度と、影響範囲情
報9aとを合わせて、被影響要素8a毎の危険度を算出
する。危険度算出には、本実施形態では、特定の変更c
について、式(1)、式(2)及び式(3)を用いて以
下の式で危険度D(c)を算出する。
【0066】 D(c)=[(Cρρ(c))2 +Σ(CΔΔ(m))2 1/2・・・(4) 右辺のΣの項は、ε(c)の要素である変数mを変化さ
せたときの総和である。また、Cρ、CΔは任意係数で
ある。
【0067】(c)次にステップS505では、現在処
理した被影響要素8aと影響範囲のペアが、最後のペア
であったかどうかの判定を行い、最後のペアでなかった
らステップS502へ戻り、上記の動作を繰り返す。最
後のペアであったなら、この算出処理をぬける。
【0068】(d)最後にステップS506では、全て
の変更計画7aを重ね合わせて危険度を算出し、危険度
を表示する。危険度の表示方法として、本実施形態では
2つの表示例について説明する。
【0069】(1)危険度は高いが影響範囲が狭いケー
スと影響範囲は広いが危険度は低いケースについての表
示例図16に示されるように影響度は高いが影響範囲は
狭いケースは領域Aとして表され、影響範囲は広いが影
響度は低いケースは領域Bとして表される。この場合、
パラメータ郡は、両方とも危険度は低くなるように設定
されている。
【0070】(2)影響範囲と影響度の組合せ方は一定
ではないが、影響範囲と影響度の値によって組合せ方を
変化するケースについての表示例図17に示される方法
では、以下の定義がなされている: 領域A:危険度は0とする; 領域B:危険度は影響範囲ρに等しいとする; 領域C:危険度は影響度Δに等しいとする; 領域D:危険度はρとΔの最大値とする; 領域E:危険度は1(最大値)とする。
【0071】尚、上記の危険度表示は、ステップS50
4で被影響要素8aの危険度算出毎に表示してもよい。
【0072】次に、図12を用いて、図7のステップS
107(再構成の支援処理)の動作の流れについて説明
する。
【0073】(a)先ずステップS601では、ソース
コード6aを読み込み、ステップS602で、再構成候
補51を探し出し、抽出する。尚、ステップS602で
使用する構成及び手順は変更計画7aを作成する際に使
用する構成及び手順と同様とし、再構成候補51は変更
計画7aに相当するものとする。
【0074】(b)次にステップS603では、ソース
コード6aと再構成候補51を基に、再構成候補51の
危険度を算出する。再構成候補危険度の算出には危険度
算出手段4で使用したステップ(S106)や計算式を
用いる。再構成候補危険度が算出されると、再構成候補
危険度を基のソースコード6aに付加し、危険度付再構
成候補を作成する。
【0075】(c)ステップS604では、ステップS
603にて作成された危険度付再構成候補53に再構成
の実行を支援する情報を作成し、危険度付再構成候補5
3に加えて、汎用機等の画面上に出力する。オペレータ
は出力の支援情報によって再構成の危険度や妥当性を判
断し、再構成を実行する。
【0076】尚、本発明による再構成の「支援」とは、
ソースコード6a及び変更計画7aの解析によって得ら
れる変更計画の変更内容、要求された変更によって影響
を受ける影響範囲及び影響度の指摘、変更によって引き
起こされる副作用結果の修正指示、副作用結果修正の可
能性の検討結果、要求された変更計画の妥当性の判断及
びその理由等を指す。
【0077】(変更危険度システム、方法及びプログラ
ムの使用例)ここで具体例を用いて本発明の作用を説明
する。 図18は入力された数式を逆ポーランド記法に
変換するJavaプログラムを示している。今ここで変更計
画7aとして、 (イ) error()の変更 表示メッセージを一部変更する(図19) (ロ) isDigit()の変更 真偽値判定の順序を変更する(図20) の二つを考え、それぞれの危険度を測定する。
【0078】まず(イ)のerror()の変更を考える。こ
の変更による被影響要素8aは、error() 自身のみであ
る。次にこの被影響要素8aの影響範囲を調べると、ma
tch()とterm()のに箇所で使用されていることが分か
り、出現回数は2回であるため、式(2)より、この変
更の影響範囲は2となる。
【0079】次に被影響要素8aの影響度を定量化す
る。error()は他の要素の動作に影響を全く与えないた
め、影響度は最小である。式(3)より、この影響度は
0と定量化される。これら影響範囲と影響度とを重ね合
わせて危険度を求める。任意係数Cρ、CΔ の両方の
値を1とし、式(4)を用いると、危険度は2となる。
【0080】次に(ロ)のisDigit() の変更を考える。
この変更による被影響要素8aは、isDigit()自身とこ
のメソッドの返り値を利用しているterm()である。次に
これら被影響要素8aの影響範囲を調べると、isDigi
t()自身はterm()で使用されており、term()はexpressio
n()内の4箇所で使用されている。term()自身で1回、e
xpression()で4回出現している為、式(2)より、こ
の変更の影響範囲は5となる。
【0081】次に被影響要素8aの影響度を定量化す
る。isDigit()は、その返り値がterm()の動作に影響を
与える。影響を与える変数は1つであるため、式(3)
より、この影響度は1と定量化される。これら影響範囲
と影響度とを重ね合わせて危険度を求める。任意係数C
ρ、CΔの両方の値を1とし、式(4)を用いると、危
険度は6となる。
【0082】以上説明した通り、本発明により(イ)と
(ロ)の変更を比較すると、後者の方がより危険度の高
い変更であると言うことが定量的に評価される。
【0083】(変更例)本発明の実施の形態では影響範
囲と影響度の両方を考慮して危険度を算出するが、影響
範囲、影響度の両方とも、その定量化にはソースコード
内の情報だけを用いているので、上限の決まった値を取
ることは明らかであるといった観点から見ると、被影響
要素となるメソッド(クラス)が、ソースプログラムに
含まれる全メソッド(クラス)に対し、どれ程含まれて
いるか等の割合を基に正規化することも可能である。よ
って、ステップS306における影響範囲の正規化に
は、以下の計算式を用いても良い。
【0084】影響範囲として、特定の変更cの非影響要
素集合ε(c)の各要素が存在するメソッドの数を取る
場合 ρR(c)=ρ(c)/Elms ・・・・・(5) 但し、Elmsはプログラム中の全要素数とする。
【0085】また、ステップS403における影響度の
正規化には以下の計算式を用いても良い。 ΔR(m)=(gv(m)+pv(m)+cv(m)+rv(m))/(GV+pv(m)+CV+rv(m)) ・・・・・(6) 但し、gv(m)をmの使用する外部変数の数、pv(m)をmの引
数の数、cv(m)をmの使用するクラス変数の数、rv(m)をm
の返り値の数、GVを全外部変数の数、CVを全クラス変数
の数とする。また、GV+pv(m)+CV+rv(m)=0の場合は、Δ
(m)=0とする。
【0086】上記、式(5)、式(6)によって正規化
された値を、式(4)に代入し、危険度を求めることも
可能である。
【0087】
【発明の効果】以上説明した通り、本発明により複数存
在する変更計画のそれぞれについて、その影響度や影響
範囲の広狭を定量的に測定し、それらの情報から危険度
を算出し、再構成を実験し、より安全な変更計画を選び
出す際の指針として用いることが出来る。
【図面の簡単な説明】
【図1】本発明の実施の形態に係る変更危険測定システ
ムの構成を表すブロック図である。
【図2】本発明の実施の形態に係る抽出手段の概略を示
すブロック図である。
【図3】本発明の実施の形態に係る影響範囲特定手段の
概略を示すブロック図である。
【図4】本発明の実施の形態に係る影響度判定手段の概
略を示すブロック図である。
【図5】本発明の実施の形態に係る危険度算出手段の概
略を示すブロック図である。
【図6】本発明の実施の形態に係る再構成手段の概略を
示すブロック図である。
【図7】本発明の実施の形態に係る変更危険測定方法の
全体の流れを示すフロー図である。
【図8】本発明の実施の形態に係る被影響要素を抽出す
るステップの動作の流れを示すフロー図である。
【図9】本発明の実施の形態に係る影響範囲を特定する
ステップの動作の流れを示すフロー図である。
【図10】本発明の実施の形態に係る影響度を判定する
ステップの動作の流れを示すフロー図である。
【図11】本発明の実施の形態に係る危険度を算出する
ステップの動作の流れを示すフロー図である。
【図12】本発明の実施の形態に係る再構成を実行する
ステップの動作の流れを示すフロー図である。
【図13】影響範囲におけるメソッド単位とクラス単位
の差異を説明するモデル図である。
【図14】影響範囲と影響度の組み合わせを説明するモ
デル図である。
【図15】影響範囲と影響度の組み合わせを説明するモ
デル図である。
【図16】影響度と影響範囲の2次元パラメータ表示例
である。
【図17】影響度と影響範囲の2次元パラメータ表示例
である。
【図18】本発明の実施の形態に係るプログラムの一例
である。
【図19】本発明の実施の形態に係るプログラムの変更
の一例である。
【図20】本発明の実施の形態に係るプログラムの変更
の一例である。
【符号の説明】
1 抽出手段 2 影響範囲特定手段 3 影響度判定手段 4 危険度算出手段 5 再構成手段 6 ソースコード記憶部 6a ソースコード 7 変更計画記憶部 7a 変更計画 8 被影響要素記憶部 8a 被影響要素情報 9 影響範囲記憶部 9a 影響範囲情報 10 影響度記憶部 10a 影響度情報 11 危険度記憶部 12 再構成記憶部 20 CPU 21 プログラム記憶部 22 データ記憶部 23 入力部 24 出力部

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 プログラム変更データにより影響を受け
    る既存プログラム内のプログラム構成要素を被影響要素
    として抽出する抽出手段と、 前記被影響要素を記憶する被影響要素記憶部と、 前記被影響要素から影響範囲を特定する影響範囲特定手
    段と、 前記影響範囲を記憶する影響範囲記憶部と、 前記被影響要素が前記既存プログラム全体に及ぼす影響
    度を判定する影響度判定手段と、 前記影響度を記憶する影響度記憶部と、 前記影響範囲と前記影響度とを用いて、前記既存プログ
    ラムの変更の危険度を算出する危険度算出手段とを有す
    ることを特徴とする変更危険度測定システム。
  2. 【請求項2】 前記危険度算出手段が、 前記影響度と前記影響範囲の数値若しくは正規値を用い
    て危険度を算出する危険度算出部と、 前記影響度と前記影響範囲とをパラメータとして2次元
    的に危険度を表示する危険度表示部とを有することを特
    徴とする請求項1記載の変更危険度測定システム。
  3. 【請求項3】 抽出手段を用いて、プログラム変更デー
    タにより影響を受ける既存プログラム内のプログラム構
    成要素を被影響要素として抽出するステップと、 前記被影響要素を被影響要素記憶部に記憶するステップ
    と、 影響範囲特定手段を用いて、前記被影響要素記憶部から
    被影響要素を取り出し、該被影響要素から影響範囲を特
    定するステップと、 前記影響範囲を影響範囲記憶部に記憶するステップと、 影響度判定手段を用いて、前記被影響要素記憶部から被
    影響要素を取り出し、該被影響要素が前記既存プログラ
    ム全体に及ぼす影響度を判定するステップと、 前記影響度を影響度記憶部に記憶するステップと、 危険度算出手段を用いて、前記影響範囲記憶部に記憶さ
    れた影響範囲と前記影響度記憶部に記憶された影響度と
    により、前記プログラム変更データによる前記既存プロ
    グラムの変更の危険度を算出するステップとを有するこ
    とを特徴とする変更危険度測定方法。
  4. 【請求項4】 プログラム変更による危険度を測定する
    変更危険度測定システムを駆動制御するためのプログラ
    ムであって、 プログラム変更データにより影響を受ける既存プログラ
    ム内のプログラム構成要素を被影響要素として抽出手段
    に抽出させる命令と、 前記被影響要素を被影響要素記憶部に記憶させる命令
    と、 前記被影響要素記憶部から被影響要素を取り出し、該被
    影響要素から影響範囲を影響範囲特定手段に特定させる
    命令と、 前記影響範囲を影響範囲記憶部に記憶させる命令と、前
    記被影響要素記憶部から被影響要素を取り出し、該被影
    響要素が前記既存プログラム全体に及ぼす影響度を影響
    度判定手段に判定させる命令と、 前記影響度判定手段が判定した影響度を影響度記憶部に
    て記憶する命令と、 前記影響範囲記憶部に記憶された影響範囲と前記影響度
    記憶部に記憶された影響度とを用いて、前記プログラム
    変更データによる前記既存プログラムの変更の危険度を
    危険度算出手段に算出させる命令とを有することを特徴
    とする変更危険度測定プログラム。
JP2001226730A 2001-07-26 2001-07-26 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム Expired - Fee Related JP3842592B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2001226730A JP3842592B2 (ja) 2001-07-26 2001-07-26 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム
US10/205,400 US6757639B2 (en) 2001-07-26 2002-07-26 Modification risk degree measurement system, modification risk degree measurement method and modification risk degree measurement program
US10/841,611 US7072796B2 (en) 2001-07-26 2004-05-10 Modification risk degree measurement system, modification risk degree measurement method and modification risk degree measurement program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001226730A JP3842592B2 (ja) 2001-07-26 2001-07-26 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム

Publications (2)

Publication Number Publication Date
JP2003044275A true JP2003044275A (ja) 2003-02-14
JP3842592B2 JP3842592B2 (ja) 2006-11-08

Family

ID=19059499

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001226730A Expired - Fee Related JP3842592B2 (ja) 2001-07-26 2001-07-26 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム

Country Status (2)

Country Link
US (2) US6757639B2 (ja)
JP (1) JP3842592B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008186244A (ja) * 2007-01-30 2008-08-14 Toshiba Corp プログラム開発装置、プログラム開発方法およびプログラム
JPWO2008038389A1 (ja) * 2006-09-28 2010-01-28 富士通株式会社 プログラム性能解析装置
JP2010257091A (ja) * 2009-04-23 2010-11-11 Fujitsu Ltd 危険度判定プログラム、危険度判定装置及び方法
WO2012036304A1 (ja) * 2010-09-16 2012-03-22 日本電気株式会社 動作検証支援装置、動作検証支援方法、及び動作検証支援プログラム
JP2015526820A (ja) * 2012-08-20 2015-09-10 マイクロソフト コーポレーション ソフトウェアビルドエラーの予測
CN106156633A (zh) * 2016-06-23 2016-11-23 扬州大学 面向软件修改的风险分析方法
US9607051B2 (en) 2012-03-16 2017-03-28 Fujitsu Limited Effect analysis method, and management device
WO2018150505A1 (ja) * 2017-02-16 2018-08-23 三菱電機株式会社 規模算出装置及び規模算出プログラム

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3842592B2 (ja) * 2001-07-26 2006-11-08 株式会社東芝 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム
JP2003186696A (ja) * 2001-12-13 2003-07-04 Nec Corp システムのリスク診断方法及びプログラム並びに装置
US7609945B2 (en) * 2004-08-17 2009-10-27 Lg Electronics Inc. Recording medium, and method and apparatus for reproducing data from the recording medium
DE102006024233B4 (de) * 2006-05-23 2016-11-10 Fujitsu Technology Solutions Intellectual Property Gmbh Verfahren und Vorrichtung für ein Fehlertoleranzmanagement einer Softwarekomponente
WO2008139856A1 (ja) * 2007-05-11 2008-11-20 Nec Corporation リスクモデル修正システム、リスクモデル修正方法およびリスクモデル修正用プログラム
US8635608B2 (en) * 2007-09-04 2014-01-21 Teradata Us, Inc. Software update system and method
US8255881B2 (en) * 2008-06-19 2012-08-28 Caterpillar Inc. System and method for calculating software certification risks
US8566787B2 (en) * 2008-09-15 2013-10-22 Infosys Limited System and method for improving modularity of large legacy software systems
JP5477382B2 (ja) 2009-05-29 2014-04-23 株式会社村田製作所 製品検査装置、製品検査方法及びコンピュータプログラム
WO2010137487A1 (ja) * 2009-05-29 2010-12-02 株式会社村田製作所 製品選別装置、製品選別方法及びコンピュータプログラム
US9110769B2 (en) * 2010-04-01 2015-08-18 Microsoft Technology Licensing, Llc Code-clone detection and analysis
US20150095892A1 (en) * 2013-09-27 2015-04-02 Linkedln Corporation Systems and methods for evaluating a change pertaining to a service or machine
US9852041B2 (en) 2013-09-27 2017-12-26 Microsoft Technology Licensing, Llc Systems and methods for categorizing exceptions and logs
JP2020113090A (ja) * 2019-01-15 2020-07-27 三菱電機株式会社 脆弱性影響評価システム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0311427A (ja) 1989-06-08 1991-01-18 Toshiba Corp 仕様分析方式
JPH06202905A (ja) 1992-06-17 1994-07-22 Nippon Telegr & Teleph Corp <Ntt> クリティカルスライス・プログラムデバッグシステム
JPH06175884A (ja) 1992-12-04 1994-06-24 Nippon Telegr & Teleph Corp <Ntt> プログラムエラー原因究明装置
JPH07134664A (ja) 1993-11-11 1995-05-23 Nippon Telegr & Teleph Corp <Ntt> プログラムバグ潜在域抽出方法
JPH0916392A (ja) 1995-06-27 1997-01-17 Mitsubishi Electric Corp ソフトウェア開発支援方式
JPH1124210A (ja) 1997-07-04 1999-01-29 Fuji Photo Film Co Ltd レンズ付きフイルムユニット
JPH11224210A (ja) 1998-02-05 1999-08-17 Nippon Steel Corp 凝集度計測装置及び凝集度計測方法
US6223143B1 (en) * 1998-08-31 2001-04-24 The United States Government As Represented By The Administrator Of The National Aeronautics And Space Administration Quantitative risk assessment system (QRAS)
US6219805B1 (en) * 1998-09-15 2001-04-17 Nortel Networks Limited Method and system for dynamic risk assessment of software systems
US6697762B1 (en) * 1998-11-16 2004-02-24 General Electric Company Apparatus and method for analyzing brittleness of a system
US6742000B1 (en) * 2000-05-03 2004-05-25 Honeywell International Inc. System and method for defining a maintenance program
WO2001090897A2 (en) * 2000-05-19 2001-11-29 Leung Wu Hon Francis Methods and apparatus for preventing software modifications from invalidating previously passed integration tests
US6456928B1 (en) * 2000-12-29 2002-09-24 Honeywell International Inc. Prognostics monitor for systems that are subject to failure
US6895383B2 (en) * 2001-03-29 2005-05-17 Accenture Sas Overall risk in a system
JP3842592B2 (ja) * 2001-07-26 2006-11-08 株式会社東芝 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム
US6820044B2 (en) * 2001-10-09 2004-11-16 University Of Maryland Method and apparatus for a common-cause failure module for probabilistic risk assessment tools
JP2003186696A (ja) * 2001-12-13 2003-07-04 Nec Corp システムのリスク診断方法及びプログラム並びに装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2008038389A1 (ja) * 2006-09-28 2010-01-28 富士通株式会社 プログラム性能解析装置
US8839210B2 (en) 2006-09-28 2014-09-16 Fujitsu Limited Program performance analysis apparatus
JP2008186244A (ja) * 2007-01-30 2008-08-14 Toshiba Corp プログラム開発装置、プログラム開発方法およびプログラム
JP2010257091A (ja) * 2009-04-23 2010-11-11 Fujitsu Ltd 危険度判定プログラム、危険度判定装置及び方法
WO2012036304A1 (ja) * 2010-09-16 2012-03-22 日本電気株式会社 動作検証支援装置、動作検証支援方法、及び動作検証支援プログラム
US9607051B2 (en) 2012-03-16 2017-03-28 Fujitsu Limited Effect analysis method, and management device
JP2015526820A (ja) * 2012-08-20 2015-09-10 マイクロソフト コーポレーション ソフトウェアビルドエラーの予測
CN106156633A (zh) * 2016-06-23 2016-11-23 扬州大学 面向软件修改的风险分析方法
WO2018150505A1 (ja) * 2017-02-16 2018-08-23 三菱電機株式会社 規模算出装置及び規模算出プログラム
GB2573417A (en) * 2017-02-16 2019-11-06 Mitsubishi Electric Corp Scale calculation device and scale calculation program
GB2573417B (en) * 2017-02-16 2021-11-24 Mitsubishi Electric Corp Scale calculation apparatus and scale calculation program
US11379224B2 (en) 2017-02-16 2022-07-05 Mitsubishi Electric Corporation Scale calculation apparatus and computer readable medium

Also Published As

Publication number Publication date
US20040210421A1 (en) 2004-10-21
US6757639B2 (en) 2004-06-29
JP3842592B2 (ja) 2006-11-08
US7072796B2 (en) 2006-07-04
US20030023406A1 (en) 2003-01-30

Similar Documents

Publication Publication Date Title
JP2003044275A (ja) 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム
US7996819B2 (en) Generating functional test scripts
JP7201078B2 (ja) データ引数を動的に識別し、ソースコードを計装するためのシステムと方法
US8966449B2 (en) Test case pattern matching
US8132156B2 (en) Methods and systems for testing tool with comparative testing
US6408430B2 (en) Interactive software testing system and method
US7975256B2 (en) Optimizing application performance through data mining
US9047399B2 (en) Generating visualization from running executable code
US20110314337A1 (en) Method and Apparatus for Locating Input-Model Faults Using Dynamic Tainting
US8265916B1 (en) Test environment for accumulating cumulative metric data
US20070044075A1 (en) Method for analysis of source code and display of corresponding output through a marking scheme
JP2015043198A (ja) 解析システム、解析方法および解析プログラム
Malloy et al. An empirical analysis of the transition from python 2 to python 3
CN101751281A (zh) 编译器生成系统和方法
US8145992B2 (en) Validation assisted document conversion design
Siqueira et al. Perprof-py: A python package for performance profile of mathematical optimization software
CN101960419A (zh) 基于应用程序构建操作系统镜像
Bhatti Automatic measurement of source code complexity
CN103049504A (zh) 基于源代码查询的半自动插桩方法
US20130111329A1 (en) Hinting system at user interface design time
JP2008176364A (ja) プログラム部品化支援装置
JP4783612B2 (ja) 拡張言語仕様指定方法、プログラム開発方法、プログラム及びコンピュータ読み取り可能な記憶媒体
US20230409296A1 (en) Providing metric data for patterns usable in a modeling environment
Mercer et al. Computing and visualizing the impact of change with Java PathFinder extensions
JP2007241432A (ja) ソフトウェア試験装置、ソフトウェア試験方法及びソフトウェア試験用プログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060606

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060705

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: 20060801

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060810

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090818

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100818

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees