会社概要 株式会社富士通コンピュータテクノロジーズ 設立 1983 年 事業所川崎本社 豊橋事業所 長野事業所 事業内容 サーバ ストレージ モバイル端末 車載 /FA 機器 画像認識 ハードウェア ネットワーク 検証ソリューション 従業員数 536 名 組込みソフトウェア開発 組込みハードウェア開

Similar documents
ソフトウェア品質向上セミナー ソースコード品質 レビュー品質 を改善するポイント 株式会社富士通コンピュータテクノロジーズ 1328kc1 0 Copyright 2015 FUJITSU COMPUTER TECHONOGIES LIMITED

2015 TRON Symposium セッション 組込み機器のための機能安全対応 TRON Safe Kernel TRON Safe Kernel の紹介 2015/12/10 株式会社日立超 LSIシステムズ製品ソリューション設計部トロンフォーラム TRON Safe Kernel WG 幹事

ET2014 ミニセミナー フィーチャー図と BricRobo で 簡単プロダクトライン 2014/11/19~21 ( 株 ) 富士通コンピュータテクノロジーズ伊澤松太朗 1294karch01 Copyright 2014 FUJITSU COMPUTER TECHNOLOGIES LIMITE

PGRelief C/C++ 強化ポイント説明書

Microsoft PowerPoint - A3② JaSST_MISRA2004ソースコード品質診断.ppt

目次 当社のご紹介 モデル駆動開発とは モデル駆動開発ツール BricRobo とは BricRobo で L チカ派生開発 BricRobo の展開 記載された商品名 製品名は各社の登録商標または商標です 1

エンジニアリング・サービスから見たMBD導入の成功・失敗

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

Microsoft PowerPoint - 【最終提出版】 MATLAB_EXPO2014講演資料_ルネサス菅原.pptx

Using VectorCAST/C++ with Test Driven Development

個人依存開発から組織的開発への移行事例 ~ 要求モデル定義と開発プロセスの形式化 による高生産性 / 高信頼性化 ~ 三菱電機メカトロニクスソフトウエア ( 株 ) 和歌山支所岩橋正実 1

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

PowerPoint プレゼンテーション

GUI 操作自動化ツールを用いた テスト効率化手法 2016 年 3 月 8 日 /3 月 9 日株式会社富士通コンピュータテクノロジーズ TMP 事業部第二開発部菅野正行 Copyright 2016 FUJITSU COMPUTER TECHNOLOGIES LIMITED

NEXCESS基礎コース01 組込みソフトウェア開発技術の基礎 ソフトウェア開発プロセス編

Microsoft PowerPoint - ID005(R02).pptx

PowerPoint プレゼンテーション

040402.ユニットテスト

Microsoft PowerPoint - Personal Software Process (PSP)の実施の定着化

Microsoft Word - ESxR_Trialreport_2007.doc

ソフトウェア FMEA を体系的に実施する 出発点としての MISRA-C 株式会社ヴィッツ森川聡久 株式会社ヴィッツ中野泰伸 名古屋市工業研究所小川清 1

スライド 1

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

CodeRecorderでカバレッジ

Microsoft PowerPoint - 01_Vengineer.ppt

Microsoft PowerPoint - ETEC-CLASS1資料 pptx

PowerPoint プレゼンテーション

Microsoft PowerPoint - PressPresen-AbsInt.pptx

スキル領域 職種 : ソフトウェアデベロップメント スキル領域と SWD 経済産業省, 独立行政法人情報処理推進機構

スライド 1

15288解説_D.pptx

HIGIS 3/プレゼンテーション資料/J_GrayA.ppt

PowerPoint プレゼンテーション

テスト設計コンテスト

WSUS Quick Package

HIGIS 3/プレゼンテーション資料/J_GrayA.ppt

スライド 1


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

Insert your Title here

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

Microsoft PowerPoint - 【別紙1-2】メトリクスセットの利用ガイド.pptx

TFTP serverの実装

AquesTalk Win Manual

<4D F736F F F696E74202D D4C82F08A B582BD A A F2E707074>

AquesTalk プログラミングガイド

過去問セミナーTM

memo

日経ビジネス Center 2

単体テスト設計のコツ

2014 年 11 月 20 日 ET2014 スペシャルセッション C-2 mruby プログラム言語 Ruby による組込みソト開発 九州工業大学田中和明 軽量 Ruby フォーラム Ruby アソシエーション

Software Token のセット価格 398,000 円 (25 ユーザ版 税別 ) をはじめ RSA SecurID Software Token を定価の半額相当の特別価格を設定した大変お得な スマートモバイル積極活用キャンペーン! を 3 月 31 日 ( 木 ) まで実施します また

CW6_A1441_15_D06.indd

PowerPoint Presentation

ソフトウェアの品質とは? 2

PowerPoint プレゼンテーション

Microsoft Word - 【第5分科会】ConcolicTestingグループ_付録_修正_ doc

はじめに : ご提案のポイント

Microsoft PowerPoint - 配布用資料.ppt

Microsoft Word - Cプログラミング演習(10)

目次 取組み概要 取組みの背景 取組みの成果物 適用事例の特徴 適用分析の特徴 適用事例の分析結果から見えたこと JISAによる調査結果 どうやって 実践のヒント をみつけるか 書籍発行について紹介 今後に向けて 2

ISO 9001:2015 改定セミナー (JIS Q 9001:2015 準拠 ) 第 4.2 版 株式会社 TBC ソリューションズ プログラム 年版改定の概要 年版の6 大重点ポイントと対策 年版と2008 年版の相違 年版への移行の実務

情報処理演習 B8クラス

Microsoft PowerPoint - 09.pptx

プログラミング基礎


Microsoft PowerPoint プレス発表_(森川).pptx

02: 変数と標準入出力

短納期開発現場への XDDP 導入手法

LAMP スタック:品質およびセキュリティ

ソフト活用事例③自動Rawデータ管理システム

White Paper 高速部分画像検索キット(FPGA アクセラレーション)

untitle

Cisco Prime LAN Management Solution 4.2 紹介資料

DumpsKing Latest exam dumps & reliable dumps VCE & valid certification king

ハード・ソフト協調検証サービス

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

Microsoft PowerPoint - B3-3_差替版.ppt [互換モード]

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

要旨 SLP を用いて要求仕様書を書くと レビューを効率的に行うことができます SLP の簡易な文法に従って記述するだけで 主語のもれや 場合分けのもれに気づくことができます SLP が自動生成する状態遷移表を活用することで 論理的な整合性の誤りを効率的に発見することができます 2

4.7.4 プロセスのインプットおよびアウトプット (1) プロセスへのインプット情報 インプット情報 作成者 承認者 備 考 1 開発に関するお客様から お客様 - の提示資料 2 開発に関する当社収集資 リーダ - 料 3 プロジェクト計画 完了報 リーダ マネージャ 告書 ( 暫定計画 ) 4

第1回 ソフトウェア工学とは

迅速な開発 容易な運用 柔軟な改善を実現する 業務アプリケーションの開発 運用ソリューション ファストアップ ご説明資料 Ver

お客様からの依頼内容とその現状

多機種のAndroid(TM)端末でテストシナリオを流用可能に - Androidアプリケーション自動テストツール QCWing for Android Ver.2.7 -

2014 年電子情報通信学会総合大会ネットワークシステム B DNS ラウンドロビンと OpenFlow スイッチを用いた省電力法 Electric Power Reduc8on by DNS round- robin with OpenFlow switches 池田賢斗, 後藤滋樹

COBOL EE開発環境 ご紹介資料

JMAS Customer Services Policy and Procedures

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

PowerPoint プレゼンテーション

MATLAB EXPO 2019 Japan プレゼン資料の検討

第2回中級ソフトウェア品質技術者資格試験記述式問題の解説(案)

<4D F736F F D F193B994AD955C D9E82DD835C EC091D492B28DB8816A2E646F63>

PowerPoint プレゼンテーション

24th Embarcadero Developer Camp

02: 変数と標準入出力

NSW キャリア採用募集職種一覧 2018/8/16 現在 求人番号 職種対象業務必要とするスキル 経験 資格等勤務地 1 営業スペシャリスト金融 ( 損保 生保 クレジット ) 業でのソリューション営業 IT 業界での営業経験 金融業界 IT 業界での人脈がある方尚可 渋谷 2 プロジェクトマネー

<4D F736F F F696E74202D2091E63389F15F8FEE95F1835A834C A CC B5A8F FD E835A835890A78CE C CC835A834C A A2E >

Microsoft PowerPoint - final_tamura.ppt

Transcription:

組込みシステム開発技術展 (ESEC) 2014 年 5 月 14 日 ~16 日 静的解析ツールの効果的活用方法 株式会社富士通コンピュータテクノロジーズ TMP 事業部検証ソリューション部土屋 (14 15 日 ) 馬渕 (16 日 ) 1275kc1

会社概要 株式会社富士通コンピュータテクノロジーズ 設立 1983 年 事業所川崎本社 豊橋事業所 長野事業所 事業内容 サーバ ストレージ モバイル端末 車載 /FA 機器 画像認識 ハードウェア ネットワーク 検証ソリューション 従業員数 536 名 組込みソフトウェア開発 組込みハードウェア開発 組込みプラットフォーム テストフ ロク ラム開発 / 検証評価 300 名 50 名 35 名 100 名 1 Copyright 2014 FUJITSU COMPUTER TECHNOLOGIES LIMITED

始めに コーディングテスト用のツールは使われていますか? 組込み開発におけるコーディングテストツール 50% 使用率 40% 30% 20% 10% 0% モデルベース テストツール レビュー支援ツール静的解析ツール動的解析ツール 本日の話題 各社静的解析ツールの特徴 開発スタイルに合わせた静的解析ツールの選択の方法 1/ 14

実装工程における静的テストとは? 静的テストとはプログラムを実行せずに実施するテストです ソースコード品質を確保するためには レビュー インスペクション等の実施が重要です チェックリスト等を使用し レビュー観点を明確にします 仕様に基づいているか検証します コーディング規約に基づいているか検証します 静的解析ツールを使用することでレビューの品質 生産性が向上します ( 入力資料 ) 仕様書 ( 入力資料 ) チェックリスト ( コーディングの生産物 ) ( レビューの入力資料 ) ソースコード ( レビューの生産物 ) レビュー記録 コーディング 静的解析ツール レビュー インスペクション ( 入力資料 ) コーディング規約 2/ 14

静的解析ツールとは?(1) プログラムを実行せずにソースコード上の欠陥を検出することが出来ます コーディング段階から使用できるためフロントローディングに寄与します 01: #include <stdio.h> 02: #include <stdlib.h> 03: #include <memory.h> 04: 05: int bar(char *pdata, char * fname, int size) 06: { 07: FILE *fp; 08: 09: fp = fopen(fname, wb ); 10: if (fp == NULL) { 11: return -1; 12: 13: memset(pdata, 0x20, size); 14: fwrite(pdata, size,1, fp); 15: fclose(fp); 16: return 0; 17: 18: 19: int foo(char *fname, int size) 20: { 21: char *pdata; 22: int ret; 23: 24: pdata = malloc(size); 25: if (pdata == NULL) { 26: return -1; 27: 28: ret = bar(*pdata, *fname, size); 29: 30: if (ret!= 0) { 31: free(pdata); 32: else { 33: return -1; 34: 35: return 0; 36: レビュー インスペクション 静的解析ツール #include <stdio.h> #include <stdlib.h> #include <memory.h> int bar(char *pdata, char * fname, int size) { FILE *fp; fp = fopen(fname, wb ); if (fp == NULL) { return -1; memset(pdata, 0x20, size); fwrite(pdata, size,1, fp); fclose(fp); return 0; int foo(char *fname, int size) { char *pdata; int ret; pdata = malloc(size); if (pdata == NULL) { return -1; ret = bar(*pdata, *fname, size); if (ret!= 0) { free(pdata); else { return -1; return 0; Memory Leak 領域獲得 未解放 4/ 14

静的解析ツールとは?(2) 静的解析ツールとはプログラムを実行せずにプログラムを評価するツール全般を表します ( プログラムを実行する : 動的解析ツール ) 狭義な静的解析ツール ソースコード上の欠陥を検出するツール Coverity Qulaity Advisor Klocwork Insight Fortiry SCA CodeSonar (C++test) PGRlief QAC/QAC++ LDRA anywarp CodeDirector 広義な静的解析ツール ソフトウェアメトリクスやクローンコードを検出する静的解析ツール Understand Lattix ランタイムエラー検出ツール DevPartner Purify Insure++ 上記は C/C++ ソースコードを検証できる商用静的解析ツールの一部を抜粋したものです 各社の静的解析ツールの名称 社名等は各社の登録商標です 3/ 14

静的解析ツールの仕組み (1) パターンマッチタイプの静的解析ツール 従来から多いタイプの静的解析ツールです (lint タイプという言い方をする場合があります ) PGReliefは様々なコーディング規約等に対応していてるため 多くの欠陥を検出できます Memory Leak 01: #include <stdio.h> 02: #include <stdlib.h> 03: #include <memory.h> 04: 05: int bar(char *pdata, char * fname, int size) 06: { 07: FILE *fp; 08: 09: fp = fopen(fname, wb ); 10: if (fp == NULL) { 11: return -1; 12: 13: memset(pdata, 0x20, size); 14: fwrite(pdata, size,1, fp); 15: fclose(fp); 16: return 0; 17: 18: 19: int foo(char *fname, int size) 20: { 21: char *pdata; 22: int ret; 23: 24: pdata = malloc(size); 25: if (pdata == NULL) { 26: return -1; 27: 28: ret = bar(*pdata, *fname, size); 29: 30: if (ret!= 0) { 31: free(pdata); 32: else { 33: return -1; 34: 35: return 0; 36: 欠陥のパターンフィルター #include <stdio.h> #include <stdlib.h> #include <memory.h> int bar(char *pdata, char * fname, int size) { FILE *fp; fp = fopen(fname, wb ); if (fp == NULL) { return -1; memset(pdata, 0x20, size); fwrite(pdata, size,1, fp); fclose(fp); return 0; int foo(char *fname, int size) { char *pdata; int ret; pdata = malloc(size); if (pdata == NULL) { return -1; ret = bar(*pdata, *fname, size); if (ret!= 0) { free(pdata); else { return -1; return 0; 領域獲得 未解放 5/ 14

静的解析ツールの仕組み (2) ビルドキャプチャー型静的解析ツール 制御フロー データフローを解析するタイプの静的解析ツールです 形式手法を応用した解析を実施するタイプの静的解析ツールもあります 動的解析ツール ( ランタイムエラー検出ツール ) が使用できないプラットフォームの場合は有効です ソースコード ビルドキャプチャ型 コンパイラ呼び出し ランタイムライブラリに印加 ビルド キャプチャ コンパイル 中間表現 プログラム モジュール 実機上でエミュレーション 解析 ( シミュレーション ) デバック テスト 静的解析ツール 6/ 14 動的解析ツール

開発スタイルと静的解析ツールの選択 ソフトウェア開発におけるコーディングの実施比率の違い 始めから開発をする ( コーディングをする ) 過去の開発した実績あるソースコードや オープンソースを活用することで開発コストの削減や効率向上を図る場合があります ( あまりコーディングをしない ) 契約 仕様 受入検査 ( ユーザ企業 ) 開発 ( ベンダー企業 ) コーディング 納品物 ソースコードに欠陥 ( バグ ) が無いことを確認したい ビルドキャプチャー型 コーディング時には可読性や保守性を含めて品質を向上させたい パターンマッチ型 流用 OSS 静的解析ツール インテグレーション 7/ 14

静的解析ツールのスコープ PGRelief Klocwork Insight Coverity Quality Advisor を比較した場合 PGRelief を使用すると厳格なコーディングを実施することが出来きます Coverity Quality Advisor はソースコード上に含まれる欠陥 ( バグ ) の検出に注力しています Klocwork Insight はすべての範囲をカバーするように作られています 開発規模 大規模 1M~ Coverity Quality Advisor 中規模 100k~ Klocwork Insight 小規模 PGRelief コーディング インテグレーション コーディング インテグレーション 上記は C/C++ ソースコードを検証できる商用静的解析ツールの一部です 各社の静的解析ツールの社名 名称等は各社の登録商標です 8/ 14

静的解析ツールのポリシー 検出数に違いがある Positive ( 検出する ) 正検知 Negative ( 検出しない ) Positive ( 検出する ) 正検知 Negative ( 検出しない ) 過検知? 誤検知? 過検知? 誤検知? Klocwork 社静的解析ツール Klocwork 社静的解析ツール Coverity 社静的解析ツール Coverity 社静的解析ツール 欠陥に対する考え方開発に対する考え方解析結果効果 欠陥を確実に検出できること 未検知 ( 見逃し ) が無いことに重点を置いている 未検知 ( 見逃し ) は後工程で結果的に開発者にとって負担が増える 解析結果に誤検知 過検知の可能性があっても含める傾向にある 新規開発 ミッションクリティカル分野に効果的 修正が必要な欠陥だけを検出できること 誤検知 過検知を防ぐことに重点を置いている 誤検知 過検知をレビューすることは開発者の負担が増える 解析結果は誤検知 過検知の可能性があれば排除する傾向にある 流用開発 大規模開発に効果的 注 ) 正検知 未検知 過検知は弊社で便宜上使用している用語です 9/ 14

ソースコード検証サービス 富士通コンピュータテクノロジーズの ソースコード検証サービス では適切な静的解析ツールの選択 ~ 運用まで実装工程の支援を実施します コーディング規約 規約作成支援 コード修正 P コーディング レビュー支援 A D 静的解析 未検知分析 レビュー C 解析結果 静的解析傾向分析詳細分析未検知分析レビュー支援規約作成支援 サービス概要 傾向分析 詳細分析 最先端の静的解析ツールを活用し 通常の人的レビューでは発見できないコード上の潜在欠陥を検出します ( トライアル解析を無償で実施します ) 静的解析ツールの弱点である膨大な指摘の中から 開発の状況に合わせて正しい指摘 ( 誤検知 過検知の排除 ) とレビューの優先順位を 弊社の分析技術を用いて抽出します 弊社のエンジニアが 静的解析の指摘を一件毎にレビューし 欠陥のメカニズム 影響度 修正候補等を提示します 複雑な構造の重大欠陥等 汎用の静的解析ツールでは検出できない欠陥を 静的解析ツールの機能や OSS をベースとしたツール等を活用して同一パターンを検出し 欠陥見逃しを防ぎます 静的解析の結果やレビュー後の修正状況を管理し 第三者のチェックを行うことで 重大欠陥の修正漏れや見逃しを防止します 静的解析ツールの分析結果やレビュー支援状況から お客様の開発の効果のあるコーディング規約作成を支援します ( 特に 信頼性 や セキュリティ の観点 ) 弊社で提供するサービス お客様のプロセス 資産 10/ 14

まとめ 静的解析ツールでも違いはあります スコープ ポリシーに違いがあります 開発スタイルに合った静的解析ツールを選びましょう ソースコード検証サービスでは 静的解析ツールの選択 ~ 運用 ~ 実装工程の PDCA 改善をお手伝いします ご清聴ありがとうございました 11/ 14

12/ 14

ソースコードの品質 そもそも 何を検査したいか? JIS-X0129(ISO 9126) 品質特性とソースコードの品質 品質特性品質副特性ソースコードの品質 ( 例 ) 信頼性 保守性 移植性 効率性 成熟性 ソースコードを使い込んだ時の欠陥の少なさ 障害許容性 欠陥への対処 ( 例外処理等が行われているか?) 解析性 作ったソースコードは理解しやすいか? 変更性 将来 ソースコードを改版しやすいつくりになっているか? 安定性 ソースコードを改版する際に プログラムへの影響が少ないつくりになっているか? 試験性 テストやデバックがしやすいか? 環境適応性 他の OS やアーキテクチャ またソフトウェアに移植しやすいソースコードになっているか? 時間効率性 適切なアルゴリズムを使用しているか? 資源効率性 無駄なスタックやヒープ領域を使用していないか? 機能性セキュリティ セキュアなコーディングがされているか? [ 出典 ] 組み込みソフトウェア開発向けコーディング作法ガイド [C 言語版 ] 機能性 - セキュリティ を追加している 13/ 14

ソースコード上の欠陥について ソースコードには潜在化した欠陥も含まれている ソースコード 欠陥が顕在化したものが故障となる 静的テスト 欠陥 欠陥 動的テスト 静的解析ツールは欠陥の可能性を検出 指摘 欠陥 欠陥 動的解析ツールは故障を検出 指摘 指摘 故障 指摘 指摘 開発者が期待する静的解析ツールの指摘? 故障 指摘 静的解析ツールの指摘 実行時 ISO/IEC 2383-14 JIS X 0014 定義 Failure 故障要求された機能を遂行する機能単位の能力がなくなること Fault Error 欠陥 障害 誤差 誤り 要求された機能を遂行する機能単位の能力の縮退 または喪失を引き起こす異常な状態 計算 観測若しくは測定された値または状態と 真の 指定された若しくは論理的に正しい値または状態との間の相違 Detect 指摘 検知静的解析ツールの検出した指摘 14/ 14 Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED