内容紹介
動くソフトウェアに価値をおくための原則と規律を知る
反復型ソフトウェア開発とは、タイムボックスとよばれる固定された期間を繰り返しながら機能を少しずつ追加していく、ソフトウェアの開発手法です。
本書は、複数の外資系ソフトウェア企業で働いた著者の実践経験をもとに、ソフトウェア開発プロジェクトを制御するために理解すべき原則と、従うべき規律を説明します。反復型ソフトウェア開発の基本から高度な応用まで、豊富な情報が満載です。
このような方におすすめ
* プログラマ、ソフトウェア開発者
・3~5 年程度のソフトウェア開発経験がある人
・プロジェクトチームをリードする立場にある人
・プロジェクトチームの運営について問題意識をもっている人
・開発中の製品の品質を制御できなくて困っている人
・ウォーターフォール型の開発プロセスを卒業したい人
目次
主要目次
まえがき
第1章 ソフトウェアを育てる準備
第2章 チームの役割と責務
第3章 タイムボックスとビルドの運用
第4章 構成管理とブランチの戦略
第5章 再現可能なビルドの実現
第6章 バグの追跡と解決
第7章 テストケースの自動化
第8章 開発プロセスの構築
あとがき
詳細目次
推薦の言葉
まえがき
第1章 ソフトウェアを育てる準備
1.1 健康なソフトウェアを育てるには
ソフトウェア開発プロジェクトの目的
ソフトウェア開発は並行開発
ビルド中心の生活
1.2 ソフトウェアの進化と寿命
ソフトウェアの進化と生物の進化
ソフトウェアの進化は「計画的」
ソフトウェアの寿命が尽きるとき
ソフトウェアの老化
ソフトウェアをすくすくと進化させる
1.3 ソフトウェアを上手に育てる
健康なソフトウェアを育成するポリシー
1.4 まとめ
第2章 チームの役割と責務
2.1 チームの役割と責務とは
チームを適切に構成する
ソフトウェア開発に必要なディシプリンの種類
プロジェクトチームの構成
ロールは帽子のようなもの
2.2 ソフトウェア開発に必要なロールの種類
マネジメントにかかわるロール
PM(プログラムマネージャ)のロール
開発者のロール
テスターのロール
その他のロール
2.3 機能チーム
機能チームの構成
機能チームはミニプロジェクトチーム
2.4 その他のロール
チャンピオン
ドライバ
2.5 まとめ
第3章 タイムボックスとビルドの運用
3.1 タイムボックスによる反復の構築
作業を箱に詰める
3つの制約とタイムボックス
タイムボックスを階層的に構成する
フィーチャーボックスを避ける
3.2 マイルストーンの運用
マイルストーンとは
マイルストーン計画
マイルストーンの出口条件
マイルストーンビルドとは
マイルストーンにおける作業項目の追加
マイルストーンにおける作業項目の削除(延期)
マイルストーンに名前をつける
最初のマイルストーンによるプロジェクトの計画と準備
マイルストーンの中でリリースするビルド
3.3 製品を段階的に凍結する
仕様書を書く
ほにゃららコンプリートとほにゃららフリーズ
機能駆動による開発
製品を安定化させる
製品を検証する
3.4 イテレーションの運用
イテレーションの計画と運用
イテレーションでリリースするビルド
3.5 ウィークリービルドの運用
ビルドの世代交代
ビルドの状態遷移
ビルド曜日とリリース曜日を決める
3.6 ビルドのリリース範囲と管理
タイムボックスの階層とビルドのリリース範囲
ビルドに番号を付ける
バージョンに番号をつける
バージョン情報の書式
3.7 そのほかのビルドの分類
3.8 まとめ
第4章 構成管理とブランチの戦略
4.1 ソフトウェア構成管理と支援ツール
ソフトウェア構成管理
SCMツールの活用
SCMツールの用語と概念
4.2 SCMツールの基本
SCMツールの構成
更新の操作
コミットの操作
リポジトリで管理すべきファイル
4.3 チェンジセット
タスクレベルコミット
チェンジセット番号
タグ
ファイルセット
4.4 サンドボックス
清潔なサンドボックス
サンドボックスの構築手順の確立と文書化
複数のサンドボックスを構築する
4.5 コミットの手順
コミットするときによくある失敗
コミットの手順
コミットフックの活用
コミットポリシーの準備
4.6 ブランチを切る
ブランチとは
ブランチの分類
メインラインの分類
保守ブランチの分類
開発ブランチの分類
ブランチポリシーの準備
ブランチポリシーとコードラインのまとめ
4.7 ブランチのプロモーション
4.8 チェンジをポートする
ポートの操作
バックポートとフォワードポート
バルクポートとさくらんぼ摘みポート
ベースラインとリベース
マージの追跡
4.9 チェンジのプロモーション
4.10 大規模な開発への対応
段階的統合ブランチの命名規則
バグを修正すべきブランチはどこ?
4.11 その他の管理と運用
構成管理者の責務
SCMサーバの管理を外部のチームに委託する
誰がブランチを切る?
ブランチへのアクセスを制御する
ブランチを廃棄する
4.12 ブランチを上手に使うためのプラクティス
4.13 まとめ
第5章 再現可能なビルドの実現
5.1 ビルドの基本
ビルドの概略
ビルドを料理にたとえると
ビルドの再現に必要なもの
動詞としてのビルドの種別
5.2 ビルドツール:Make
Makefile
Makeの問題点
5.3 ビルドツール:Ant
Antの登場
build.xml
Antの標準タスク
Antの独自タスク
5.4 ファイル間の依存関係
ファイル間の依存関係を管理する
ファイル間の依存関係とタイムスタンプ
5.5 ビルドブレーク
ビルドブレークの分類
ビルドブレークに対処する手順
ブレーキングチェンジのコミットを告知する
5.6 再現可能なビルドの実現
ビルドマスターを任命する
ビルド手順の概要
ビルド手順の詳細
ビルド手順書の記述
5.7 ビルドに添付する文書
リリースノート
インストール手順書
5.8 継続的インテグレーション
継続的インテグレーションとは
継続的インテグレーションとビルド時間
継続的インテグレーションとビルドサーバ
ビルドサーバのダッシュボードを活用する
バディビルドの自動化
CIビルドとテストビルドを区別する
ビルドのプロモーション
テストビルドの適切な頻度を探す
現代的な継続的インテグレーションの導入と活用
5.9 リリーストレインを運行する
リリース列車とは
リリース列車を定刻通りに発車させる
リリース列車に乗り込む頻度
5.10 まとめ
第6章 バグの追跡と解決
6.1 バグの追跡とは
バグを追跡するツール
バグ追跡システムの構成と種類
6.2 バグの追跡とバグ報告票
バグ報告票の流通
バグ報告票によるフィードバック
6.3 バグ報告票の状態と処理方法
バグ報告票の状態
開発者によるバグの処理方法と、テスターによる処理の確認
6.4 バグ報告票の項目
バグ報告票を識別する項目
バグ報告票の状態に関する項目
バグ報告票の起票に関する項目
バグ報告票の詳細に関する項目
バグの修正に関する項目
開発ブランチの運用に関する項目
バグ報告票のテンプレートを用意する
6.5 バグ追跡のプラクティスとアンチ・プラクティス
バグ追跡のプラクティス
バグ追跡のアンチ・プラクティス
6.6 リグレッション
リグレッションを恐れる
リグレッションテスト
6.7 トリアージ
ソフトウェア開発でのトリアージ
トリアージのプロセスの例
トリアージ基準の変化
トリアージのまとめ
6.8 バグの数をプロットする
バグ収束曲線
ゼロ・バグ・バウンス
バーンダウンチャート
6.9 バグ追跡システムの活用
BTSをタスクリストとして使う
BTSをユーザーサポートに使う
BTSをハードウェア管理票として使う
6.10 トヨタのかんばん方式とバグ追跡システム
6.11 まとめ
第7章 テストケースの自動化
7.1 テストとは
テストの目的
テストを自動化する
テストの分類
7.2 テストの準備
テストドキュメントの準備
同値分割と境界値分析
テストケースとテストスクリプト
7.3 テストケースの項目
テストケースを識別する項目
実行に関する項目
担当者に関する項目
テストの手順に関する項目
テストの詳細に関する項目
7.4 テスト結果票の項目
テスト結果票の管理
テスト結果票を識別する項目
テスト結果票の状態に関する項目
テスト結果に関する項目
その他の項目
7.5 テストの自動化
テストを自動化することの価値
テストファーストとオートメーション
オートメーションの構成
単体テストの自動化
統合テストの自動化
7.6 自動化された統合テストの運用
ビルドマシン上でオートメーションを動かす
オートメーションの結果をレポートする
オートメーションがfailしたときの対処
failした統合テストのオートメーションを分析する
7.7 ツールを使ったテストの運用
テストケースの追加とバグ報告票
テストケース管理システム
7.8 保守チームにテストを引き渡す
7.9 仮想化技術によるテスト環境の構築
仮想環境とは
テストに仮想環境を活用する
7.10 まとめ
第8章 開発プロセスの構築
8.1 開発プロセスの構築
8.2 ビルドしては直しモデル
8.3 ウォーターフォール型の開発モデル
ウォーターフォール型の開発モデルとは
ウォーターフォール型モデルのはじまり
ウォーターフォール型モデルの問題点
8.4 反復型の開発モデル
ビルドしては直しモデルと反復型モデルの違い
アーキテクチャ中心のアプローチ
8.5 アジャイルな開発モデル
XPとスクラム
アジャイルな開発プロセスに対する誤解
8.6 開発プロセスを構築するためのヒント
計画を立てる
コンフィデンスレベルを高く保つ
テストが不要なビルドを作って、念のためにテストする
単能工より多能工?
文書の項目を設計する
文書の状態を設計する
8.7 まとめ
あとがき
参考資料
索引
続きを見る