個人依存開発から組織的開発への移行事例 ~ 要求モデル定義と開発プロセスの形式化 による高生産性 / 高信頼性化 ~ 三菱電機メカトロニクスソフトウエア ( 株 ) 和歌山支所岩橋正実 iwahashi@est.hi-ho.ne.jp Iwahashi.Masami@wak.msw.co.jp 1
改善効果 品質 : フロントローディングが進み流出不具合 0 継続生産性 : 平均 130% 改善 工数割合分析 残存誤り件数 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% システムテスト総合テスト単体 / 結合テスト実装ソフトウェア設計要求分析 2009 年度 2010 年度 2011 年度 2012 年度 0% 2006 2007 2008 2009 2010 2011 2012 上 2
AOO 技法のポイント 自律オブジェクト指向 (AOO:Autonomic architecture base Object-Oriented development technique) が 1998 年に組込みソフトウェア開発向けオブジェクト指向の開発手法として発表 その後 AOO は プロセス (AOO_PRS) プロダクトライン (AOO_SPL) 見積り (AOO_EST) 形式手法 (AOO_DSL) と拡張してツールとして提供準備中 AOO は, オブジェクト指向技術に基づき要求を表形式と日本語により厳密にモデルを定義した上で分析 設計 実装 テストの双方向のトレーサビリティを確立. 開発上で発生する課題をアーキテクチャ ( 文書 / コードのフレーム ) とアーキテクチャに落とし込む開発プロセスにより組織的な課題抑制を可能にする. 以下に AOO 技法のポイントを示す. 1 要求の発生源と目的定義 2 要求のカテゴリによる目的分解整理 3 表形式と日本語による要求モデル 4 日本語形式記法 5 製品内と製品間の共通部定義 6 類型化の推進 7 自律化による要素間の依存関係の排除 8 競合 / 例外 / 時間制約の解決 9 重複情報及び重複作業の徹底した無駄取り 10 プロセス形式化と双方向のトレーサビリティによる定型化と自動化 11 アジャイル / 派生機種 / ソフトウェアプロダクトライン開発の対応 12 要求モデルと標準プロセスに基づく見積り技法 13 要求モデルに基づく開発管理技法 3
個人依存の開発のリスク 国内競争及びグローバル展開の機能量の増加とリードタイム短縮は個人依存した組織では対応できず事業の衰退化が進むリスクがある 過去の資産優先と高年齢化 情報共有の停滞 組織の大規模化 役割の制約 1 分析 / 設計精度の低下限られた要員で規模の増加に対応する為に分析や設計の精度を落として実装を先行してしまう傾向がある. テストでこれをカバーしようするが分析や設計の精度が低いためにテストの実行精度も低下することになり品質を確保することが困難になる傾向がある. 2 外注依存による品質低下作業負荷増加とコスト制約に対応するためにオフショアを含めた外注企業に委託するケースが多くなる傾向にある. 外部依存が進むことにより品質を確保することが困難になる傾向がある. 4
AOO: 要求モデリングと目的指向開発 要求の発生源と目的を定義する事による組織全体のフロントローディングと要求の改善提案を可能にして要求の価値と仕様構築スピードの向上を進める 市場要求 営業サービス部門 1 顧客価値に基づく事業目標の定義顧客に継続的な価値を提供する 仕様構築部門 2 事業目標に基づくシステム機能目的の定義事業目的を達成するために 製品ごとにシステム機能目的を定義する ソフトウェア開発部門 機能仕様物理項目目的操作目的属性状態 xxxシステム機能仕様機能項目 1.1.xxx 目的操作目的属性 1.xxx xxxシステム 1.2.xxx 1.3.xxx 1.xxx 1.1.xxx 2.1.1.xxx 2.xxx 2.1.xxx 1.2.xxx 2.1.2.xxx デバイス 2.1.xxx 2.xxx 2.2.1.xxx 2.2.xxx 2.2.2.xxx 事業目的を達成する為の課題の定義と解決で顧客に価値を提供する 3 システム機能目的に基づく機能目的の定義システム機能目的を達成する機能目的を定義して製品開発を進める 状態 目的の発生源を見極める全ての作業には目的があり目的達成が事業及び顧客に価値を提供するか常に考える
AOO_PRS: 開発プロセス ソフトウェア要求分析 1 オブジェクト属性操作時間 1 xxx aaa F1 2 P1 P11 P111 P111 入力処理 P112 P2 P21 P211 ControlManager ObjectManager 機能項目目的属性操作時間 1 xxx aaa F1 2 物理項目目的属性操作時間 機能ブロック記述 P1 P11 P111 P112 例外マトリクス E01 E02 E03 XXXタイマー P2 F1 P21 P211 F2 1 機能マトリクス F12 F21 1 2 F121 F211 2 1 2 F21 F21 F211 F21 F21 F211 ソフトウェアアーキテクチャ設計 ソフトウェア詳細設計 機能 S/W マトリクス 機能ブロック記述 XXXタイマー Object Manager Output F1 F2 M3.3 M3.2 M3.1 M2.2 M2.1 M1.3 M1.2 M1.1 Fi 3 ControlManger M3.4 1.xxx 1.1.xxx I I 1.2.xxx I R 2.xxx 2.1.xxx I R R 2.2.xxx 2.2.1.xxx I R 出力 2.2.2.xxx I RW M3.5 1.xxx 1.1.xxx I R R R Input ControlJuge 1.2.xxx I R R R R 1.3.xxx I R RW 2.xxx 2.1.xxx 2.1.1.xxx I RW 2.1.2.xxx I RW 実装 O111( ソースコード ) if(xxxx) if(xxx) aaa_st=xxxx*2; aaa(); Aaa(){ Xxxxxxxx; Xxxxxxxxxxx; Xxx_ti=START; } ソフトウェア総合テスト 1 機能項目目的属性操作時間試験手順 1 xxx aaa F1 2 物理項目目的属性操作時間 P1 P11 P111 P112 F1 F2 P2 P21 機能マトリクス P211 F12 F21 P111 入力処理 1 2 F121 F211 1 2 単体テスト 期待値 例外マトリクス E01 E02 E03 1 2 F21 F21 F211 F21 F21 F211 ソフトウェア結合および結合テスト 機能ブロック記述 XXX タイマー オブジェクト属性操作時間出力結果 1 xxx aaa F1 2 P1 P11 P111 P112 P2 P21 Input P211 ControlJuge ControlManager ObjectManager Output ControlManger Object Manager 6
AOO_DSL: 要求の形式化 1) 要求のカテゴリ化と機能ブロック / 属性の形式化 2) 形式記法を用いた機能仕様の日本語による形式化 3) 機能ブロック / 属性の再利用によるDSL 化の推進 要求 要求 機能項目リスト 機能項目 1.xxx 2.xxx 制御マネージャ 1.1.xxx 1.2.xxx 2.1.xxx 物理項目リスト 物理項目 2.2.xxx 2.2.1.xxx 2.2.2.xxx 目的操作目的属性 目的操作目的属性 機能ブロック 機能ブロック 機能仕様で扱う名詞の定義して形式記法で仕様定義更に 1 機能項目内を目的で分解して機能ブロックを定義機能ブロックの再利用による要求分析定義の生産性向上 文書コード生成検証の実現 DSL 要求 1.xxx 2.xxx デバイス 1.1.xxx 1.2.xxx 1.3.xxx 2.1.xxx 2.1.1.xxx 2.1.2.xxx 1and2 1 外気温度 >10 2 運転モード = 冷房 XXX 制御状態 制御中 XXX 制御状態 = 制御中 ドメイン形式記述 1 機能項目 1 目的として階層的にカテゴリ化を進める 形式記述言語 7
AOO_SPL: ソフトウェアプロダクトライン 製品 A 要求製品 B 要求製品 C 要求 1 機能項目 1 目的で カテゴリで分類整理 オブジェクトに変換 ( 可変性の継承 ) 製品間の可変性を分析して可変ポイント ( バリエーションポイント ) と可変部分 ( バリアント ) を定義する 1 要求の物理と目的 ( 機能 ) で分解整理してソフトウェアと双方向に紐付することで SPL 開発を可能にする 2 フレームワークをドメイン依存として構築すると中長期開発で破綻するリスクがある 状態遷移 状態に基づく操作 競合解決 バリエーション解決は 多くの組込み制御システムに共通であり 共通フレームワーク上で実現することで SPL 開発を成功させる 機能項目名称 1.1.xxxx 機能目的 XXXXXXXXXXXXXXXXXXX バリエーションポイント バリアント 機種 A,B 機種 C 機種 D 開始条件 標準 北米 欧州 << 開始条件 >> < 標準 > < 北米 > < 欧州 > 8
プロセスの形式化からシステム化へ ソフトウェア要求分析 1 オブジェクト属性操作時間 1 xxx aaa F1 2 P1 P11 P111 P111 入力処理 P112 P2 P21 P211 ControlManager ObjectManager 機能項目目的属性操作時間 1 xxx aaa F1 2 物理項目目的属性操作時間 機能ブロック記述 P1 P11 P111 P112 例外マトリクス E01 E02 E03 XXXタイマー P2 F1 P21 P211 F2 1 機能マトリクス F12 F21 1 2 F121 F211 2 1 2 F21 F21 F211 F21 F21 F211 ソフトウェアアーキテクチャ設計 ソフトウェア詳細設計 機能 S/W マトリクス 機能ブロック記述 XXXタイマー Object Manager Output F1 F2 M3.3 M3.2 M3.1 M2.2 M2.1 M1.3 M1.2 M1.1 Fi 3 ControlManger M3.4 1.xxx 1.1.xxx I I 1.2.xxx I R 2.xxx 2.1.xxx I R R 2.2.xxx 2.2.1.xxx I R 出力 2.2.2.xxx I RW M3.5 1.xxx 1.1.xxx I R R R Input ControlJuge 1.2.xxx I R R R R 1.3.xxx I R RW 2.xxx 2.1.xxx 2.1.1.xxx I RW 2.1.2.xxx I RW AOO 開発支援 Tool 実装 O111( ソースコード ) if(xxxx) if(xxx) aaa_st=xxxx*2; aaa(); Aaa(){ Xxxxxxxx; Xxxxxxxxxxx; Xxx_ti=START; } ソフトウェア総合テスト 1 機能項目目的属性操作時間試験手順 1 xxx aaa F1 2 物理項目目的属性操作時間 P1 P11 P111 P112 F1 F2 P2 P21 機能マトリクス P211 F12 F21 P111 入力処理 1 2 F121 F211 1 2 単体テスト 期待値 例外マトリクス E01 E02 E03 1 2 F21 F21 F211 F21 F21 F211 ソフトウェア結合および結合テスト 機能ブロック記述 XXX タイマー オブジェクト属性操作時間出力結果 1 xxx aaa F1 2 P1 P11 P111 P112 P2 P21 Input P211 ControlJuge ControlManager ObjectManager Output ControlManger Object Manager 9
ご清聴ありがとうございました 詳細お問い合わせは先三菱電機メカトロニクスソフトウエア株式会社岩橋正実 073-436-0776 iwahashi@est.hi-ho.ne.jp Iwahashi.Masami@wak.msw.co.jp 10