Disciplined Software Engineering Lecture #1

Disciplined Software
Engineering
Lecture #1
Software Engineering Institute
Carnegie Mellon University
Pittsburgh, PA 15213
Sponsored by the U.S. Department of Defense
Copyright © 1994 Carnegie Mellon University1
コースの目的
プロセスに基づくソフトウエア開発手法を紹介すること
個人のソフトウエアプロセス(PSP)を計測し分析する
方法を示すこと
個人のパフォーマンスを改善するためのプロセスデー
タの使用法を示すこと
これらの方法をソフトウェア開発以外のタスクに適用
する方法を示すこと
Copyright © 1994 Carnegie Mellon University2
一般的情報
前提条件
•何か一つのプログラミング言語を知っていて使えること
。
役にたつバックグラウンド
•基礎的統計に精通していること。
•簡単なフォーマル記法を読む能力があること。
設備
•開発環境が利用できる
•スプレッドシートが使える
Copyright © 1994 Carnegie Mellon University3
コース概要
始めに
1 講義
プロセス を計画すること
5 講義
欠陥管理
4 講義
設計プロセス
3 講義
プロセス開発
1 講義
PSP利用法
1 講義
Copyright © 1994 Carnegie Mellon University4
講義#1 概要
PSPの原則
•コストと利益
•個人のソフトウエアプロセス(PSP)概要
能力成熟度モデル(CMM)
•プロセス成熟度
•CMMとPSP
最初のPSP0プロセス
Copyright © 1994 Carnegie Mellon University5
PSPの原則‐1
ソフトウエアシステムの品質はその最も悪い部品の
品質に支配される。
ソフトウエア部品の品質はそれを開発した個人によっ
て支配される。
即ち個人の
• 知識
• 規範(discipline)
• コミットメント
によって支配される
Copyright © 1994 Carnegie Mellon University6
PSP原則‐2
ソフトウエア 専門家として自分自身のパフォーマンス
(効率、遂行能力)を知るべきである。
自分の仕事を計測し、追跡し、そして分析するべきで
ある。
自分のパフォーマンスのバラツキから学ぶべきである。
これらの教訓を個人的なプラクティス(慣習)の中に組み
入れるべきである。
Copyright © 1994 Carnegie Mellon University7
安定したPSPをもっていると
次の事ができる
•仕事の見積もりと計画
•コミットメントを遵守すること
•無理なコミットメントを押し付けられることへの抵抗
また
•自分の能力を理解するようになり
•能力改善がより上手にできるようになる
Copyright © 1994 Carnegie Mellon University8
PSPは以下のことをも提供する。
産業界水準の個人的な規範を開発し実行するための
証明済み基盤。
個人的プロセスの改善方法を示す規範。
生産性、品質、および予測可能性を継続的に改善する
ためのデータ。
Copyright © 1994 Carnegie Mellon University9
PSPとは何か?
ソフトウエアを開発するための個人的プロセス
• いくつかの定義されたステップ
• 帳票類
• 標準類
自分のプロセスを特徴づけることを支援するための
計測と分析の枠組。
自分のパフォーマンスの改善を支援する定義された
手続き。
Copyright © 1994 Carnegie Mellon University10
CMM とPSP-1
能力成熟度モデル(CMM)は先導的なソフトウエア
グループの支援を得てSEIによって開発された。
CMMは大規模ソフトウエア開発の最も効果的なプラ
クティスを記述している。
PSPは:
• CMMを適用する。
• 個人の仕事のためにある。
Copyright © 1994 Carnegie Mellon University11
CMMとPSP - 2
5
4
3
2
1
Level 1
Level 5
プロセス変更管理*
技術変更管理*
欠陥予防*
Level 4
ソフトウェア品質管理*
定量的プロセス管理*
Level 3
ピアレビュー*
グループ間調整
ソフトウェアプロダクトエンジニアリング*
ソフトウェア統合管理*
トレーニングプログラム
組織プロセス定義*
組織プロセス重視*
Level 2
ソフトウェア構成管理
ソフトウェア品質保証
ソフトウェア外注管理
ソフトウェア進捗管理*
ソフトウェアプロジェクト計画*
要件管理
*PSPキープラクティス
Copyright © 1994 Carnegie Mellon University12
CMM と PSP - 3
CMMは,効果的なプロセス管理のための枠組を用意
する。
それは,ソフトウエア専門家が規範化された個人的
方法に従うものと仮定している。
PSPは,規範化された個人の仕事のための枠組を用
意する。
それは,効果的なプロセス管理を仮定している。
Copyright © 1994 Carnegie Mellon University13
CMMとPSP - 4
管 理
S
E
P
G
ソフトウェア
開発作業
技術者
S
Q
A
/
S
C
M
SEPG - software engineering process group
SQA - software quality assurance
SCM - software configuration management
Copyright © 1994 Carnegie Mellon University14
PSP概要 - 1
PSPは7つの上向きにコンパティブルなステップで導
入される。
各ステップにおいて1つか2つの小規模プログラムを
書く。
作業に関するデータを集めて分析する。
作業を改善するためこれらのデータを使って分析
する。
Copyright © 1994 Carnegie Mellon University15
PSP の概要 - 2
PSP3
循環的開発
PSP2
コードレビュー
設計レビュー
PSP1
規模見積り
テスト報告t
PSP0
現行プロセス
時間記録
欠陥記録
欠陥型標準
PSP2.1
設計テンプレート
PSP1.1
タスク計画立案
スケジュール計画立案
PSP0.1
コーディング標準
規模測定
プロセス改善提案 (PIP)
Copyright © 1994 Carnegie Mellon University16
PSPの概要 ‐ 3
PSP0 - パフォーマンスの,計測されたベースラインを
確立する。
PSP1 - 規模,資源、およびスケジュールの計画をする。
PSP2 - 欠陥管理と摘出率(yield)管理を実習する。
PSP3 - PSP手法をより大規模なプロジェクトにスケ‐ル
アップする。
Copyright © 1994 Carnegie Mellon University17
コースを終了すると
レベル5の業界プロセスのキーエレメントを実習したことにな
る。
どの方法がもっとも効果的かがわかるようになる。
より良い仕事をするようになる。
長期的な改善目標をもつようになる。
Copyright © 1994 Carnegie Mellon University18
これまでのコースでの結果
以下の図はPSPコースの間に他の人々がどれくらい改
善したかを示す。
これらのデータは1994年春にCMUで行われたPSPコース
を受講した12人の学生のものである。
データは次に関するものである:
• コンパイル時間
• テストで発見された欠陥
• 生産性
Copyright © 1994 Carnegie Mellon University19
Compile Time Range
30
% of Total Time
時
間
比
率
(
%
)
25
Max
20
15
Avg
10
Min
5
0
1 2 3 4 5 6 7 8 9 1
Program Number
0
Copyright © 1994 Carnegie Mellon University20
D e f e欠陥数/KL
c ts /K L O C
Defects Found in Test Range
180
160
140
120
100
80
60
40
20
0
Max
Avg
Min
1
2
3
4
5 6
7
8
9 10
Program Number
Copyright © 1994 Carnegie Mellon University21
LOC/時間
H our
Li ne s of Co de pe r
Productivity Range
100
90
80
70
60
50
40
30
20
10
0
Max
Avg
Min
1 2 3 4 5 6 7 8 9 1
0
Program Number
Copyright © 1994 Carnegie Mellon University22
PSP0のプロセス
簡単な定義された個人のプロセス
現在使っている設計開発方法を使用する。
仕事に関する以下のデータを収集する:
• 工程毎に使用した時間
• コンパイルおよびテストで発見された欠陥の数
プロジェクト計画概要(計画兼報告)をつくる。
Copyright © 1994 Carnegie Mellon University23
PSP0のスクリプト‐1
参照 ‐ 付表 C10 (p.405)
計画立案 ‐ 開発時間を見積もる
開発 ‐ 現在の方法を使用して製品を開発する
事後分析 ‐ プロジェクト計画の要約を完了する。その中
には各工程に費やした時間、発見された及び作り込ま
れた欠陥についてまとめる。
Copyright © 1994 Carnegie Mellon University24
PSP0スクリプト‐2
設計‐現行の設計手法を使用してプログラムを設計する。
コンパイル‐欠陥がなくなるまでコンパイルする。
テスト‐プログラムをテストし全ての欠陥を修正する。
発見した全欠陥を欠陥記録ログの中に、工程毎に費
やした時間を時間記録ログの中に記録する。
Copyright © 1994 Carnegie Mellon University25
PSP0計画概要(要約)‐1
参照 ‐ 付表C14 (p.407)
ヘッダー ‐ 受講者、日付、プログラム名、講師、言語
開発にかかるトータル時間の最良見積値を記入する。
各工程で費やした実際の時間を分単位で記入する。
Copyright © 1994 Carnegie Mellon University26
PSP0 プロセス要素
プロセスのスクリプト
プロジェクト計画概要の帳票
時間記録ログ
欠陥記録ログ
欠陥型標準
Copyright © 1994 Carnegie Mellon University27
PSP0計画概要 ‐ 2
累積時間(Time-To Date)‐各工程において費やした時
間の現在までの累積値を記入する。 プログラム1Aに対
しては、この値はプログラム1Aに対して費やされた時間
である。
累積時間の割合(Time-To Date %)‐各工程の累積時
間(Time-To Date)のパーセントを記入する。
作り込みおよび除去した欠陥‐各工程で作り込まれた
欠陥及び除去された欠陥の実際の数を記入する。
Copyright © 1994 Carnegie Mellon University28
PSP0計画概要‐3
累積欠陥(Defects-To Date)‐各工程で作り込まれ,除
去された欠陥の現在までの累積数を記入する。 プロ
グラム1Aに対してはプログラム1Aで作り込まれ,除去
された欠陥数である。
累積欠陥数の割合(Defects-To Date %)‐各工程の累
積欠陥(Defects-To Date)のパーセントを記入する。
Copyright © 1994 Carnegie Mellon University29
PSP0 時間記録ログ‐1
参照 ー 付表C16 (P.409)
ヘッダー ー受講者、日付、講師、プログラム番号
日付ー現在の日付を記入する。
開始 ー一つのプロジェクト工程を開始する時の時刻を
分単位で記入する。
Copyright © 1994 Carnegie Mellon University30
PSP0時間記録ログ‐2
終了 ーたとえその工程を完了していなくても、ある
プロジェクト工程に関する仕事を停止する時にはその
時刻を分単位で記入する。
中断時間 ー開始から終了までの期間で中断によって
失った全ての時間を記入する。
差分時間ー 開始から終了までの経過時間から中断
時間を差し引いた時間を記入する。
Copyright © 1994 Carnegie Mellon University31
PSP0 時間記録ログ ‐ 3
工程
• 作業していた工程を記入する。
• 工程の名前を使う。
コメント ー次のことを記述する。
• 中断理由
• 実行していたタスク
• 作業に顕著に影響を与える他のもの何でも。
Copyright © 1994 Carnegie Mellon University32
欠陥記録ログ‐1
参照 ー 付表C18 (p.411)
ヘッダ‐ ー受講者、日付、講師、プログラム番号
日付 ー欠陥を発見し修正した日付を記入する。
番号 ー この欠陥の一意番号を記入する。各プロジェ
クトで1から始める。
Copyright © 1994 Carnegie Mellon University33
欠陥記録ログ ‐ 2
型 ー欠陥型標準から欠陥の型を記入する。
作込み ー欠陥が作り込まれたと判断する工程を記入
する。
除去 ー欠陥を発見し修正した工程を記入する。
Copyright © 1994 Carnegie Mellon University34
欠陥記録ログ ‐ 3
修正時間 ‐ 欠陥の修正にかかった時間を記入する。
正確に時間を測るか、あるいは最良の判断で記入 す
る。
修正欠陥 ‐ もしこの欠陥が他の欠陥の修正中に作り
込まれたのであれば、その欠陥の番号を記入するか
またはもし知らなければXを記入する。
説明 ‐ 欠陥とは、プログラムが適切に開発され、改善
され、あるいは使用されるために変更されなければ
ならないそのプログラムの中の全てのものである。
Copyright © 1994 Carnegie Mellon University35
欠陥型標準 ‐ 1
参照 ー付表 C20 (p.413)
欠陥型標準は欠陥カテゴリーの一般的な集合を提供
する。
この標準を自分自身の標準で置き換えても良いが、
変更をガイドするデータを所有するまでは簡単な型標
準をじっくり使っていく方が一般に賢明である。
Copyright © 1994 Carnegie Mellon University36
欠陥型標準 ‐ 2
PSP欠陥型は次のようになる :
10 - 文書
20 - 構文
30 - ビルド、パッケージ
40 - アサインメント
50 - インタフェース
60 - チェッキング
70 - データ
80 - 機能
90 - システム
100 - 環境
Copyright © 1994 Carnegie Mellon University37
演習課題 #1
テキストのまえがきと第1章、第2章を読むこと。
PSP0を使ってプログラム1Aを書くこと。(P.488-9)
プログラム仕様については付録Dを見ること。(P.376-9,
405-413)
PSP0の定義と例については付録Cを見ること。
提出物とそれらの順序と内容については付録Cの中に
ある仕様に従うこと。
Copyright © 1994 Carnegie Mellon University38
プログラム 1A
一連の数値の標準偏差を計算せよ。その時n個の
数値はリンクリストに保有されている。標準偏差は次の
ように計算される:
 x
n
Std   
i 1
 x avg 
2
i
n 1
i は数値に対するインデックス、そして Xavg はこれら
の数値の平均値である。
Copyright © 1994 Carnegie Mellon University39
示唆 ‐ 1
プログラムは単純にすること。小さなプログラムからでも
大きなプログラムと同様に多くのことを学ぶであろう。
レポートと標準は単純に,かつ短くすること。
必要ならPSP教材を自由にコピーしたりそれを素材に
してもよい。
一回目に正しくやること。確信がなければ納得できる
までやりなさい。
Copyright © 1994 Carnegie Mellon University40
H our s
Actual Time Range
20
18
16
14
12
10
8
6
4
2
0
Max
Avg
Min
1
2
3
4
5
6
7
8
9 10
Program Numbe r
Copyright © 1994 Carnegie Mellon University41
示唆 ‐ 2
ソフトウエアは個人ビジネスではないので、1人だけで仕事を
する必要はない。
しかしながら、見積もり、設計、及びコードは自分自身で
つくらなければならない。
他の人に自分の仕事をレビューしてもらい、その結果とし
て自分の仕事を変更しても良い。
あなたのプロセスレポートの中にこの支援について触れ、あ
なたと仲間が使ったレビュー時間を含め、発見した欠陥に
ついて記録すべきである。
Copyright © 1994 Carnegie Mellon University42
PSP0評価基準
プロセスレポートは
• 完全で、
• 読みやすく、
• 規定した順序を守らなければならない。
プロセスデータは
• 正確で、
• 精度がよく、
• 自己完結的でなければならない。
Copyright © 1994 Carnegie Mellon University43
講義1から記憶すべきメッセージ
1 - PSPはあなたが良い仕事をするように支援する
ための1つの定義されたプロセスである。
2 - 一旦このコースを終了した時には、あなたは将来の
ニーズに適応させるためにPSPを調整し拡張する 方
法を知ることになる。
3 - PSP0を使用する際、第1の目標は仕事に関する
正確で完全なデータを集め報告することである。
Copyright © 1994 Carnegie Mellon University44