コーディング作法ガイド「escr」の改訂内容と - ipac90...

17
Copyright 2014 FUJITSU SOFTWARE TECHNOLOGIES LIMITED コーディング作法ガイド「ESCR」の改訂内容と 静的解析ツール「PGRelief」による運用方法 株式会社 富士通ソフトウェアテクノロジーズ モダナイゼーション事業部マイグレーションサービス部 佐々木 孝次 ET2014 IPAブースセミナー 11/1921

Upload: others

Post on 17-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

Copyright 2014 FUJITSU SOFTWARE TECHNOLOGIES LIMITED

コーディング作法ガイド「ESCR」の改訂内容と静的解析ツール「PGRelief」による運用方法

株式会社 富士通ソフトウェアテクノロジーズ

モダナイゼーション事業部マイグレーションサービス部

佐々木 孝次

ET2014 IPAブースセミナー

11/19~21

Page 2: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

Information-technology Promotion Agency, Japan

Software Reliability Enhancement Center Copyright © 2014 IPA, All Rights Reserved

Software Rel iabi l i ty Enhancement Center

1

コーディング作法ガイド「ESCR」の改訂内容

Page 3: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

2 Copyright © 2014 IPA, All Rights Reserved Software Reliability Enhancement Center

開発プロセスガイド : ESPR (Embedded System development Process Reference)

組込みシステム開発技術リファレンス ESxRシリーズ

プロジェクトマネジメントガイド : ESMR[計画書編] (Embedded System development Management Reference)

品質作り込みガイド : ESQR (Embedded System development Quality Reference)

コーディング作法ガイド : ESCR[C言語版] : ESCR[C++言語版] (Embedded System development Coding Reference)

プロジェクト計画立案トレーニングガイド : ESMG (Embedded System development Management Training Guide)

Page 4: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

3 Copyright © 2014 IPA, All Rights Reserved Software Reliability Enhancement Center

ESCR とは

ソースコードの標準化や品質の均一化を進めることを目的とした、組込みソ

フトウェア向け※ の実用的なコーディング規約を策定するためのガイド

※) ビット並びの順番やメモリの境界といった組込み特有のポイントを考慮している

対象言語 : C言語、C++言語

対象者 : 規約の作成者、プログラマー、レビューアー

ビット位置が意識されたデータに 対してはビットフィールドを使用しない

(例) ハードウェアの違いによる 影響を回避するルール

組織やプロジェクトごとのコーディング規約を決める際の参考としてご利用いただく

「組込みソフトウェア開発向けコーディング作法ガイド」

Page 5: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

4 Copyright © 2014 IPA, All Rights Reserved Software Reliability Enhancement Center

コーディング規約を分かりやすくするために

ソフトウェアの品質特性をもとに,トップダウンに作法とルールを体系化する

作 法 : 品質向上のために守るべき具体的な実装の考え方

ルール : 言語依存を考慮した具体的なコーディングの決め事

信頼性 保守性 移植性 効率性

コーディング規約にかかわる品質特性

作法

ルール ・・・

品質 概念

Page 6: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

5 Copyright © 2014 IPA, All Rights Reserved Software Reliability Enhancement Center

コーディング規約の表現例

コード例

信頼性

1 領域は初期化し、 大きさに気を付けて使用する。

Page 7: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

6 Copyright © 2014 IPA, All Rights Reserved Software Reliability Enhancement Center

ESCR 策定の沿革

年 月 内 容

2004年 10月 コーディング作法WG活動開始

2005年 6月 C言語版 (ESCR C) Ver. 1.0 作成開始

2006年 6月 コーディング作法ガイド C言語版 Ver. 1.0 出版

2007年 7月 同上 Ver. 1.1出版

多くのユーザに支持いただいている

• 組込み系ユーザでは、4割が導入済みもしくは検討中

• 品質と生産性の向上に有用との評価 2012年度「ソフトウェア産業の実態把握に関する調査」

• 書籍およびPDFのダウンロード 3万冊

2008年 4月 C++言語対応へ活動開始

2010年 11月 C++言語版 (ESCR C++) Ver. 1.0 出版

2013年 5月 C言語版 Ver. 2.0 作成開始

2014年 3月 同上 Ver. 2.0 出版

2014年 7月 同上 英語訳 公開

2014年 6月 ESCR C++ 改訂活動開始

2011年4月

標準化を推進した結果、JIS X 0180 「組込みソフトウェア向けコーディング規約の作成方法」 として規定

Page 8: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

7 Copyright © 2014 IPA, All Rights Reserved Software Reliability Enhancement Center

課題

ESCR はC言語規格の旧版である C90 に準拠しており、現行版である

C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

M ISRA C が大幅改訂を実施したことで、 ESCR の記述とのリンクがとれ

なくなった

目的

準拠する C言語規格を C90 から C99 に更新し、新たな機能でコーディン

グを容易にしつつ、組込みソフトウェアを高信頼に作るため望ましくない動

作が防げるようにする

相互に引用を行っており、ESCR が参照している両者共通的な部分で

M ISRA C の改訂に対応して記述の齟齬がないようにする

今回の改訂での課題と目的

Page 9: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

8 Copyright © 2014 IPA, All Rights Reserved Software Reliability Enhancement Center

改訂の成果

準拠する C言語規格の C90 から C99 への拡大・更新

新規となる項目の反映の有無を確認

M ISRA C:2012との対応関係の更新

ESCR が M ISRA C:2004を参照している25個所について、

対応関係の見直し

新規となる項目の反映の有無を確認

⇒ ESCR [C言語版] Ver. 2.0 日本語版の出版

2014年3月7日

改訂版の英訳

⇒ ESCR [C言語版] Ver. 2.0 英訳版 PDF

2014年7月24日

Page 10: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

9 Copyright © 2014 IPA, All Rights Reserved Software Reliability Enhancement Center

ESCR [C言語版] Ver. 2.0

書籍名

【改訂版】 組込みソフトウェア開発向けコーディング作法ガイド [C言語版]

Ver. 2.0

編集・発行

独立行政法人情報処理推進機構 技術本部 ソフトウェア高信頼化センター

発行日

2014年3月7日

サイズ B5変型判

ページ数

173ページ

ISBN 978-4-905318-23-1

定価 本体1,619円 (税抜)

I PA直販と Amazon でご購入いただけます。

Page 11: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

10 Copyright © 2014 IPA, All Rights Reserved Software Reliability Enhancement Center

ESCR C++ の改訂とセキュリティ対応について

ESCR C++ の改訂

現行版の言語規格は2003年版であり、新規格(C++11)に準拠する

ESCR C言語版を改訂したため、それと C++ 言語版とで整合をとる

セキュリティに関して対応する

MISRA C++ が改訂を計画しており、これと合わせたい

セキュリティへの対応

ESCR Ver. 2.0 での対応

JIS X 0129の後継である 25010 でセキュリティが特性に格上げされた

→ 説明を追加するが、セキュリティ特性は採用せず

(基本的には設計段階の特性と考え、バッファオーバフローなど、セキュリティ

に影響するコーディングもある とする)

脆弱性との対応付け、CERT C セキュアコーディングスタンダードとの対応

づけを明確化する

Page 12: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

Copyright 2014 FUJITSU SOFTWARE TECHNOLOGIES LIMITED

静的解析ツール「PGRelief」による

ESCRの運用方法

11

Page 13: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

Copyright 2014 FUJITSU SOFTWARE TECHNOLOGIES LIMITED

PGReliefによる品質向上、開発コスト削減

12

コーディングガイドラインに沿った実装でバグ作りこみを防止

■富士通ノウハウ含む複数チェックでコーディング品質を向上

■ツールでバグを自動検出、早期工程の対処で開発コストを削減

不具合混入を防止 工数を削減

コーディングの不備を排除

期間短縮

ESCR

コーディング作法ガイド

Page 14: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

Copyright 2014 FUJITSU SOFTWARE TECHNOLOGIES LIMITED

運用ポイント①:運用計画を作成する

13

コーディングガイドラインを遵守する仕組みを策定し、文書化する

運用計画に記載する項目例

運用方法を策定する仕組(体制、手順等)

コーディングルールの選択(※)

ツール検知できない部分の確認方法

ツール使用法(バージョン、オプション等)

逸脱箇所の対応ポリシー

運用監視の仕組み

観点 状況 コーディングルール

狙い 品質特性

製品特性 ISO 26262対応 防衛的な実装、 不具合混入防止

信頼性、保守性

24時間稼動 異常停止の防止 信頼性

開発体制 新人が多い 単純バグの防止、 過去バグの再発防止

信頼性

ベテランが多い 引継ぎの考慮 保守性

今後の展開 カスタマイズ要求が多い 機能拡張の考慮 保守性、移植性

※ルール選択の観点

Page 15: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

Copyright 2014 FUJITSU SOFTWARE TECHNOLOGIES LIMITED

運用ポイント②:ツールの実行記録を残す

14

ツールが運用計画で決めた方法で実行されていることをエビデンスとして残す

ツール実行記録の項目例

ツールの実行日時

ツールのバージョン

ツールの実行パラメタ

ツールの適用ルール

PGReliefが出力する実行記録

No ファイル チェック状況詳細

日時 ツールバージョン チェックオプション 適応コーディング作法

1 D:¥sample¥sample1.c 2014/01/22 15:05 2014a -c -SSJIS –zEscr20-Rule ESCR2.0

2 D:¥sample¥sample2.c 2014/01/22 15:05 2014a -c -SSJIS –zEscr20-Rule ESCR2.0

3 D:¥sample¥sample3.c 2014/01/22 15:05 2014a -c -SSJIS –zEscr20-Rule ESCR2.0

4 D:¥sample¥sample4.c 2014/01/22 15:05 2014a -c -SSJIS –zEscr20-Rule ESCR2.0

トレーサビリティツール「 PLEMIA SQ-Tracer 」

ソースコードや設計書

とセットで保管 実行記録の取込

Page 16: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

Copyright 2014 FUJITSU SOFTWARE TECHNOLOGIES LIMITED

運用ポイント③ :検証記録を作成する

15

ツールの指摘が0件(逸脱無し)であること、または逸脱箇所に

対して決定したポリシーでの対処がなされていることを示す

検証記録の項目例

逸脱の件数

逸脱に対する開発者の見解

逸脱に対する管理者の承認

状況 件数

承認済み指摘メッセージ 1

未承認指摘メッセージ 0

No 承認 ファイル 行番号 メッセージ 開発者見解

1 承認 sample2.c 18 16行目の関数"malloc"で取得した資源が回収されていない可能性があります。

ライブラリ内で解放されるため、対処不要

PGReliefが出力する対処記録

1)概要

2)逸脱一覧

承認者 ○○ ○○ 承認日 2014.1.22

承認者見解 逸脱対処のポリシーに従って対処しており、問題なし。

Page 17: コーディング作法ガイド「ESCR」の改訂内容と - IPAC90 に準拠しており、現行版である C99 に対応する必要がある (M ISRA C も今回 C99 に対応)

Copyright 2014 FUJITSU SOFTWARE TECHNOLOGIES LIMITED 16