『ThoughtWorksアンソロジー』
https://gyazo.com/3a3b6f3f90601c4b9e3cfbce1ef077b9
いつ読めばよいのかいまいちわからんmrsekut.icon
目次
推薦の言葉
賞賛の声
まえがき
1 章 ビジネスソフトウェアの「ラストマイル」を解決する
1.1 「ラストマイル」問題とは何か
1.2 問題の本質を理解する
1.3 「ラストマイル」問題を解決するには
1.4 人
1.5 自動化
1.6 非機能要求テストを自動化するための設計
1.7 設計を稼働環境から分離せよ
1.8 バージョンのないソフトウェアへ
2 章 とある秘密基地とRuby による20 のDSL
2.1 秘密基地の例
2.2 グローバル関数の利用
2.3 オブジェクトの利用
2.3.1 クラスメソッドとメソッドチェイン
2.3.2 Expression Builder
2.3.3 さらなるメソッドチェイン
2.4 クロージャの利用
2.5 コンテキストの評価
2.6 リテラルコレクション
2.6.1 可変長引数メソッド
2.7 動的受信
2.8 まとめ
3 章 言語の緑豊かな景観
3.1 イントロダクション
3.2 言語の標本
3.3 種類の多種性
3.3.1 パラダイム
3.3.2 型特性
3.3.3 実行時の振る舞い
3.3.4 実装モデル
3.4 言語の系統樹
3.5 どれも興味深いことであるが、どうして重要なのか
4 章 多言語プログラミング
4.1 多言語プログラミングとは
4.2 Groovy の方法でファイルを読む
4.3 JRuby とisBlank
4.4 Jaskell と関数プログラミング
4.5 Java のテスト
4.6 多言語プログラミングの未来
5.1 ソフトウェア設計を改善する9 つのステップ
5.2 エクササイズ
5.2.1 9 つのルール
5.2.2 ルール1:1 つのメソッドにつきインデントは1 段階までにすること
5.2.3 ルール2:else 句を使用しないこと
5.2.4 ルール3:すべてのプリミティブ型と文字列型をラップすること
5.2.5 ルール4:1 行につきドットは1 つまでにすること
5.2.6 ルール5:名前を省略しないこと
5.2.7 ルール6:すべてのエンティティを小さくすること
5.2.8 ルール7:1 つのクラスにつきインスタンス変数は2 つまでにすること
5.2.9 ルール8:ファーストクラスコレクションを使用すること
5.2.10 ルール9:Getter 、Setter 、プロパティを使用しないこと
5.3 まとめ
6 章 ところでイテレーションマネージャとは何だろうか
6.1 イテレーションマネージャとは何だろうか
6.2 よいイテレーションマネージャとは
6.3 何がイテレーションマネージャでないか
6.4 イテレーションマネージャとチーム
6.5 イテレーションマネージャと顧客
6.6 イテレーションマネージャとイテレーション
6.7 イテレーションマネージャとプロジェクト
6.8 まとめ
7 章 プロジェクトバイタルサイン
7.1 プロジェクトバイタルサインとは
7.2 プロジェクトバイタルサイン vs..プロジェクトヘルス
7.3 プロジェクトバイタルサイン vs..情報発信器
7.4 プロジェクトバイタルサイン:スコープバーンアップ
7.4.1 スコープバーンアップの情報発信器の例
7.4.2 スコープの測定単位を定義する
7.4.3 中間マイルストーンによってボトルネックを発見する
7.4.4 スコープバーンアップ図の詳細説明
7.5 プロジェクトバイタルサイン:提供品質
7.5.1 提供品質における情報発信器の例
7.5.2 バグカウント図の詳細説明
7.6 プロジェクトバイタルサイン:予算バーンダウン
7.6.1 予算バーンダウンの情報発信器の例
7.6.2 予算バーンダウン図の詳細説明
7.7 プロジェクトバイタルサイン:開発実況
7.7.1 開発実況における情報発信機の例
7.7.2 開発状態の定義
7.7.3 ストーリーボードとストーリーカードの詳細説明
7.8 プロジェクトバイタルサイン:チーム知覚
7.8.1 チーム知覚の情報発信器の例
7.8.2 チームムード図の詳細説明
8 章 コンシューマ駆動契約――サービス進化パターン
8.1 サービスの進化:例
8.2 スキーマのバージョニング
8.2.1 拡張点
8.3 互換性に影響する変更
8.3.1 Schematron
8.4.1 プロバイダ契約
8.4.2 コンシューマ契約
8.4.3 コンシューマ駆動契約
8.4.4 契約の特性の要約
8.4.5 実装
8.4.6 メリット
8.4.7 コンシューマ駆動契約とSLA
8.4.8 課題
8.4.9 まとめ
9 章 ドメインアノテーション
9.1 ドメイン駆動設計とアノテーション
9.1.1 ドメイン固有メタデータ
9.1.2 Java のアノテーションと.NET の属性
9.1.3 ドメインアノテーションとは
9.1.4 ドメインアノテーションの実例
9.2 ケーススタディ:リロイのトラック
9.2.1 ドメインモデル
9.2.2 データの分類
9.2.3 ナビゲーションのヒント
9.3 まとめ
10 章 Ant ビルドファイルのリファクタリング
10.1 イントロダクション
10.1.1 リファクタリングとは。Ant とは
10.1.2 いつリファクタリングをすべきか。あるいは、いつ逃げ出すべきか
10.1.3 build.xml はリファクタリング可能か
10.2 Ant リファクタリングカタログ
10.2.1 macrodef の抽出
10.2.2 ターゲットの抽出
10.2.3 宣言の導入
10.2.4 依存によるcall の置き換え
10.2.5 プロパティによるリテラルの置き換え
10.2.6 filtersfile の導入
10.2.7 プロパティファイルの導入
10.2.8 ターゲットのラッパービルドファイルへの移動
10.2.9 description によるコメントの置き換え
10.2.10 デプロイ用コードのimport 先への分離
10.2.11 要素のantlib への移動
10.2.12 fileset による多数のライブラリ定義の置き換え
10.2.13 実行時プロパティの移動
10.2.14 ID を用いた要素の再利用
10.2.15 プロパティのターゲット外部への移動
10.2.16 location によるvalue 属性の置き換え
10.2.17 build.xml 内へのラッパースクリプトの取り込み
10.2.18 taskname 属性の追加
10.2.19 内部ターゲットの強制
10.2.20 出力ディレクトリの親ディレクトリへの移動
10.2.21 apply によるexec の置き換え
10.2.22 Publisher の利用
10.2.23 明確なターゲット名の導入
10.2.24 ターゲット名の名詞への変更
10.3 まとめ
10.4 参考文献
10.5 リソース
11 章 1 クリックデプロイ
11.1 継続的ビルド
11.2 継続的ビルドを越えて
11.3 ライフサイクル全体の継続的インテグレーション
11.3.1 バイナリの管理
11.4 チェックインゲート
11.5 受け入れテストゲート
11.6 デプロイの準備
11.7 その後のテスト
11.8 プロセスの自動化
11.9 まとめ
12 章 アジャイルかウォーターフォールか――エンタープライズWeb アプリケーションのテスト
12.1 イントロダクション
12.2 テストのライフサイクル
12.3.1 単体テスト
12.3.2 機能テスト
12.3.4 統合テスト
12.3.5 データの妥当性確認
12.3.6 ユーザ受け入れテスト
12.3.7 性能テスト
12.3.8 非機能テスト
12.3.9 回帰テスト
12.3.10 本番検証
12.4 環境
12.4.1 開発統合環境
12.4.2 システム統合環境
12.4.3 ステージング環境
12.4.4 本番環境
12.5 課題管理
12.6 ツール
12.7 レポートとメトリクス
12.8 テストのロール
12.8.1 テスト分析
12.8.2 テスト記述
12.8.3 テスト実行
12.8.4 環境管理
12.8.5 課題管理
12.8.6 トラブルシューティング
12.9 参考文献
13 章 実践的な性能テスト
13.1 性能テストとは何か
13.2 要求収集
13.2.1 何を測定するのか
13.2.2 どのように数値を設定するか
13.2.3 要求収集を通常のソフトウェア開発プロセスにどのように適合させるのか
13.2.4 開発者も性能テストによって要求を持たないのか
13.2.5 性能要求の利害関係者を見つけられない場合はどうなるか
13.2.6 顧客があまり技術に詳しくなく、不可能と考えられることを要求する場合はどうなるか
13.2.7 なぜビジネスアナリストにもこれらの要求収集に参加させないのか
13.2.8 まとめ
13.3 テストの実行
13.3.1 どのようなテストを繰り返し行うのか
13.3.2 いつテストすべきか
13.3.3 どのような環境でテストすべきか
13.3.4 性能の低いテスト機でのテスト結果をどのように本番環境に関連づけるか
13.3.5 性能テストに適したデータベース容量はどのくらいか
13.3.6 サードパーティインターフェイスをどのように扱うか
13.3.7 何種類のテストケースが必要か
13.3.8 レスポンスタイムとスループットに数種類の測定方法をとるのはなぜか
13.3.9 システムのすべての機能をテストする必要があるのか
13.3.10 まとめ
13.4 コミュニケーション
13.4.1 知る必要があるのは誰か
13.4.2 つまり、単にレポートを作成すればよいということか
13.4.3 まとめ
13.5 プロセス
13.5.1 すべてをどのようにつなげるのか
13.5.2 遅れを防ぐためにはどうすればよいか
13.5.3 問題が発見されたとき、対策漏れがないようにするにはどうすればよいか
13.6 まとめ
参考文献
訳者あとがき
索引