DM公開講座「現代ソフトウエアエンジニアリングの俯瞰図」
の第7回(今回から三田)
組み込みソフトウェア開発向けコーディング作法ガイド解説
つまり、ESCRの話を聞いてきたのでメモメモ
組み込みシステム開発者技術リファレンスESxRシリーズ
開発プロセス
プロジェクトマネジメント
プロジェクト計画立案
コーディング作法ガイド
品質作りこみガイド
■第一章 組み込みソフトウェアにおけるコード品質
1.1 組み込みソフトウェア開発の現状
組み込みソフトウェア産業実態調査
ソフトウェアが原因の問題:半分くらい
→なんとかしないと
不具合の1/3は、実装工程で作りこまれている
→コーディングに問題
避けるような作法ガイドに
1.2 コード品質
ソフトウェア実装・単体テストの流れ
コーディング規約
レビュー観点リスト
コーディング規約:あまり使われていない
流用:もともとのコードの品質影響
実装時にレビューしないで、テストでまかなっている
コーディング規約と静的診断ツール
コーディング規約は形骸化している
命名や書式にこだわりすぎ
守れないルール・チェックしづらい
更新されていない。個々のプロジェクトに対応していない
1.3 コーディング規約
コーディング規約を守れるようにするために
必要性がわかるように
作法をC言語に落とし込む
カスタマイズしやすいルール
基本的に押さえるべきコーディング技術を取得
ルールの集合
■第二章 適用事例
2.1 コーディング規約の運用事例
静的解析ツールを使用して、コード品質の改善を図っているが、
様々な課題を抱えている
挙がってきた問題点
開発者がコード品質を上げる意識なし
ツールが多く指摘:重要点をみうしなう
対応が表面的になりがち
コーディング作法の導入
実装の段階で、解析
保守性を重点的に
2.2 コード品質を向上するには
効果を得るためのアプローチ
コーディング規約の教育
プロダクトの目的に適したコーディング規約の作成
ツールの有効活用
実装プロセス改善
■第三章 ESCR
3.1 コーディングミスの実際
・プログラミング言語の基本的な使い方を理解しただけでは、
実際のソフトウェア開発には対応しきれない
・ソースコード中に実行されることのない式や文を記述したまま
・型に対する制約範囲を意識する
・メモリ操作
・論理演算の勘違い
・タイプミス
・コンパイル依存
3.2 ESCRの内容
特徴
・体系化された」作法とルール
・すぐ使えるリファレンスルール
・ルールの必要性をを提示
・他のコーディング規約との対応関係を明示
MISRA C(みすらーC)
基本構成
作法とルールを体系化
品質概念:信頼性、保守性、移植し、効率性
作法:言語依存しない
ルール:言語依存
例:
作法概要
信頼性1:領域は初期化し、大きさに注意して使用する
作法詳細:具体的な実装の考え方
ルール:作法詳細ごとにある
コード例、必要性の提示
選択指針:規約にする必要性
規約化:詳細化する必要性
作法51、ルール129
3.3 品質特性ごとのルール紹介
細かいルール紹介(省略)
3.4 ESCRを使用した実装品質向上への取り組み方
コーディング規約を作る手順
(1)コーディング規約作成方針の決定
(2)コーディングルールの選択
選択指針
(3)ルールのプロジェクト依存部分定義
規約化
(4)適用除外の手順決定
文書化
実装プロセスへの適用
要求定義→コーディング規約→ツール→レビュー
継続的改善
効果的に運用していくためには
ESCRを理解
ツール・レビュー
コーディング規約の振り返り
ESCRに対応したツール
利用状況
C++にも対応
オブジェクト、ジェネリック、例外
構成とかは、Cと同じ作法までは言語非依存なので同じ
ルールは言語依存なので違う
利用が難しい機能の制限
Misra-c++や、EffectiveC++などなどを調査して含めた
ESCRを使い場合の注意点
作法ルールをすべて利用するのではない
の第7回(今回から三田)
組み込みソフトウェア開発向けコーディング作法ガイド解説
つまり、ESCRの話を聞いてきたのでメモメモ
組み込みシステム開発者技術リファレンスESxRシリーズ
開発プロセス
プロジェクトマネジメント
プロジェクト計画立案
コーディング作法ガイド
品質作りこみガイド
■第一章 組み込みソフトウェアにおけるコード品質
1.1 組み込みソフトウェア開発の現状
組み込みソフトウェア産業実態調査
ソフトウェアが原因の問題:半分くらい
→なんとかしないと
不具合の1/3は、実装工程で作りこまれている
→コーディングに問題
避けるような作法ガイドに
1.2 コード品質
ソフトウェア実装・単体テストの流れ
コーディング規約
レビュー観点リスト
コーディング規約:あまり使われていない
流用:もともとのコードの品質影響
実装時にレビューしないで、テストでまかなっている
コーディング規約と静的診断ツール
コーディング規約は形骸化している
命名や書式にこだわりすぎ
守れないルール・チェックしづらい
更新されていない。個々のプロジェクトに対応していない
1.3 コーディング規約
コーディング規約を守れるようにするために
必要性がわかるように
作法をC言語に落とし込む
カスタマイズしやすいルール
基本的に押さえるべきコーディング技術を取得
ルールの集合
■第二章 適用事例
2.1 コーディング規約の運用事例
静的解析ツールを使用して、コード品質の改善を図っているが、
様々な課題を抱えている
挙がってきた問題点
開発者がコード品質を上げる意識なし
ツールが多く指摘:重要点をみうしなう
対応が表面的になりがち
コーディング作法の導入
実装の段階で、解析
保守性を重点的に
2.2 コード品質を向上するには
効果を得るためのアプローチ
コーディング規約の教育
プロダクトの目的に適したコーディング規約の作成
ツールの有効活用
実装プロセス改善
■第三章 ESCR
3.1 コーディングミスの実際
・プログラミング言語の基本的な使い方を理解しただけでは、
実際のソフトウェア開発には対応しきれない
・ソースコード中に実行されることのない式や文を記述したまま
・型に対する制約範囲を意識する
・メモリ操作
・論理演算の勘違い
・タイプミス
・コンパイル依存
3.2 ESCRの内容
特徴
・体系化された」作法とルール
・すぐ使えるリファレンスルール
・ルールの必要性をを提示
・他のコーディング規約との対応関係を明示
MISRA C(みすらーC)
基本構成
作法とルールを体系化
品質概念:信頼性、保守性、移植し、効率性
作法:言語依存しない
ルール:言語依存
例:
作法概要
信頼性1:領域は初期化し、大きさに注意して使用する
作法詳細:具体的な実装の考え方
ルール:作法詳細ごとにある
コード例、必要性の提示
選択指針:規約にする必要性
規約化:詳細化する必要性
作法51、ルール129
3.3 品質特性ごとのルール紹介
細かいルール紹介(省略)
3.4 ESCRを使用した実装品質向上への取り組み方
コーディング規約を作る手順
(1)コーディング規約作成方針の決定
(2)コーディングルールの選択
選択指針
(3)ルールのプロジェクト依存部分定義
規約化
(4)適用除外の手順決定
文書化
実装プロセスへの適用
要求定義→コーディング規約→ツール→レビュー
継続的改善
効果的に運用していくためには
ESCRを理解
ツール・レビュー
コーディング規約の振り返り
ESCRに対応したツール
利用状況
C++にも対応
オブジェクト、ジェネリック、例外
構成とかは、Cと同じ作法までは言語非依存なので同じ
ルールは言語依存なので違う
利用が難しい機能の制限
Misra-c++や、EffectiveC++などなどを調査して含めた
ESCRを使い場合の注意点
作法ルールをすべて利用するのではない