<研 究ノー ト>
彦 ≠Bソフ トウエ アエ学 ツー ル ・
プラッ トフォーム Sapid
斉 藤 I は じおうに ― Sapidと `よ―― Sapidは ソフ トウエアエ学アプ リケー ションを実現す るためのツール ・プ ラ ッ トフォームである。Sapidは ,ソ フ トウエアを細粒度 (プログラムの最小単 位)で 解析 したデー タベース SDBを 作成す るツール と,SDBを 基に ソフ トウ エアエ学的な視点か らプ ログラムを分析す るツールライブラ リか らなる。 SDBは 対象 とす るプ ログラム を,特 定の ソフ トウエアモデルに基づ いて解 析 した情報 (クラス と関連)の デー タベー スである。対象 とす るプログラムの SDB情 報 とソフ トウエアモデルか ら,プ ログラム を分析す るCASEプ ログラ ム を作成す る。Sapidの 拡張ユーティ リティとして,PrOgram Slicing,部 分 評価,テ ス トベ ヽノド,最 適化処理 といったソフ トウエア解析 を実現す るための 支援 ツール SDA,SMUも 開発 されている。Sapidは 名古屋大学工学部阿草研究室 を中心に開発 されている。Sapidに 関
連す る ドキュ メン トや ソー スファイルは WWWの
ホー ムペー ジhttp://
WWW.SapidB org/で 入手可能である。
1.サ ンプル① 被 解析プログラムとSDB
被解析プログラム (表1)は 文字列
“
HelloWorld"を 出力す るプログラム
である。図 1は このプログラムをI‐
mOdelに 基づいて解析 した実体関連図であ
る。I‐modelは ,C言 語 ソー スプ ログラム を クラスの集合 と,そ の要素 間の関
連 の集合 としてモデル化 した もの であ る。 このプ ログラムの SDBに どの よ う
なオブ ジェ ク トが格 納 され て い るか を図 1(部 分 図)で 示 す。
1 被 解析 プ ログラム
int rnain(int argc,charホargv[1) ( char messagetl=“打夕〃θ予ケbγ′冴."; printf(“0/。s\n",Inessage); ) 図 1 被 解 析 プ ログラムの I―model 表 1 2 3 4 5 6 sOrt:DECLPARAMETER dcclarator sOrt:DECLどVARIBLE sortilLVARIABLE name arOv typc sorttDECLARAT10N `ypciCHAR
ソフ トウエアエ学ツール ・プラットフォームS a p i d 1 8 5 各 クラスや 関連 の定義 情報 は それ ぞれ一 つの ファイル として実現 され,そ れ らの集合 として S D B が 構 成 され る。 それ ぞれ の オブ ジェ ク トは識別番号, 名 前, 長 さ, 種 類 を属 性 として持 つ。 オブ ジェ ク ト間 の関係 に は( i ) 構成 オブ ジ ェ ク ト間の構成 関係,(1)参照 オブ ジェ ク トを含 む参照 関係 の 2つ が あ る。 クラス :プ ログラムの構 文要素 (例 プ ログラム,ブ ロ ック,演 算子) クラスの基本 的構造 id 識 別番 号 name 名 前 length 振 己さ s o r t 種 類 関連 :ク ラス間の関連
① 構 成関連 (pllブロックーブロック,ブ ロックー宣言,ブ ロックー式)
② 参 照関連 (例 定数一参照,識 別子一参照)
2 . サ ンプル② A R ( A c c e s s R o u t i n e ) と 解析プログラム サ ンプルプログラム② ( 表8 ) は 被解析プログラムの中で出現す る関数の名 前 を抽 出 し, 出 力す るプ ログラムである。 このプ ログラムは最初 に被解析プロ グラムの解析情報 ( S D B ) を メモ リ上に構築す る。 そのモデルの v i e w に ア ク セス し, 各 種 の処理 を行 うためにア クセスルーチンを用いる。ア クセスルーチ ンは I ―m O d e l で解析 した情報 ( クラス ・関連) を 取得す るための関数群 である。 初期化 プ ロセスで, S D B 情 報 を利用す るため に被解析 プ ログラムの I ‐m o d e l オブジェ ク トをs p d T a r g e t 関数 で生成す る。 ブ ロ ッ クや 宣 言 とい っ た S D B の オ ブ ジ ェ ク ト・関 係 X X X に 対 して s p d G e t X X X i n i t , s p d G e t X X X , s p d G e t A X X X と い った形のア クセス関数 が︱ ︱ ︲ 用 意 されて る。s p d G e t X X X i n i t は 検 索条件 を設定 し, c u r s o r を 返す。この c u r ‐ s o r を 引数 として spdGetXXXを 繰 り返 し呼 び出 して,条 件 を満 たす もの (オ ブ ジェ ク ト,属 性値 な ど)を 求 め る。条件 を満 たす もの を直接 求 め るため に s p d G e t A X X X 関 数 を用 い る。 ア クセ スルー チ ン ・サ ンプ ルプ ログラムの コー ドの解 説 関数 定義部 を抽 出す るため に, I ‐m o d e l に 基づ いてプ ログラム ー> フ ァイル ー >宣 言 一>(関 数の)宣 言子 一>名 前 とプ ログラムの解析木 をた どる。対応 す る関数 宣 言 オブ ジェ ク トが見 つか った とき, そ の名 前, プ ロ トタイプ宣言 と い った情報 を出力す る。
① 関 連オブジェクトの取得 (1.ル ープの利用)
オブ ジェ ク トプ ロ グ ラム ( p r o g 」d ) と 関連 プ ロ グ ラム ーフ ァイル ( p r o g _ f i l e ) で関 連 付 け ら れ て い る オ ブ ジ ェ ク ト フ ァ イ ル ( f i l e _ i d ) を関 数 s p d G e t X X X i n i t , s p d G e t X X X を 用 いて求 め る。 関連 付 け られ た オ ブ ジ ェ クトを求めるときは, X X X は R e 1 0 b j ( 関
連付け) と いう名前をとり, 関 数名
はs p d G e t R e 1 0 b i i n i t , s p d G e t R e 1 0 b j と
なる。
f i l e _ c s r = s p d G e t R e 1 0 b i l n i t ( p r O g _ i d , " p r o g _ f l l e " , " a n y " ) ;while((file」
d=spdGetRe10bi(file_csr))!=‐1(・…
② 関 連オブジェクトの取得 (2.直 接求める)
オ ブ ジェ ク ト宣 言 (decl_occ)と関連 宣 言 ―宣 言子 (decl decl)で関連付 け ら れ て い る オ ブ ジ ェ ク ト宣 言 子 (decl_id)を関 数 spdGetAXXX(spdGetARe‐ 10bi)を 用 い求 め る。
ソフ トウエアエ学 ツール ・プ ラッ トフォーム S a p i d 1 8 7
③ 関 連の取得
オブジェク ト宣言子 (decl」
d)に ついての関連宣言一定数 (Identゴ
el)を,
関連 を取得す る関数 spdGetARelを 用いて求め る。
一般的に関数定義の宣言
子は 1つ だけである。
identゴ el=spdgetARel(decr_id,"decl_ident'1''any"); 3 . S a p i d プ ログ ラムの コンパ イル S a p i d プログラムの コンパ イル に は S a p i d 組み込 み の M a k e f i l e システム を 用 い る。 この M a k e f i l e の構 文 は一 般 の M a k e f i l e の構 文 と同 じで あ る。 表 2 はサ ンプ ルプ ロ グラム② をコンパ イルす るための M a k e f l l e であ る。表 2 S D B を 生成するための M a k e f i l e
Target=rnain SRCS=main.c OBJS=rllain.o $(TARGET):$(OB」 S) S(CC)―o$(TARGET)$(OBJS) maln.o:maln.c maln.h clean i rm―f$(TARGET)中 .。 I I ソ フ トウエアエ学 と C A S E ツ ール プラ ッ トフォーム S a p i d ソフ トウエ アエ学 の研 究 にお いて, ソフ トウエアの生産性 向上 を 目的 として 構 造化 プ ロ グ ラ ミン グ, オ ブ ジ ェ ク ト指 向 プ ロ グ ラ ミン グ とい っ た方 法 論 や P A D , O M T な どの プ ロ グ ラム チ ャー トが提 案 され て い る。 また, これ らの 概 念 を応 用 して, ソ フ トウ エ アエ 学 ア プ リケー シ ョン ・C A S E ( C o m p u t e r A i d e d S o f t w a r e E n g i n e e r i n g ) が多 く開発 され て い る。S a p i d はヨン ピュー タで ソフ トウエ アエ 学 ツー ル を実現す るため のプ ラ ッ トフォー ムであ り,CASE プ ログラム を作成す るための ライブ ラ リと道具群 か らな る。 Sapidは ソフ トウエ ア を細粒 度 で解析 したデー タベ ー ス SDBを 作 成す るツ ー ル と,そ のデー タベー ス SDBを もとに ソフ トウエアエ学的 な視 点か らソフ トウエ ア を分 析 す るため の ツー ル を用 意す る。SDBは ,対 象 とす るプ ログ ラ ム をソフ トウエ アモデル I‐modelに 基づ き構文木 に変換 して得 られ た情報 のデ ー タベー スである。 1。Sapidの ソフ トウエア モデル Sapidは ソフ トウエア を細粒 度 (プログラムの最小 単位 )で 扱 う。一般 的 に プ ログラム構 造 を解析 す るため に,構 文規則 に基づ いて ソー スプ ログラム を木 構 造 モデル に変換 す る。 その抽象度 に応 じてい くつか のモデル (解析 木,構 文 木)が 存在 す る。 Sapidで は C言 語 の ソー スプ ロ グ ラム を OMTの 記 法 を用 い た オ ブ ジェ ク ト図 で構 成 した木構 造 モデル であ る I―mOdelを 用 い る。I‐mOdelに マ クロ定義 や 呼 び 出 しの情 報 を加 え た C‐modelや Javaプ ロ グ ラム を解 析 した J‐model
も利 用 で きる。 2.Sapidの 基本 的 ツー ル SDBと AR3 Sapidで は ソフ トウエア を解析 す るため に,対 象 プ ログラム を解析 して ソフ トウエ ア ・デー タベ ー ス SDBを 作 成 す る。 次 にア クセ スルー チ ン AR3を 用 いて SDBを 操作す るソフ トウエア解析 アプ リケー シ ョンを作成す る。SDBは ソフ トウエ ア を解 析 す るため の基本 的 なデー タベ ー ス で あ り,AR3は SDB へ のア クセス を制御 す る関数群 であ る。 2.1 解 析 デー タベ ー ス SDBの 利用 Sapidは 対 象 とす るプ ログラム を解析 し SDBを 生成 す る。SDBは プ ログラ ム を I‐mOdelに よ り解析 した情報 のデー タベー スであ る。被解析 プ ログラムに
ソフ トウエアエ学ツール ・プラットフォーム S a p i d 1 8 9 図 2 1 ‐m o d e l 実 体 ―関連 モ デ ル
対 して I‐modelに 基づ く解析 を行 い,SDBと マ クロ定義 ・展開情報 PIDBを 作成す る。
SDBを 生成す るための Sapid組 み込み命令が用意 されている。SDBの 生成 手順 は①PIDBの 生成,② ISDB(SDBI‐model)の生成か らなる (図3)。 PIDB はソー スプ ログラムか ら生成 されたマ クロ定義情報 とマ クロ展開情報のファイ ルである。 この情報が ソー スファイルに書 き加 え られ,拡 張子 口iを持つ ファ イルが生成 され る (例main.i表3)。 ソースファイル ごとに ISDBを 生成す る。 Sapid命令 は Makefileによる一括処理が可能である。 SDBを UNIXの コマ ン ドラインで生成す る例 を示す。UNIXの プ ロンプ ト は"%"と す る。文字列“HelloWorldルを出力す るプログラム 1(main.c)か
ら S D B を 生成す る。 ソー スファイル main.cは前処理 (pidb命令)さ れマ ク ロ情報の定義 ファイル (拡張子は 口1 ) が 生成 され る。次 に sdbin4命令 に よ り m a i n . i からSDBが 生成 され る。以上の処理 を一括 して Imakeifileで記述す る こ ともで きる。
表 3 rnaln.1
int rnain(int argc,charttargv[1) (
char messaget]=“HellOwヽVOrld.ル;
printf(“%s¥n",message); )
図 3 S D B の 生 成 手順
表 4 処 理 結 果 %pidb main.c rnain.i レ6 Sdbin4 rnainti
2 . 2 ア クセ ス解 析 ルー チ ン A R 3 の 利 用
A R 3 は ター ゲ ッ トソ フ トウエ ア を S D B デ ー タ に 基 づ き解 析 す る た め の ラ イ ブ ラ リ ( アクセ ス ルー チ ン) で あ り, タ ー ゲ ッ トソフ トウエ ア を解 析 す るプ
ソフ トウエアエ学ツール ・プラットフォーム S a p i d 1 9 1 ロ グ ラム を記 述 で き る。 サ ンプルプ ログラム② (表8)を Makefileでコンパ イルす る例 を示す。make の実行の前に mkSapid命 令 を実行 して Sapidプ ログラムの コンパ イル環境, す なわ ち S a p i d の M a k e f i k e を 構築す る。 ソフ トウエア解析 を実現す るため に被解析プログラムの実行形式プ ログラムを引数 として解析プ ログラムを実行 す る。 表 5 プ ログラムの コンパ イル と実行 %mkSapld― a %make %∼ /work/tutoria1/ar_sample/funcdef main FILE:mkdata.c OFFSET:71 FILE:main.c OFFSET:1015 FILE:main.c OFFSET:754 FILE i main.c OFFSET:306
I H S a p i d の 拡 張 ツール SDA S a p i d は 対 象 とす るプ ログ ラム を解 析 した情報 のデー タベ ー ス SDBか らプ ロ グ ラム を解 析 す るアプ リケー シ ョンの作 成 を支援 す るツー ル SDA,SMU を用 意 して い る。 S D A は C A S E ッ ー ル を見通 し良 く実現す るための API関 数群 である。SDA は ソー スプ ログ ラム 中の制御や デー タの依 存関係 を分析 し,グ ラフ化 す る。 I ‐m o d e l に 抽象度 が高 い ビュー を設定 す るこ とが で き,部 分 評価,最 適化処 理 な どの C A S E ツ ー ル を容易 に実現 で きる。
S M U は S D B の アクセスルーチンを簡単に利用できるように作成 されたユ
ーティリティである。
I I I I I I I I I I I I I I I I I I I I 192 彦 根論叢 第 310号 1. SDA S D A ( S a p i d D e p e n d e n c y A n a l y z e r ) は ソー ス プ ロ グ ラム の制 御 依 存 とデ ー タの依 存 の各 関係 を基 に ソフ トウエ ア を解析 す るアプ リケー シ ョン を実 現す る ため の ツー ル で あ る。 S D A は , ソー スプ ログラムの制御依存関係 とデー タの依存関係 を扱 う。指 定 した一つの関数 を解析 し, 制 御の依存関係 を表す グラフ C F G ( C o n t r o l F l o w G r a p h ) と デー タの依存関係 を現わす グラフ D F G ( D a t a F l o w g r a p h ) を 生 成す る( 図4 ) 。S D A の 拡張であるS D A 2 は 複数の関数の関係 を解析 し, R D G
(Reaching Definition Graph)とPDG(Program Dependence Graph)を 十年 成す る。 表 6 サ ンプルプ ログラム③ ( 部分) 2 int a,cond; 3 4 a = 1 1 1 1 1 ; 5 ( 6 int a; 7 a = 2 2 2 2 ; 8 p r i n t f ( “ 1 : a = % d \n " , a ) ; 9 } 1 0 p r i n t f ( “2 : a = % d \n " , a ) ; 1l if(cond)( 1 2 p r i n t f ( “3 : a = % d \ n ' ' , a ) ; 13 a==333; 1 4 ) 1 5 e l s e ( 16 a==44; 1 7 } 1 8 p r i n t f ( “4 : a = % d \ n " , a ) ; 1 9 ) 制御依存関係 は制御流れグラフ ( C F G i C o n t r o l F l o w G r a p h ) で表 され る。 プ ログラムを構成す るステー トメン トを節点 とし, 2 節 点間の制御依存関係 を
ソフ トウエアエ学 ツール ・プラッ トフォーム S a p i d 1 9 3
図 4 サ ンプルプログラム③のC F G と D F G
l i CFGttatementnode ◆ C F G i f n o d e ( ) C G F a n t t h げn O d eO DК的
碇
その 間 の辺 とす る。CFGは 一 つ の ステー トメン トを節点 とした有 向 グラフで あ る。 グ ラフ図 5の if,switch,for,while,doの 制 御 文 はす べ て if節点 を 用 いて表 現 され る。CFGの 辺 の流 れ をた どるこ とで,プ ロ グラムの実行 結 果 をシ ミュ レー トす るこ とが で きる。デー タ依 存関係 は,デ ー タ流れ グラフ (DFG:Data Flow Graph)で 表 さ
れ,変 数 の 出現 を節 点 とし,デ ー タ依 存関係 を辺 とす る。DFGは 変数 の 出現 を節点 とした有 向 グラフであ る。 デー タ依 存関係 の定義 はその 目的 に よって さ ま ざまに変 わ るが,定 義 一使 用 の関係,使 用一定義の関係,代 入の関係 といっ た関係 は,SDAの 関数 と して あ らか じめ提 供 して い る。CFGの 節 点 と DFG の節点の対応 を取 る関数や,到 達 可能性 の判定 な どグラフに対す る一般的な操
〇
︱
L
O
∩
/ r i l l lト ー ー ー ー ー ー ー ー ー 194 彦 根論叢 第 310号 作 も用 意 され て い る。 2.SDAプ ログラ ミング S D A プ ロ グラムは, 初 期化 のプ ロセ スで s p d T a r g e t 関数 で対 象 とす るプ ロ グ ラムの モデル を構築 す る。 f i l e _ o 瑚e d = S p d T a r g e t ( ' ' 1 ‐f l l e ' ' , f i l e n a m e ) ) = = S A P I D N O N I D C F G 処 理 の初期化 は s d a M a k e C F G 関 数 を用 い る。 引数 として C F G を 生成 し た い 関 数 の オ ブ ジ ェ ク トI D を と る。 こ の オ ブ ジ ェ ク トIDば SDB(I‐ m o d e l ) 情 報 か ら取得 す る。 c f g = s d a M I a k e C F G ( o b j i d ) D F G 処 理 の初期化 プ ロセスでは sdaMakeCFGの 戻 り値 を引数 として初期 化関数 を呼ぶ。定義 一使用の関係の DFGの 生成には sdaMakeDefUseDFG関 数 を用 いる。 dfg‐sdaMakeDefUseDFG(cfg) C F G , D F G の 接点,辺 の集合 を扱いやす くす るために SdaCursor型を定義 す る。求め たい集合 の初期化関数 を呼 び Sdacursor型の変数 csrに戻 り値 を 代入す る。変数 c s r に s d a G e t X X X 関 数 (XXXは 各種 の集合)を 呼 び,要 素 を一つずつ取得す る。 3 . S D A プ ログラムの コンパ イル と実行 S D A プ ログラムの コンパ イルは,SDBと 同 じくImakefileを用 いて一括処 理 を行 う。 ファイル Imakefileにはインクルー ドやマ クロの定義,ラ イブラ リ
ソフ トウエアエ学 ツール ・プ ラッ トフォーム S a p i d 1 9 5 1 i b S a p i d A R 3 . a , l i b S a p i d P I D B 3 . a , l i b S a p i d P I D B , a , l i b S a p i d S D A . a のリン ク情 報 を記 述 す る。 募書7 11nakefile IInakefile C C = g c c #include“Sapid.def" TARGETS=$(TARGET l) TARGET l=funcdef SRCS‐ funcdef.c ALL__SRCS=$(HEADERS)$(SRCS)$(ELISP_SRCS) MAKEFILES=Imakefile COMMON_OBJS= OBJS l=funcdef.o
LOCALpEFINES=‐ I$(INCLUDE_PATH)‐ DSAPID=AR3
EXT_LIBS=‐ ISapidAR 3-ISapidPIDB 3‐ ISapidPIDB
LOCAL_LDFLAGS=‐ Ls(LIBRARY_PATH)
/本
ネTarget entries. Ⅲ/
all::$(TARGETS)
NormalProgramTarget(S(TARGET l),S(OBJS l),S(COMMON_OBJS),Null,S(EXT_LIBS),Null) InstallProgram($(TARGET l),$(SAPID_BINDIR)) LintTarget() DependTarget() 3.1.4 Xウ イ ン ドウ上 の SDAツ ー ル XSDA X S D A は X ウ イ ン ドウ上 で利 用可能 な SDAブ ラウず であ る。CFGの 表示 や指定 したステー トメン トに存在 す る変数 の依 存関係 の表示 を行 うこ とが で き る。X S D A の 中で表示 対 象 とす る関数 を指定 す る。関数名 は フ ァイル F l l e n a m e の 中に記述 され てい る関数 の 中か ら選択す る。操作 方法 につ いて説明す る。 ソー ス コー ド,ま たは CFGの 節 点上 で左 ボ タン を ク リック (Xウ イン ドウ 。マ ウス)す るこ とに よ り,依 存解析対象 とな るステー トメン トを選択す る。
︱ ︲ 選 択 され た ス テー トメ ン トは ソー ス コー ド上 で下 線 が 引か れ,CFGの グ ラフ 上 で枠 が緑 に色づ け され る。 ス テー トメン トを選 択 し,DFGの 開始 節 点 の変 数 が そ こに含 まれ る と き, ソー ス コー ドでその変数 が赤 に,そ の辺 の終 了節″点の変数 が青 に色づ け され る。 図 5 XSDA 2の 実行 画面 I V お わ りに 一 S a p i d の利用環境 ― S a p i d は C 言 語, J A V A 言 語 を対 象 言語 と して開発 され て い る。他 言語 ヘ の 対 応 も進 ん で い る。S a p i d は u n i x ( S U N ‐O S , S G I ‐I R I X , l y n u x ) で 利 用 可 能 で あ る。 ウイ ン ドウ システム上 の アプ リケー シ ョン を利用 す る ときは X ウイン ドウシステム, T c 1 / T k が 必須 であ る。 現在,本 大学 では Sapidを用 いて ソフ トウェアの仕様 の 自動生成 システム の開発等 を行 っている。本研究は平成 8年 度学内科学研究プロジェク トの助成 を受けている。本論文 は名古屋大学阿草研究室 山本氏の草稿, 各 種 の図表か ら 多 くのアイデア を負 っている。 また同氏か ら貴重 なア ドバ イスを得 ている。 S a p i d に関連す る ドキュメン トや ソー スファイルは WWWの ホームペー ジ
ソフ トウエアエ学 ツール ・プ ラッ トフォーム S a p i d 1 9 7 で 公 開 さ れ て い る。 参 考 文 献 (1)山本晋一郎,阿 草清滋 (1995)「細粒 度 リポジ トリに基づ いたツー ルプ ラッ トフォーム と その応用」情報処理学会論文誌 Vol.36 No。10 (〕木野他 (1996)「プログラム動作理解 のための抽象実行系」日本 ソフ トウエア科学会 FOSE) 9 6
表 8 解 析サンプルプログラム②
l #include〈stdio.h〉 2 #include〈Sapid/Sapid.h〉 3 #includeくSapid/declarationth〉 45 intlnain(int argc,char ttargv□) 6 (
7 SpdOcc decl_occ; 8 SpdRelident_rel;
9 SpdCursor ttfile_csr,・ decl_csr; 10 charや prognamett NULL;
1l int flle_id,prog」 d,decr_id,rel_id; 12 13 /キ initialize*/ 14 progname=spdMalloc(strlen(ar邸 ′[1])); 15 strcpy(progname,argv[1]); 16 17 if((prog_id=spdTarget(“ c―prOgram'',progname))==‐ 1)( 18 spdErrorExit(``prOgram\ ル%s\ルnOt fOund.'',progname), 19 )
20
21 /Ⅲ prograrn一 ―〉file準/
22 file_csr=spdGetRe10bjlnit(prOg_id,“ prog_file'',“anyル); 23 while((file_id=spdGetRe10bj(flle_cSr))!=-1)(
24
25 /卒 file 一〉declaration Ⅲ/
27 while((decl_Occ=spdGetlncludedOcc(decl_csr)).relatiOnld i=‐ 1)( 28 29 /ホ decralation is funcdef準/ 30 1f(spdGetAttrVallnt(decl_occ.objeCtld,“sort'')==DECL_FUNCDEF)( 31 /中deCralationく一一〉declaratior中/ 3 2 i f ( ( d e C r _ i d ‐ s p d G e t A R e 1 0 b j ( d e c l _ O C C . O b j e C t l d , 33 “ decl_decl'',``any''))1=_1){ 34 /Ⅲ declaratorく一一〉identifier中/ 3 5 i d e n t _ r e l = s p d G e t A R e l ( d e c r _ i d , 36 “ decl_ident",“any");
37 printf(“ FUNCT10N:%‐ 10 S FILE:%-14s OFFSET:%-6d\ 、n",
38 spdGetName(ident_rel.objectld); 39 spdGetName(deCl_Occ.fileld); 40 spdGetOffset(ident_rel.relationld); 41 ) 42 ) 43 }
ソフ トウエアエ学 ツール ・プ ラッ トフォーム Sapid 199
Software口 EngineeringoTool Platfor】
m Sapid
Kunihiko Saito
ln this paper,、ve present Sapid(Software Engineering′ rool Plat_ form)and show how to use ite Sapid is the Platform for implement‐ ing the Soft、vare Engineering Tool,、 vhich has been developed by us (the staffs of Agusa Laboratory in Departrnent of Engineering at Nagoya University)have developed.Sapid consists of t、 vo element. The former is the database、 vhich has the parsing data of target software by the smallest unit of program.The latter is tool library 、vhich analyzes the soft、vare fron■the point of Soft、vare Engineer― ing.
SDB is the database having the parsing information of target programs based on the speciied Soft、 vare ttlodel.By using the SDB and the specified Software帥 質odel,it is possible to create the CASE program which iFnplements Program Slicing, Local Evaluation,
Test Bed and the Optirnization. Document of Sapid are sited in Homepage http://www.sapid.org/