トレーサビリティとインパクト分析 2011 年 7 月 13 日 海谷治彦 1

Similar documents
Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

ToDo: 今回のタイトル

はじめに Doxygen イントロダクション Doxygen とは? Doxygen の主な特徴 数値モデル開発における Doxygen の利用 dcmodel におけるドキュメンテーション方法 Doxygen と RDoc の比較 シンタックス生成されるドキュメント IGModel における Do

2 概要 市場で不具合が発生にした時 修正箇所は正常に動作するようにしたけど将来のことを考えるとメンテナンス性を向上させたいと考えた リファクタリングを実施して改善しようと考えた レガシーコードなのでどこから手をつけて良いものかわからない メトリクスを使ってリファクタリング対象を自動抽出する仕組みを

PowerPoint プレゼンテーション

Microsoft Word - 【CTG0000-D】ソフトウェア開発技法_ティーチングガイド.doc

Microsoft PowerPoint - 計算機言語 第7回.ppt

メソッドのまとめ

Source Insight

第 3 回 TERAS 成果報告会 TERAS V3 紹介と今後の展開 Tool Environment for Reliable and Accountable Software 一般社団法人 TERAS 理事開発委員長渡辺政彦 2014 年 3 月 12 日

5-3- 基統合開発環境に関する知識 1 独立行政法人情報処理推進機構

CodeRecorderでカバレッジ

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

5-3- 応統合開発環境に関する知識 1 独立行政法人情報処理推進機構

Fortran 勉強会 第 5 回 辻野智紀

クラス図とシーケンス図の整合性確保 マニュアル

実行形式の作成と構成管理 2012 年 7 月 8 日 海谷治彦 1

Program Design (プログラム設計)

組込みシステムにおける UMLモデルカタログの実践研究

Microsoft Word - tutorial8-10.docx

デジタル表現論・第4回

スライド 1

プログラミング入門1

2013 年年度度ソフトウェア 工学分野の先導的研究 支援事業 抽象化に基づいた UML 設計の検証 支援ツールの開発 公 立立 大学法 人岡 山県 立立 大学情報 工学部情報システム 工学科 横川智教 Circuit Design Engineering Lab. - Okayama Prefec

デザインパターン第一章「生成《

トレーニングのプレゼンテーション

1

はじめに 本ドキュメントは Redmine を使用して稼働する定量的プロジェクト管理ツール ( 以下 IPF と略します ) のヘルプです IPF の操作に関わる機能を解説しており Redmine 及び構成管理ツール (Subversion Git) の標準機能については 本ヘルプの記載対象外として

f2-system-requirement-system-composer-mw

講義の進め方 第 1 回イントロダクション ( 第 1 章 ) 第 2 ~ 7 回第 2 章 ~ 第 5 章 第 8 回中間ミニテスト (11 月 15 日 ) 第 9 回第 6 章 ~ 第 回ローム記念館 2Fの実習室で UML によるロボット制御実習 定期試験 2

Python によるジオプロセシング スクリプト入門

Microsoft PowerPoint - 09.pptx

プログラミング実習I

JavaプログラミングⅠ

nlp1-12.key

Microsoft PowerPoint - 04_01_text_UML_03-Sequence-Com.ppt

Code_Aster / Salome-Meca 中級者への道 2015年5月31日

Java知識テスト問題

V8.1新規機能紹介記事

Microsoft PowerPoint - prog03.ppt

dema版下3ミリ

Rの基本操作

<4D F736F F F696E74202D20352D335F8D5C90AC CF909482CC90B690AC82C695D28F572E707074>

トレーニングのプレゼンテーション

JavaプログラミングⅠ

kantan_C_1_iro3.indd

Microsoft PowerPoint ppt

PowerPoint Presentation

橡68-honbun.PDF

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

Microsoft PowerPoint - 鵜飼裕司講演資料shirahama_egg.ppt [互換モード]

Microsoft PowerPoint - A1-2_株式会社ネクスト_藤澤正通_S _005.pptx

スライド 1

Python によるジオプロセシング スクリプト入門

グーグル検索マクロの使い方

GSLetterNeo vol 年 7 月 形式手法コトハジメ TLA + Toolbox を使って (2)- 熊澤努 sra.co.jp はじめに GSLetterNeo Vol.130 で TLA + Toolbox を紹介しました 今回からより詳しく T

PowerPoint プレゼンテーション

プロジェクトマネジメント知識体系ガイド (PMBOK ガイド ) 第 6 版 訂正表 - 第 3 刷り 注 : 次の正誤表は PMBOK ガイド第 6 版 の第 1 刷りと第 2 刷りに関するものです 本 ( または PDF) の印刷部数を確認するには 著作権ページ ( 通知ページおよび目次の前 )

PowerPoint プレゼンテーション

橡00international.PDF

機能検証トレーニング コース一覧

Microsoft Word - Training10_プリプロセッサ.docx

プログラミングA

プログラミング基礎I(再)

GEC-Java

pp2018-pp4base

BIP Smart サンプル説明書

Managing and Sharing MATLAB Code

Taro-リストⅠ(公開版).jtd

Microsoft PowerPoint ppt

FMV取扱ガイド

FMV取扱ガイド

取扱ガイド

FMV取扱ガイド

デジタル表現論・第6回

<4D F736F F D20838F815B836882C54C494E E DEC90AC283194C529>

目次 ペトリネットの概要 適用事例

Microsoft Visual Studio 2010 Professional Data Sheet

PowerPoint プレゼンテーション

セゾン保険_PDF用.indd

2/17 目次 I. はじめに... 3 II. 操作手順 (Controlの場合) 断面の作成 寸法測定 異なる断面間の寸法測定 繰り返し処理...11 III. 操作手順 (Verifyの場合) 断面の作成... 1

ソフトウェア要求分析から詳細設計までシームレスにつなぐ開発手法

15288解説_D.pptx

Microsoft PowerPoint ppt

プログラミングA

PARTⅢ 検証事例 2. トレーサビリティ管理の自動化に踏み切った理由や経緯 (1) 国際スタンダード認証に関する課題 ISO DO-178B/C IEC などの国際スタンダードでは 開発工程全般にわたって要件が満たされていること ( システムの正しい要件が 正しい方法で

情報実習Ⅱ

<8F6F93588E9197BF2E6169>

SystemDirector Developer's Studio(V3.2) 適用ガイド

4-4- 応スクリプト言語に関する知識 コードの作成や修正が容易とされるスクリプト言語のうち 特に Ruby について学習し 応用的なアプリケーション開発の手法を習得する Ⅰ. 概要フレームワークによる Web アプリケーション開発やデータベース操作について学習する Ⅱ. 対象専門分野職種共通 Ⅲ.

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

kiso2-03.key

Using VectorCAST/C++ with Test Driven Development

BIP Smart サンプル説明書

Microsoft PowerPoint SES2014.pptx

‚æ01Łª“û†œ070203/1‘Í

Microsoft PowerPoint - ca ppt [互換モード]

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

Microsoft PowerPoint - アルデIII 10回目12月09日

Transcription:

トレーサビリティとインパクト分析 2011 年 7 月 13 日 海谷治彦 1

背景 : ソフトウェア成果物 プロの開発では多様な成果物が作成される. 要求仕様書 設計仕様書 ソースコード テストケース 成果物内, 成果物間の相互の関係 ( トレース ) を知ることが重要. 2

トレースする理由 開発中に, どの機能が実現済か確認する. 要求仕様書 コード バグの原因を探す. 仕様書 コード 既存ソフトに新機能追加や性能アップのため, 改造 改良する際に, どこを書き直せば良いか探す. ( インパクト分析 ) 仕様書 コード 仕様が見当たらない実システムの仕様を明確にする.( リバースエンジニアリング ) コード 仕様 3

人手が主の変更要求への対応 ソースコード A 変更要求 関数 A 修正対象 ソースコード B ドキュメント 修正対象 関数 B レビュープロセス ( 人手 ) 4

例 : 演習 2,3 の解答例 要求項目は 14 個 ユースケースは 6 個 ( 概念 ) クラスは 5 or 6 個 ソースは 6 or 7 個 予想される要求変更が 7 個 それぞれ単純に対応付いていないため, トレースをするための技術が必要. 5

トレーサビリティの分類 水平方向のトレーサビリティ 関数から関数, クラスからクラス等. 変更や依存性. 呼び出し関係, 共有関数の存在 垂直方向のトレーサビリティ 要求項目から設計要素 設計要素からコード片 ( 関数やクラス ) 情報検索的なアプローチ 6

技術の分類 静的アプローチ プログラムや文書の記述内容をもとにトレースをとる. コールグラフ, データフロー解析. 文書の場合は, 章構成や段落構成, 文内の係り受け等. 動的アプローチ プログラムを動かしてみてトレースをとる. プロファイリング. デバッガ等を利用した解析. 文書は当然, 動かないので原則, 適用できないが, ユースケース記述やシーケンス図を描いてみるのは, ある意味, 動的なアプローチ. 7

コールグラフ 水平型トレースのための静的技術. 要は関数やメソッドの呼び出し関係を明確にする. 呼び出し関係がある関数間には, 変更の波及がある場合が多いため. コールグラフを作成するツールもある. doxygen 描画には graphviz を用いる 8

例 9

プロファイラ プログラムの実行時の情報を収集するツール. 本来はパフォーマンスの向上のための情報等を集めるために使われる. ちょっとしたプログラムでも長大なデータになる. コレも水平方向のトレースに役立つ. 10

例 hprof の出力例 C: > java -agentlib:hprof -jar Run.jar スレッドのところでやった生産者 消費者問題数秒動かしただけで,7 万行の情報を出力. TRACE 302139: java.awt.component.<init>(<unknown Source>:Unknown line) java.awt.label.<init>(<unknown Source>:Unknown line) TabacoSale.init(TabacoSale.java:29) TabacoSale.main(TabacoSale.java:66) TRACE 302140: IntLabel.<init>(IntLabel.java:5) TabacoSale.init(TabacoSale.java:32) TabacoSale.main(TabacoSale.java:66) TRACE 302141: java.lang.thread.<init>(<unknown Source>:Unknown line) LabelUpdater.<init>(LabelUpdater.java:8) Customer.<init>(Customer.java:3) TabacoSale.init(TabacoSale.java:32) 11

垂直の例と技術 まだ気軽に使えるツールはあまり無い. ソースだけでなく, 文書解析をしないといけないため. 情報検索 文書の出現語句に基づき, トレースをとる. 同義語の解決 言い回し の違いの吸収. 辞書 ( オントロジー ) の利用 12

我々の取り組み Req. Change Document Former Engineer(s)... channel...... efficiently...... crypto... Stakeholder(s) First queries 1.1 Introduction... 3.2 zzzz... channel...... sendrequest...... efficiently... 5.4 yyy... 7.5 xxxx... crypto...... initcomm... Second queries Validating Clue(s) Codes int eee(){... int sendrequest(){ }... } int bbb(){... int ccc(){ } int ddd(){...... } int aaa(){ }... initcomm=... } 13

14

要求変更を特徴付けるには? 索引付けの利用 Req. Change... channel...... efficiently...... crypto... First queries Document 1.1 Introduction.. bus... 3.2 zzzz... channel...... sendrequest...... efficiently... 5.4 yyy...secure... Candidate of First Queries Indexing Module e.g. "bus, secure..." Stakeholder(s) 7.5 xxxx... crypto...... initcomm... 15

画面例 変更要求を特徴付けるキーワードを見つけるための支援. 候補となる索引単語を提示する方法. 16

機械学習の利用による変更の可能性 Former Engineer(s) がある箇所の予測 Second queries Yes No Validating Clue(s) Codes int eee(){... int sendrequest(){}... } int bbb(){... int ccc(){ } int ddd(){...... } int aaa(){ }... initcomm=... } Classifying positive Training Machine Learning Module negative int aaa()... int bbb() int ccc() int ddd()... 17

変更波及の可視化 コールグラフと共有変数の利用 Second queries Codes int eee(){... int sendrequest(){ }... } int bbb(){... int ccc(){ } int ddd(){...... } int aaa(){ }... initcomm=... } Call Graph and Shared Variables Analysis Module indirectly impacted int ddd()... 18

シード関数を起点 関数の呼び出し関係 +0.5 共有変数による関係 +0.75 影響値が大きい関数ほど赤に近い色で表現され, 小さい関数ほど黄に近い色を示す. 画面例 19

インパクト分析ツール Jripples Eclipse 上で変更波及の分析 ( インパクト分析 ) を行うツール. Wayne State Univ. ( ミシガンの大学らしい ) で開発された. 演習で行う小規模なプログラム開発では, あまりピンと来ないが, クラスの数が数百, 数千のプログラムでの分析に有効. 基本的に対話的にインパクトを探すツール. 20

インストールと使い方 基本的に公式 HP 参照 http://jripples.sourceforge.net/ 21

Concept Location 三つの主要概念 ソース中で変更に最初にインパクトがある部分を見つける作業. Impact Analysis 最初のインパクトから波及してインパクトを受ける部分を探す作業. Change Propagation 変更波及の実現によって, 整合性がとれなくなった部分を探す作業. 22

TIPS Configuration において,Relaxed を指定すること. そうしないと,main メソッドからしか辿れなくなる. Impacted をクラスやメソッドにマーキングして, 変更の種を植え付け, その波及箇所を予測するのに使う. 23

画面例 24