ソフトウェア設計プロセスの改革 オブジェクト指向導入による 生産性の向上 SEIKO EPSON CORPORATION BS 事業部 2006 6 28
開発対象製品の紹介 セイコーエプソン株式会社 BS 事業部 BS 事業推進部 TM( ターミナルモジュール ) のファームウェア開発 ( レシートプリンタ ラベルプリンタの開発 ) 業務用小型プリンタのファームウェア開発 レシート ラベル チェック 開発対象としての特徴と課題 派生商品開発が多い ( 顧客要望への対応 ) ハード環境に合わせ開発を行っている ( メカ ASIC ) 人 ( チーム ) 機種に依存した構造 SEIKO EPSON CORPORATION BS 事業部 2006 6 28
目次 1. 取り組みの目的 生産性の向上 解決したい課題 取り組みのポイント 2. プロセス設計導入のポイント 3. 技術導入のポイント 4. 成果 5. まとめ SEIKO EPSON CORPORATION BS 事業部 2006 6 28
取り組みの目的 増加するソフトウェアへの要求に対応するためには これまでの人に依存した開発体制 / 技術では応えられない 生産性の向上と 人に依存しない開発体制への移行が必要 設計プロセスの見える化 部品の再利用を促進 <Q> <C> 部品の再利用 : 作らない プロセス見える化 : 繰り返せるプロセス 計測 : プロセス 成果物の評価による改善 共通部品 : 作らない :30% 削減 ( 品質向上 効率向上 ) <D> プロセス見える化 : 見積精度向上 納期遵守 ( 計測による実績の把握 ) SEIKO EPSON CORPORATION BS 事業部 2006 6 28
取り組みの目的 1. 生産性の向上 増加する要望に迅速に応える 手戻りの削減 2. 解決したい課題 人に依存した体制 効率を計れない現状 外部から見えない設計プロセス 3. 取り組みのポイント 技術導入はプロセス設計の導入とセット SEIKO EPSON CORPORATION BS 事業部 2006 6 28
プロセス設計導入のポイント 1.CMM のノウハウ導入 プロセス設計 計測の実践 できるところから 2. ベースになる基礎知識 計画的なセミナー 実践を伴う演習の導入 3. 取り組みのポイント 改革の必要性を理解することが必要 4. 技術の改革に先行して開始 SEIKO EPSON CORPORATION BS 事業部 2006 6 28
従来今後SEIKO EPSON CORPORATION BS 事業部 2006 6 28 プロセス設計 工程 プロセス設計 設計 実装 デバック なし個人の頭の中大日程 中日程 メカ ハード仕様書 個人のノウハウ 概要設計 手戻り 詳細設計 コーディング デバック メカ ハード仕様書 手戻り極小化 ソース自動生成 要求分析 要求仕様書 構造設計 設計 + デバック コーディング PFD によるプロセス設計
プロセス設計 プロセス フロー ダイヤグラム (PFD) 作業をプロセスと成果物の連鎖で表現する SEIKO EPSON CORPORATION BS 事業部 2006 6 28
プロセス設計 プロセス定義 成果物定義 プロセスと成果物を明確にする SEIKO EPSON CORPORATION BS 事業部 2006 6 28
従来今後SEIKO EPSON CORPORATION BS 事業部 2006 6 28 プロセス設計と計測 工程 見積もり 進捗管理 結果の評価 個人の経験測から見積スケジュール 詳細実績なし週単位の報告 詳細データなし工程データなし全体工数のみ 成果物視点の工数見積スケジュール 日々の実績入力 データ収集 実績集計による監視 スケジュール見直し対策検討 実績集計値 生産性指標見積データ フィードバック 見積精度向上 設計プロセス見直し
基礎知識の習得 1. ソフトウェア開発のベース知識 セミナー開催 40 回延べ聴講者 600 名 演習を交えたセミナー 要求分析 設計書の書き方 レビューの仕方 2. 取り組みのポイント 覚えたことを試して コンサルを受ける知識取得 練習 実践 言葉の統一 SEIKO EPSON CORPORATION BS 事業部 2006 6 28
技術導入のポイント 1. 構造化ではなくオブジェクト指向を選択 ハードルは高いが長期的に見てメリットあり 再利用しやすい 技術者のスキルアップ 2. パッケージレベルまではモデル化 実装はオブジェクト指向にこだわらない 時間制限のある部分は従来実装 3. 取り組みのポイント 良いコーチが必要 4. まず使えるかの判断を先行 SEIKO EPSON CORPORATION BS 事業部 2006 6 28
分析モデル UML を利用して分析モデルを作成 SEIKO EPSON CORPORATION BS 事業部 2006 6 28
シーケンス図による検証 シーケンス図でモデルの検証 SEIKO EPSON CORPORATION BS 事業部 2006 6 28
設計モデル 分析モデルから設計モデルを作成 SEIKO EPSON CORPORATION BS事業部 2006 6 28
成果 1 パッケージが疎結合になった 保守のしやすさ デバックのしやすさ 2 ソースコードの品質 世代間の品質比較 他社との比較 3 工程データと品質の因果関係 計測結果 障害発生の分析 工数配分の分析 分析結果をプロセスへフィードバック 4 ソースコード品質と障害の因果関係 SEIKO EPSON CORPORATION BS事業部 2006 6 28
パッケージ 1 パッケージ間の依存関係 相互依存をなくし 2 インターフェース パッケージ間インターフェース を固定にする SEIKO EPSON CORPORATION BS事業部 2006 6 28
ソースコード品質 新旧世代比較 機能性 標準適合性 100 80 再利用性 60 40 保守性 変更性 20 0 理解容易性 新規OO 新規非OO 他部門 1世代前 3世代前 2世代前 保守性 安定性 テスト容易性 世代間のソースコード品質比較 SEIKO EPSON CORPORATION BS事業部 2006 6 28
ソースコード品質 総得点比較 C社 初期 B社 洗練 B社 初期 標準適合性 変更性 安定性 テスト容易性 理解容易性 再利用性 他部門 1世代前 2世代前 3世代前 エプソン従来設計との差 他社事例 オブジェクト指向設計事 例が従来の設計から向上した差分 新規 0.00 100.00 200.00 300.00 400.00 500.00 600.00 他社とのソースコード品質比較 SEIKO EPSON CORPORATION BS事業部 2006 6 28
計測結果 成果物 0000プロジェクト計画など PFD スケジュール含む スケジュール含む 0000プロジェクト計画など PFD 0101POST88要求書 0101POST88要求書 0201パッケージ図 0201パッケージ図 合計 作業プロセス 685.63 345 476.75 合計 0000プロジェクト計画検討 0000プロジェクト計画検討 993.41 0100要求情報を整理する 分析作業を計画する 0100要求情報を整理する 分析作業を計画する 344.5 0200アーキテクチャ分析 0200アーキテクチャ分析 532.55 0301OS仕様書 0301OS仕様書 8.5 0300OSを選定する 0300OSを選定する 0401パッケージインターフェース 0401パッケージインターフェース 511 0400アーキテクチャ設計 タスク分割 インターフェース作成 0400アーキテクチャ設計 タスク分割 インターフェース作成 0402タスク構成 0402タスク構成 89.5 0500OSラッパ仕様を作成し設計実装する 0500OSラッパ仕様を作成し設計実装する 314.5 0501OSラッパ仕様書 OSラッパ実装 ラッパ実装 0501OSラッパ仕様書 OS 246 0700実装分割作業 構造化 OO 0700実装分割作業 構造化 OO 22.75 0701構造化 OO対象パッケージ 対象パッケージ 0701構造化 OO 6.5 0800FW2003 RTOSブリッジ調査 0800FW2003 RTOSブリッジ調査 0801利用可能な技術 0801利用可能な技術 77.11 0900要求分析 第 1回 0900要求分析 第1 10.5 1095.5 5.5 1740.02 0901第 0901第1回POST88要求仕様書 POST88要求仕様書 1324.15 1000従来実装部分構造化設計作業 1000従来実装部分構造化設計作業 1498.1 1001従来実装部分構造化設計書 1001従来実装部分構造化設計書 1259.35 1200OO分析モデル作成 1200OO分析モデル作成 672.75 1201OO分析モデル 1201OO分析モデル 555.25 3100要求情報を整理する 分析作業を計画する 3100要求情報を整理する 分析作業を計画する 3101POST88要求書 2回目 3101POST88要求書 2 220.1 9000プロセス管理 9000プロセス管理 3601OO分析モデル 3601OO分析モデル 47.75 9900その他 9900その他 5002部品運用マニュアル 5002部品運用マニュアル 9900その他 9900その他 3201第 3201第2回POST88要求仕様書 POST88要求仕様書 63 4372.68 502.5 86.1 248.07 2405.46 3200要求分析 第 2回 3200要求分析 第2 648.56 0600OSラッパ評価 0600OSラッパ評価 24 3600OO分析モデルを更新する 3600OO分析モデルを更新する 1.5 成果物別 プロセス別の作業時間計測 SEIKO EPSON CORPORATION BS事業部 2006 6 28
工程別実績 プロセス改善 工程別作業時間推移 800 700 その他 会議 打合せ 検査 講習 教育 製造 設計 調査 分析 600 500 400 300 200 100 0 2005-2005- 2005-2005- 2005-2005- 2005-2005- 2005-2005- 200502 03 04 05 06 07 08 09 10 11 12 概作業工程別作業時間推移 SEIKO EPSON CORPORATION BS事業部 2006 6 28
工程別実績 プロセス改善 実績工数と手戻りぬきの理想工数比較 6000.00 5000.00 4000.00 理想 実績 障害発生 3000.00 2000.00 1000.00 0.00 2005-2005- 2005-2005- 2005-2005- 2005-2005- 2005-200503 04 05 06 07 08 09 10 11 12 作業時間推移と手戻り時間の関連 SEIKO EPSON CORPORATION BS事業部 2006 6 28
障害分析 35% 30% 25% 20% 15% 設計 レビュー 実装 レビュー の各プロセスに 欠陥がある可能 性が高い このプロセスに ある不具合原因 を改善できれば 6割の手戻りを 削減できる 10% アルゴリズムミス 実装設計モデリング 要求仕様実現漏れ 要求分析 その他 設計モデリング アーキテクチャ設計 評価ミス パッケージインタフェース調整 不具合修正 タイプミス 仕様変更 デバッグ 評価設計 分析モデリング 5% 0% 障害原因分析 SEIKO EPSON CORPORATION BS事業部 2006 6 28
工程実績 障害発生 プロセス改善 1 障害の原因からプロセス見直し 設計レビューの充実 プロセス見直し 不具合を半減できれば 2 実績から特定メンバーへの負荷が判明 エキスパートに負荷が集中 集中した負荷で次の工程に影響 3 プロセスの課題ではなく人の育成も必要 レビュアーの育成 ここはOJTが良い SEIKO EPSON CORPORATION BS事業部 2006 6 28
ソースコード品質と障害の因果関係 1 ソースコード品質 パッケージレベルの分析 パッケージ別の障害数 因果関係 現時点では明確な傾向見えない 分析を継続してみる価値はありそうだが 2 (案)開発段階でのソース品質分析 実装段階で分析 結果を受けて設計 実装の見直し 3 (案)障害発生の防止に使える コードレビューの焦点を絞る 評価工程に入る前に対策実施し手戻りの排除 SEIKO EPSON CORPORATION BS事業部 2006 6 28
まとめ 1 現時点の適用状況 派生製品の開発に適用 プラットフォームとして機能拡張 2 当初目標に対する評価 ソースコード 構造の品質向上 プロセス設計のノウハウ取得 計測実績の活用 3 今後に向けて 改善の目標を設定し実績を評価 1Kloc当りの障害数 コード流用率 計測データにより効果を継続的に確認 SEIKO EPSON CORPORATION BS事業部 2006 6 28
最後に 1 プロセスを設計する 進め方を共有する 成果物を明確にする 2 計測する 工数と成果物の量を見積もる 工数を計測する 品質を計測する 3 分析しフィードバックする 実績を分析しプロセスを改善する SEIKO EPSON CORPORATION BS事業部 2006 6 28
SEIKO EPSON CORPORATION BS事業部 2006 6 28