非ソフトウェア開発者のための ソフトウェア開発委託の秘訣

RENTACO
RAC0086B
非ソフトウェア開発者のための
ソフトウェア開発委託の秘訣
2008年11月
株式会社レンタコーチ
http://homepage2.nifty.com/rent-a-coach/
Copyright© 2008 RENTACO. All Rights Reserved.
RENTACO
RAC0086B
概要
受講対象者
 組込みソフトウェアを内蔵する製品の開発責任者又はそ
れに準ずる非ソフトウェア技術者
習得事項
 ソフトウェア開発の特質
 製品に内蔵されるソフトウェアの開発委託おいて、納期及
び品質を確保するためのヒントと秘訣
備考:この講座では開発委託を取扱っているが、社内のソフトウェア部門、
又は自部門内のソフトウェアチームでのソフトウェア開発にも適用できる。
Copyright© 2008 RENTACO. All Rights Reserved.
2
RAC0086B
RENTACO
内容
ソフトウェア開発の特質
プロジェクト管理の秘訣
ソフトウェア開発プロセス
Copyright© 2008 RENTACO. All Rights Reserved.
3
RENTACO
RAC0086B
ソフトウェア開発の特質は何か?
形あるもので開発状況を把握できない
 設計書の枚数が多くても、その濃淡は不明
 コード量が計画通りでも、バグ量は不明
出来上がった成果物の評価は難しい
 設計書もソースコードもなければ、実行させて結果を見る
しか手がない。
Copyright© 2008 RENTACO. All Rights Reserved.
4
RENTACO
RAC0086B
開発の進行に伴い成果物が変わる
要求定義
方式設計
詳細設計
実装
単体テスト
要求
定義書
方式
設計書
詳細
設計書
モジュール
結合テスト
プログラム
総合テスト
出荷
媒体
モジュール
詳細
設計書
モジュール
プログラム
モジュール
Copyright© 2008 RENTACO. All Rights Reserved.
5
RENTACO
RAC0086B
ソフトウェア開発管理の鉄則
事前に方針、計画、基準等を作成しておく。
開発の進行状況を事前に作成した計画等に照らして
監視する。
実績と計画の差異が、事前に決めた基準を超過した
ら、是正処置を実行する。
開発プロセスを評価し、監視するしかない
Copyright© 2008 RENTACO. All Rights Reserved.
6
RENTACO
RAC0086B
ソフトウェア開発の成熟度と特徴
成熟度
特徴
レベル1:初期
プロセスは、通常、場当たり的で無秩序。
レベル2:管理された
管理されたとは,プロジェクトが計画され,実施され,
監視され,是正処置がとられるというPDCAの基本が
できているということである。
レベル3:定義された
定義されたとは,標準プロセス群が組織の中に確立し
ていて,それを実際のプロジェクトに適用する基準が作
用しているということである。
レベル4:定量的に管
理された
定量的に管理されていることによる利点は,プロセス
実績を予測できるようになることである。
レベル5:最適化して
いる
最適化しているとは,日常的に欠陥が分析され,プロ
セス改善が評価され,組織内に展開されている状態を
言う。
備考:CMMIにおける組織の成熟度を引用。
Copyright© 2008 RENTACO. All Rights Reserved.
7
RENTACO
RAC0086B
プロジェクト管理の秘訣は何か?
まず、開発計画を説明させる。
進捗管理として:
 定期的に進捗報告書を提出させる。
 計画に従って共同レビューを実施する。
品質管理として:
 DR計画とテスト計画を説明させる。
 品質指標を説明させ、進捗報告にその推移を加える。
変更管理として:
 計画書と仕様書の変更手続きを定める。
 変更依頼書を作成させ、進捗報告会や共同レビューの時
にその変更案を説明させる。
Copyright© 2008 RENTACO. All Rights Reserved.
8
RENTACO
RAC0086B
プロジェクト管理の分担
発注者の役割と責任
委託先
発注仕様の提示
開発計画、体制の説明
開発計画の承認
進捗報告、
共同レビューの実施
進捗、品質等に関する指示
基本的に委託先がプロジェクト管理を実施
Copyright© 2008 RENTACO. All Rights Reserved.
9
RENTACO
RAC0086B
開発計画書の確認事項
開発体制表が完成しているか?
 責任体制が明確か?
総括責任者、チーム責任者、品質責任者
 チーム構成とソフト構成が整合しているか?
 要員が配備され、役割が明確か?
開発工程表が完成しているか?
 ソフト構成図の構成要素がすべて記述されているか?
 主要な成果物を作成する作業がすべて記述されている
か?
 発注者側の作業との関連がすべて記述されているか?
ソフトウェア構成図が明解か?
成果物の体系図ができているか?
Copyright© 2008 RENTACO. All Rights Reserved.
10
RENTACO
RAC0086B
開発工程表の具体例
進度管理表(サンプル)
構成要素と作業項目
担当
01/4
01/5
01/6
01/7
01/8
01/9
▽某社へ出荷(8/6)
製品XY
調査
組合せ試験
総合試験
試験環境構築
甲
乙
乙
丙
ハード開発
(HW)
▽DR-A(4/27)
* 開発計画書50枚
☆
***
▽DR-E(8/30)
80件
☆☆ 30件
☆☆
▽DR-F(7/31)
***
モジュールA
設計
コーディング
ハードと組合せ試験
イ
イ
イ
*
モジュールB
設計
コーディング
単体試験
ロ
ロ
ロ
*
マニュアル
作成
ハ
Copyright© 2008 RENTACO. All Rights Reserved.
▽DR-B(5/30)
** 設計書100枚
2KS
***
☆ 40件
▽DR-D(6/29)
** 設計書300枚
10KS
☆ 400件
**
☆☆ 200枚
11
RENTACO
RAC0086B
定期的な進捗報告
全体進捗の把握には、必ず計画時に作成した開発
工程表を用いる。
構成要素ごとに進捗の経過、傾向を発注者が理解
できるように、時系列的に記録された報告書を用い
る。
 記載項目は、今週の状況、来週の予定、当面の目標とそ
の達成見通しとする。
問題の発生、その対応経過、最終処置が発注者に
一目で見える報告書を用いる。
 記載項目は、問題、期限、対策や要望、時系列的経過。
報告頻度は、毎週か隔週。
発注者が理解することより、委託先にプロジェクト管
理させることが目的。
Copyright© 2008 RENTACO. All Rights Reserved.
12
RENTACO
RAC0086B
開発状況表と問題点管理表の具体例
構成要素:xxxxxxxxx
報告日
日付
進捗状況
報告者:yyyyyy
次週の予定
当面の目標と
その見通し
構成要素:xxxxxxxxx
報告者:yyyyyy
問題点
経過
対策または 期限
要望
Copyright© 2008 RENTACO. All Rights Reserved.
経過
13
RENTACO
RAC0086B
共同レビュー
発注者と委託先が、プロジェクト進捗及び品質を共
同で評価するためのもの。
計画時に時期を決めるが、その候補として:
 基本設計又はアーキテクチャ設計の終了時
 テストの終了時
進捗報告会と異なり、次の効果を狙う:
 開発の節目に立ち止まり、全体を見渡す機会を提供する
(視野の拡大)
 説明資料をまとめることによって、開発状況や設計選択な
どを改めて整理できる(自浄作用)
Copyright© 2008 RENTACO. All Rights Reserved.
14
RENTACO
RAC0086B
開発工程とDRの具体例
開発計画レビュー
開発計画
基本設計
機能仕様レビュー
基本設計レビュー
詳細設計レビュー
プログラミングレビュー
テストレビュー
詳細設計
プログラミング
テスト
出荷準備
開発完了
Copyright© 2008 RENTACO. All Rights Reserved.
開発計画書
機能仕様書
基本設計書
性能仕様書
詳細設計書
テスト仕様書
プログラムリスト
テスト成績書
性能成績書
出荷物一式
開発完了報告書
15
RENTACO
RAC0086B
テスト計画書の確認事項
単体テストとして何を実施し、何を実施しないか。その理
由が明確になっているか?
結合テストに関して:
 設計仕様とテスト項目の関連付け(トレーサビリティの確
保)ができているか?
 結合テストをやる順序が考慮されているか?
 修正後の回帰テスト(一部のテストケース)が実施される
か?
テストに関連するスケジュール
 テスト仕様書はいつ作成され、レビューされるか?
 テスト環境の準備と構築が計画されているか?
 性能テストの実施時期が明確になっているか?
テスト終了条件が記述されているか? 定量的か?
Copyright© 2008 RENTACO. All Rights Reserved.
16
RENTACO
RAC0086B
テストの種類と手段
単体テスト
 パスカバレッジ(処理経路の網羅度)の測定
 コードレビューの実施
 静的解析ツールの利用
結合テスト
 設計仕様を確認するためのテスト項目の作成
 テスト項目に対応するテストケース(テスト手順とデータ)の
作成
 テスト環境の構築
 結合の順序に応じたテストケースの実行
 修正後の回帰テスト(一部のテストケース)の実施
Copyright© 2008 RENTACO. All Rights Reserved.
17
RENTACO
RAC0086B
品質指標
バグ数
 よく使われるのは発生バグ数、修正バグ数
 本質的には潜在バグ数、残存バグ数
テスト件数
 テスト密度
発生バグ
潜在バグ
発生バグ
残存バグ
試験前
試験中
試験終了時
潜在バグ数がわからないと、発生バグ数の時
系列傾向(S字曲線)から品質を判断する。
Copyright© 2008 RENTACO. All Rights Reserved.
18
RENTACO
RAC0086B
信頼度成長曲線
バグ曲線、S字曲
線等の呼び名が
あり、やり方も
様々。
発生バグ数
テスト時間、
最初は少ない
テスト工数等
テストすればバグが出る
バグの発生が飽和してくる
Copyright© 2008 RENTACO. All Rights Reserved.
19
RENTACO
RAC0086B
プロジェクト管理に関する要求事項
成熟度
成熟度2
成熟度3
成熟度4
要求事項
開発計画、DR計画、テスト計画の作成と提出
DR計画に従って共同レビューの実施
テスト計画に従ってテスト仕様書の作成と提出
バグ管理台帳、信頼度成長曲線の作成

標準的なレビュー手法の種類とその適用
標準的なテスト手法の種類とその適用
標準的なバグ管理の仕組みとその適用
プロセス監査の実施
定量的なバグ管理の仕組みとその適用
定量的なテスト終了条件の記載
Copyright© 2008 RENTACO. All Rights Reserved.
20
RENTACO
RAC0086B
ソフトウェア開発プロセス
共通フレーム2007
 対象は業務システムの開発
AutomotiveSPICE
 自動車メーカが発注する車載ソフトの開発
CMMI
 一般的なソフトの開発
Copyright© 2008 RENTACO. All Rights Reserved.
21
RENTACO
RAC0086B
共通フレーム2007:供給者の監視
取得プロセスは、ニーズを満たす製品を得ることを
目的とする。
取得プロセスを構成するアクティビティに「供給者の
監視」が含まれる:
 開始
 提案依頼書の準備
 契約準備及び更新
 供給者の監視
共同レビューと監査による監視
供給者への協力(情報の提供、未決定項目の解決)
 受入れ及び完了
Copyright© 2008 RENTACO. All Rights Reserved.
22
RENTACO
RAC0086B
共通フレーム2007:共同レビュー
共同レビュープロセスは、進捗及び品質に関する共通の
理解を利害関係者と共有することを目的とする。
共同レビューは次のアクティビティから構成される:
 プロセス開始の準備
レビューの実施
レビュー実施の資源の合意
レビュー事項の合意
問題点記録と解決
レビュー結果の配布
対処項目の責任と終了基準の合意
 プロジェクト管理レビュー
 技術レビュー
Copyright© 2008 RENTACO. All Rights Reserved.
23
RENTACO
RAC0086B
共通フレーム2007:監査
監査プロセスは、成果物及びプロセスが計画等に適合し
ているかを決定することを目的とする。
監査プロセスは次のアクティビティから構成される:
 プロセス開始の準備
監査時期の確認
監査者の選任と独立性の確保
監査資源の合意
監査計画の合意
監査指摘事項の記録
監査結果と対応策の報告
監査結果と対応策の合意
 監査
Copyright© 2008 RENTACO. All Rights Reserved.
24
RENTACO
RAC0086B
AutomotiveSPICE:サプライヤー監視
取得プロセス群
 サプライヤー監視
共同プロセス及び共同インタフェースに関する合意
すべての関連情報の交換
サプライヤーと技術的開発をレビュー
サプライヤーの進捗をレビュー
未解決項目のトラッキング
逸脱の是正
変更に関する合意
Copyright© 2008 RENTACO. All Rights Reserved.
25
RENTACO
RAC0086B
CMMI:供給者合意管理(成熟度2)
達成課題
実践項目
供給者合意を確
立する
調達される各成果物又は各成果物構成要素に関して、調達の種類
を決定する。
指定された要件及び確立された基準を満たすため、供給者の能力
の評価に基づいて供給者を選定する。
供給者との正式な合意を確立し維持する。
供給者合意を満
たす
供給者合意で扱われる指定された要件を満たすことを確実なものに
するため、商用市販の成果物の候補をレビューする。
供給者合意に明記されていることにしたがって、
供給者と共に活動を実施する。
調達した成果物を受入れる前に、供給者合意が
満たされていることを確実なものにする。
供給者から調達した成果物をプロジェクトへ移行する。
合意:agreement
Copyright© 2008 RENTACO. All Rights Reserved.
26
RENTACO
RAC0086B
CMMI:統合供給者管理(成熟度3)
達成課題
実践項目
成果物の供給源を
分析し選定する
プロジェクトの要件を満たすために使用されることがある、成果物の
潜在的な供給源を特定し分析する。
注文品及び市販品の成果物のどの供給源を使用するかを決定す
るため、正式な評価プロセスを用いる。
供給者とともに作
業を調整する
供給者によって使用される選定されたプロセス
を監視し分析する。
注文品の成果物については、選定された供給
者作業成果物を評価する。
条件の変更を反映するため、供給者との合意又は関係を適宜改訂
する。
Copyright© 2008 RENTACO. All Rights Reserved.
27
RAC0086B
RENTACO
まとめ
完成した成果物の評価より、開発プロセスの評価と監視
を重視する。
開発計画書を確認し、開発体制及び開発工程表がソフト
ウェア構成と整合しているかをチェックする。
時系列的に経過が理解できる進捗報告を用いる。
品質基準を確認し、その指標値の推移を監視。
テスト計画書を確認し、テストの達成状況を監視。
開発工程の節目に共同レビューを実施。
委託先の成熟度に応じて管理要求を変える。
Copyright© 2008 RENTACO. All Rights Reserved.
28