PSPガイドブック ソフトウェアエンジニア自己改善
PSPガイドブック ソフトウェアエンジニア自己改善 (IT Architects’ Archiveソフトウェア開発の課題)
翔泳社
著者:Watts S.Humphrey
訳者:JASPIC TSP研究会
日本語翻訳版への序文
監訳者まえがき
まえがき
ソフトウェアエンジニアであること
品質問題
ソフトウェアエンジニアであるメリット
誰がPSPを学ぶべきか?
本書がとるアプローチ
PSPを学ぶには何が必要か?
本書の概要
サポート資料
本書の背景と来歴
謝辞
目次
第1章 パーソナルプロセスの戦略
1.1 PSPの目的
1.2 ソフトウェアエンジニアリング規律の論理
1.3 規律ある開発プラクティスを使う
1.4 実施可能なプロセス
1.5 パーソナルプロセスを定義して使う
1.6 パーソナルプロセスを使うことを習得する
1.7 チームソフトウェアプロセスへの準備
1.8 まとめ
参考文献
第2章 パーソナルプロセスのベースライン
2.1 プロセスとは何か?
2.2 あなた自身のプロセスを定義する
2.3 ベースラインプロセスの内容
便利な仕事の構造
計測のフレームワーク
改善の基礎
2.4 なぜフォームが助けになるのか?
2.5 PSPプロセス要素
計画立案フェーズ
事後分析フェーズ
2.6 PSP0プロセス
2.7 PSP0の計測の尺度
2.8 時間記録
2.9 欠陥記録
修正時間
多重欠陥の問題
2.10 PSP0プロジェクト計画サマリー
2.11 コンパイルフェーズ
2.12 インクリメンタル開発
2.13 PSP支援ツール
2.14 まとめ
2.15 演習
第3章 ソフトウェア規模の測定
3.1 規模尺度
計画立案で規模尺度を使う
3.2 データベース規模勘定の標準を確立する
3.3 LOC勘定の標準を確立する
3.4 規模の勘定
3.5 規模のデータを使う
計画立案のために規模尺度を使う
プログラムの品質を評価する
あなたの個人作業を評価する
3.6 生産性を計算する
3.7 規模カウンタ
物理LOCカウンタ
論理LOCカウンタ
プログラム要素を勘定する
コーディング標準と物理行カウンタを使う
削除行と修正行を勘定する
3.8 他の規模尺度
3.9 まとめ
3.10 演習
参考文献
第4章 計画立案
4.1 計画立案プロセス
4.2 なぜ計画を作成するのか?
4.3 計画とは何か?
4.4 ソフトウェア計画の内容
4.5 ソフトウェアプロジェクトの計画立案
計画立案フレームワーク
4.6 概念設計
4.7 計画の品質
4.8 計画立案の課題
要件の抜け
見積もりと計画立案のためのツール
作業範囲記述書
4.9 まとめ
参考文献
第5章 ソフトウェア見積もり
5.1 規模見積もりの原理
5.2 概念設計
5.3 プロキシベースの見積もり
プロキシを選ぶ
使用可能なプロキシ
プロキシとしてのクラス
5.4 見積もりにプロキシを使う
5.5 相対規模の表を作る
5.6 見積もりで考慮すること
見積もりの正確さを向上する
見積もりにおける偏り
不完全な知識から来る偏り
補正のしすぎ
抽象化レベルを選ぶ
大規模システム
前例のない製品
5.7 まとめ
第6章 PROBE見積もり手法
6.1 データから見積もる
6.2 プロキシベースの見積もり
PROBEステップ 1 概念設計
PROBEステップ 2 部品の規模を見積もる
PROBEステップ 3 再利用部品とベース追加の規模を見積もる
PROBEステップ 4 規模見積もりの手続き
PROBEステップ 5 時間見積もりの手続き
PROBEステップ 6 予測区間
6.3 限られたデータで見積もる
6.4 見積もり実施例
6.5 プログラミングでない仕事を見積もる
6.6 PROBEを使用する際の考慮事項
見積もりのプラクティス
見積もりの判断
外れ値
限られたデータを使う
補正のしすぎ、補正の不足
6.7 まとめ
6.8 演習
第7章 ソフトウェア計画立案
7.1 計画要件
アクセス可能か?
明確か?
具体的か?
精密か?
正確か?
7.2 プロジェクト計画と期間計画
7.3 スケジュールを作る
タスク時間を見積もる
タスク時間を管理する
7.4 スケジュールを作る
7.5 獲得価値
7.6 獲得価値の例
7.7 EVの例に関するコメント
7.8 見積もりの正確さ
7.9 予測区間
7.10 変更に対してマネジメントに警告する
7.11 計画立案での考慮事項
動機づけ
生産性
非常勤配属
7.12 まとめ
7.13 演習
参考文献
第8章 ソフトウェア品質
8.1 PSPの品質戦略
8.2 ソフトウェア品質とは?
製品品質
8.3 ソフトウェア品質の経済学
8.4 欠陥型
8.5 個人の品質プラクティス
8.6 品質尺度
除去率という品質尺度
品質コスト(COQ)
レビュー率尺度
フェーズ時間比率品質尺度
プロセス品質指標(PQI)
8.7 品質マネジメント
8.8 個人の品質マネジメント
8.9 製品品質を管理する
8.10 PSP改善プラクティス
8.11 欠陥予防
8.12 まとめ
参考文献
第9章 設計レビューとコードレビュー
9.1 レビューとは何か?
9.2 なぜプログラムをレビューするのか?
9.3 レビューの原理
すべての欠陥を見つけて修正することを目標にあなたの成果物のレビューを行う
チェックリストを使い、構造化されたレビュープロセスに従う
実証されたレビュープラクティスに従う
自分のレビューを計測する
あなたのレビューを改善するためにデータを使う
レビュー可能な成果物を作る
欠陥を予防するためにデータを使う
9.4 PSPのコードレビュープロセス
9.5 コードレビューチェックリスト
チェックリストを作る
チェックリストを更新する
コーディング標準に照らしてレビューする
チェックリストを使う
レビュー戦略
9.6 設計レビュー
9.7 設計レビューの原理
レビュー可能な設計をする
明確な設計レビュー戦略に従う
段階を分けて設計をレビューする
設計が不完全ならコードをレビューする
ロジックが要件を正しく実装しているかを検証する
安全やセキュリティの問題をチェックする
9.8 レビューの尺度
レビューの欠陥除去率
欠陥除去率の見積り
欠陥密度
レビュー率
欠陥除去影響度
9.9 レビューの課題
レビューのプラクティス
スクリーン上でのレビュー
レビューの経済学
レビュー効率
コンパイル前または後にレビューする
レビュー目標
レビューとインスペクションの関係
9.10 まとめ
9.11 演習
参考文献
第10章 ソフトウェア設計
10.1 設計とは何か?
抽象化の力
抽象化の問題
抽象化の問題を解決する
10.2 なぜ設計するのか?
10.3 設計プロセス
要件の不確定性
学習プロセスとしての設計
プロトタイピング
10.4 設計のレベル
要件の定義
設計仕様
上位レベル設計(HLD)
詳細レベル設計(DLD)
実装レベル設計(ILD)
10.5 設計と開発戦略
戦略ガイドライン
開発戦略の例
開発戦略を選択する
10.6 設計の品質
設計の精密さ
設計の完全性
ユーザの要求
10.7 まとめ
参考文献
第11章 PSP設計テンプレート
11.1 設計表現
精密な論理記法
論理記法の使用
11.2 設計テンプレート
11.3 操作仕様テンプレート(OST)
11.4 機能仕様テンプレート(FST)
11.5 状態仕様テンプレート(SST)
11.6 論理仕様テンプレート(LST)
11.7 状態マシンの設計例
Login状態マシンの例
探索状態マシンの例
11.8 PSP設計テンプレートを使用する
UMLとの比較
再設計
11.9 大規模設計に設計テンプレートを使用する
11.10 まとめ
11.11 演習
参考文献
第12章 設計検証
12.1 プログラムを検証する理由
12.2 設計標準
製品の規約
製品の設計標準
再利用標準
12.3 実行表による検証
12.4 トレース表による検証
トレース表の例
トレース表のプラクティス
12.5 状態マシンの検証
完全性と直交性
完全な機能
直交的な機能
完全かつ直交的な機能
状態マシンが適切であることの検証
状態マシンの検証例
LogInの状態マシンの検証
探索状態マシンの検証
12.6 ループの検証
forループ検証
whileループ検証
repeat-until検証
12.7 他の分析的な検証手法
分析的な検証の問題
自動検証
検証手法
12.8 検証に関する考察
検証戦略
検証プラクティス
12.9 まとめ
12.10 演習
参考文献
第13章 プロセスの拡張
13.1 開発プロセスをカスタマイズする
13.2 なぜプロセスを定義するのか?
13.3 PSPプロセス戦略
13.4 プロセスを定義する
プロセス要素
プロセス定義
プロセスニーズとゴールを決める
13.5 プロセスの発展
現在のプロセスの特徴を記述する
目標プロセスの特徴を記述する
プロセス開発戦略
初期プロセスを定義する
初期プロセスの妥当性を確認する
13.6 プロセスの例
プロセス開発プロセス(PDP)
PSP3.0プロセス
プロトタイプ実験プロセス(PEP)
製品保守プロセス(PMP)
13.7 プロセス開発での考慮事項
13.8 まとめ
13.9 演習
参考文献
第14章 パーソナルソフトウェアプロセスを使う
14.1 開発における課題
コミットメントを交渉する
プロジェクトをコントロールし続ける
品質の良い製品を引き渡す
効果的なチームワークを持続する
14.2 チームソフトウェアプロセス(TSP)
14.3 TSPの論理
14.4 チーム構築
14.5 TSP立ち上げプロセス
14.6 TSPコーチ
14.7 自分のプロジェクトを管理する
計画を維持する
進捗を追跡する報告する
変更を管理する
TSPの品質管理
14.8 TSPの成果
14.9 チームワークの報酬
14.10 1つしかないTSPチーム
自分の作業を計画し管理する
効果的なパーソナル手法を使う
自分の強みと弱みを知る
実践、実践、そして実践
過去から学ぶ
新しい手法を見つけそして学ぶ
14.11 ソフトウェアエンジニアリングをあなたの将来
参考文献
PSP定義
PSP0で導入される用語
PSP0 プロジェクト計画サマリー
時間記録のログ
欠陥記録のログ
PSP0.1で導入される用語
PSP0.1 プロジェクト計画サマリー
PSP1.0で導入される用語
PSP1.0 プロジェクト計画サマリー
規模見積もりテンプレート
線形回帰
PSP1.1で導入される用語
PSP1.1 プロジェクト計画サマリー
タスク/スケジュール計画立案テンプレート
PSP2.0で導入される用語
PSP2.0 プロジェクト計画サマリー
PSP2.1で導入される用語
PSP2.1 プロジェクト計画サマリー
状態仕様テンプレート(SST)
索引
翻訳者あとがき