• 検索結果がありません。

CRUDマトリクスを用いたソフトウェア設計影響分析手法

N/A
N/A
Protected

Academic year: 2021

シェア "CRUDマトリクスを用いたソフトウェア設計影響分析手法"

Copied!
2
0
0

読み込み中.... (全文を見る)

全文

(1)情報処理学会第 73 回全国大会. 2B-1. CRUD マトリクスを用いたソフトウェア設計影響分析手法 加藤 正恭†. 小川 秀人†. †. 株式会社日立製作所 中央研究所. 1.. はじめに ソフトウェア派生開発においては,新機能の 追加が既存機能の動作に悪影響を与えないよう, 設計時にどこにどのような影響が及ぶかを分析 しておかなければならない。 性能要求の高い組込みソフトウェア開発では, 処理速度を向上する実装上の工夫としてあえて グローバル変数を用いて開発することがある。 このような製品では,グローバル変数を介した 処理間の連係動作が見えにくくなる。よって, ソフトウェアを変更した場合の影響が特定しに くいという課題がある。 従来は,影響が波及しそうな機能に目安をつ けて絞込み,人手で仕様書やソースコードを調 査して影響を分析していた。しかし,大規模な ソフトウェアの場合は,人手では限界がある。 本研究では,ソースコードから関数と変数の 依存関係に関連する情報を自動的に抽出して, CRUD マトリクス[1]として可視化する手法を開発 した。本手法により,グローバル変数を介した 相互作用が多いソフトウェアにおいても,効率 的に影響分析ができるようになった。. 従来,CRUD マトリクスは業務システムの開発 でデータ設計分析に用いられてきた。 本研究では,機能を関数に,データを変数に 置き換えることによって,関数による変数アク セス仕様を表形式で可視化し,関数と変数の相 互作用を分析する手法について検討した。 2.2. CRUD マトリクスによる設計影響分析 CRUD マトリクスによる設計影響分析プロセス (図 2)について述べる。まず,派生開発のベース となる既存ソースコードから CRUD マトリクスを 生成(①)する。次に,機能の追加・変更に関す る情報をもとに CRUD マトリクスを修正(②)する。 そのあと,CRUD マトリクスから設計リスクを抽 出し,適宜設計を見直す(③)。これらの作業を 設 計 リ スク が なく な るま で 繰 り返 し ,機 能追 加・変更の影響を洗い出す。抽出可能な設計リ スクには,例えば「従来は特定の関数でしか更 新できなかった変数が,今回追加した関数でも 更新可能になったので,従来の更新関数が誤動 作しないか」などがある。 既存開発部分の CRUDマトリクス. 2. CRUD マトリクスによる設計影響分析 2.1. CRUD マトリクス CRUD マトリクスとは,機能とデータを2軸に もつマトリクスであり,機能によるデータアク セス仕様を可視化したもの(図 1)である。 CRUDマトリクス デ ー タ 1 機能A. デ ー タ 2. デ ー タ 3. U C. 機能B. RU U. 機能C. U D R. 図 1. 変 数 1 関数A U. 変 変 数 数 2 3. 関数B. RU U. ② 修正. C. "機能Bがデータ3を更新する" ことをあらわす. .c.c. CRUD マトリクス. 図 2. RU. R U. 関数C U D R. ① 生成 既存開発部分 ソースコード. 変 変 変 変 変 数 数 数 数 数 1 2 3 4 5 関数A U C 関数B. 関数C U D R. C:作成(Create) R:参照(Read) U:更新(Update) D:削除(Delete). Software Impact Analysis Method Using CRUD Matrix Tadahisa Kato†, Hideto Ogawa† † Central Research Laboratory, Hitachi, Ltd.. 機能追加・変更後の CRUDマトリクス. 関数D U. R C. 関数E U. D. 機能追加・変更 設計情報. .c.c. ③ 設計 見直し 整合性取れるまで ②~③繰返し. CRUD マトリクスによる影響分析プロセス. また,実装完了後に改めてソースコードから CRUD マトリクスを生成し,設計時のものと比較 することで,設計どおり実装されたかどうかの 確認もできる。. 1-249. Copyright 2011 Information Processing Society of Japan. All Rights Reserved..

(2) 情報処理学会第 73 回全国大会. 3.. CRUD マトリクスの生成と拡張 ここでは,既存のソースコードから CRUD マト リクスを生成する方法,および,生成した CRUD マトリクスを実用的サイズに縮小する方法につ いて述べる。 3.1. CRUD マトリクスの生成 まず,既存ソースコードの静的解析を行い, 関数リスト,変数リスト,および変数参照情報 (どの関数がどの変数を参照または更新するか) を抽出する。抽出したデータを表形式で可視化 すると CRUD マトリクスになる。関数による変数 の参照を R,更新を U として記す。また,リスト など可変個の要素をとるデータ構造では,リス トへの要素の追加を,リスト自身の更新(U)およ び追加する要素の作成(C)として記す。 リストからの要素の削除も同様に U,D と記す。 データベース. .c.c .c. ①関数リスト. .c.c .h. 関数A 関数B 関数C. 静的 解析. ②変数リスト. .c. .c makefile. 変数1 変数2 変数3. 変数1 変数2 変数2 変数3 変数1 変数3. 絞込み前. 関数A R R 関数B. W R W W W R. 表形式で 可視化. 関数A U C 関数B. 変 変 変 変 変 数 数 数 数 数 1 2 3 4 5. 変数依存関係 構造体 変数1 変数4. メンバ 変数2. 関数A U. 変数3. 関数B. 変数5. 関数C U. R. 関数D. IF関数. U. 関数D. その他関数 関数B 関数C 関数E. 図 4. R. 変数 抽象化. R U. 関数E. 関数依存関係. 関数A. U U. R R. U R UR UR U. U. U. 関数 抽象化. 関数 抽象化. 関数A U R R R U 関数D. 変 変 数 数 1 4. U. U. URUR 変数 抽象化. U U. CRUD マトリクスの抽象化. 3.3. CRUD マトリクスの絞込み CRUD マトリクスは,分析に不要な関数や変数 を除外することでサイズを縮小できる。あらか じめ影響分析の基点となる関数または変数を指 定し,それらに変数アクセス上関連のある関数 および変数のみを抽出して CRUD マトリクスを生 成する。. 変 変 数 数 3 5. U U ①. R. 関数B R U 関数D U R. 関数D 関数E. R ③. U U. R. 初期指定① 基点関数 関数B. 範囲拡大② 基点関数 関数B. 範囲拡大③ 基点関数 関数B 関数D. 完了 基点関数 関数B 関数D. 基点変数. 基点変数 変数3 変数5. 基点変数 変数3 変数5. 基点変数 関数3 関数5. 図 5. 3.2. CRUD マトリクスの抽象化 CRUD マトリクスは,行や列を統合することで サイズを縮小できる。関数軸方向は,呼び出し 元関数に呼び出される関数の CRUD 情報を統合す る。また,変数軸方向は,構造体にそのメンバ の CRUD 情報を統合する。これらの処理は静的解 析結果を用いれば自動化できる。. 関数B. 絞込み後. 関数C U. 関数C U D R. CRUD マトリクスの生成. 変 変 変 変 変 数 数 数 数 数 1 2 3 4 5 関数A R R. U. RU U. ③. 図 3. R. 関数D. 変 変 変 数 数 数 1 2 3. ①. U. 関数C U 関数E. ②. 絞込み中. 変 変 変 変 変 数 数 数 数 数 1 2 3 4 5. CRUDマトリクス ②. ③変数参照情報 関数A 関数B 関数B 関数B 関数C 関数C. 図 5の例で説明する。予め基点関数に関数Bを 指定したとする。まず,基点関数(関数B)がア クセスする変数(変数3,変数5)を基点変数に 追加する。次に,追加した変数にアクセスする 関数のうち基点関数に含まれないもの(関数D) を追加する。これらを関数と変数が追加されな くなるまで繰り返す。得られた基点関数と基点 変数に絞って CRUD マトリクスを生成すれば,予 め指定した関数や変数に関連する範囲に限定し た CRUD マトリクスを生成できる。. CRUD マトリクスの絞込み. 4.. 評価 本手法を 100 万行規模のソフトウェア開発の 影響分析に適用し,工数削減効果を評価した。 従来も CRUD マトリクスによる影響分析を実施し ていたが,手作業中心のため,機能あたり1ヶ 月の準備工数を要していた。本手法を適用し作 業の一部を自動化することで,影響分析の準備 工数を 3 時間(従来比 1/50)まで削減した。 5.. 結論 本研究では CRUD マトリクスによるソフトウェ アの設計影響分析手法を開発した。ソースコー ドから CRUD マトリクスを生成することで影響分 析を効率化した。また,CRUD マトリクスの抽象 化や絞込みにより,CRUD マトリクスを実用的な サイズに纏められるようにした。一方,情報源 にソースコードを用いたため,CRUD マトリクス 上の語句が実装レベルの表現になり分かりにく くなった。より平易な表現への置き換え方法に ついては今後検討する。 参考文献 [1] H.Kilov, oriented. 1-250. "From semantic to data modeling",. International Conference on Integration, 1990. 385 - 393.. object-. First System. Copyright 2011 Information Processing Society of Japan. All Rights Reserved..

(3)

参照

関連したドキュメント

前章 / 節からの流れで、計算可能な関数のもつ性質を抽象的に捉えることから始めよう。話を 単純にするために、以下では次のような型のプログラム を考える。 は部分関数 (

テューリングは、数学者が紙と鉛筆を用いて計算を行う過程を極限まで抽象化することに よりテューリング機械の定義に到達した。

本装置は OS のブート方法として、Secure Boot をサポートしています。 Secure Boot とは、UEFI Boot

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

Bemmann, Die Umstimmung des Tatentschlossenen zu einer schwereren oder leichteren Begehungsweise, Festschrift für Gallas(((((),

本手順書は複数拠点をアグレッシブモードの IPsec-VPN を用いて FortiGate を VPN

備考 1.「処方」欄には、薬名、分量、用法及び用量を記載すること。

2 解析手法 2.1 解析手法の概要 本研究で用いる個別要素法は計算負担が大きく,山