Making Software

―エビデンスが変えるソフトウェア開発

[cover photo]
TOPICS
Programming
発行年月日
PRINT LENGTH
612
ISBN
978-4-87311-511-5
原書
Making Software
FORMAT
PDF
Ebook
4,180円
Ebookを購入する

ウォーターフォールモデルは間違いだったのか?コピーペーストは悪なのか?バグの総数は予測できるか?正確に見積もるためには?パーティションは不要か?大勢でのコードレビューは無駄なのか?ペアプログラミングの効用は?プログラマの生産性は測れるか?――ソフトウェア開発における数々の疑問に、バリー・ベーム、スティーブ・マコネルをはじめとする著名なソフトウェア工学研究者、アーキテクトたちが答える珠玉のエッセイ集。納期遅延、コスト超過、品質低下といった負の連鎖を断ち切り、プロジェクトを成功に導くためのヒントがここにあります。

目次

目次

「アーキテクティング:いつ、どれだけ?」を巡って(推薦のことばに代えて)
訳者まえがき
まえがき

第Ⅰ部エビデンスの探究と利用に関する一般的原理
1章 有力なエビデンスを求めて(ティム・メンジース、フォレスト・シュール)
    はじめに
    エビデンスを巡る現状
    信ずるべき変化
    コンテキストの影響
    将来展望
    参考文献

2章 信頼性〜なぜ確信できなくてはいけないか?(ルッツ・プルシェルト、マリアン・ペトリ)
    ソフトウェア工学において、いかにしてエビデンスが見つかるか
    信頼性と適合性
    エビデンスを組み合わせる
    エビデンスの種類、その強さと弱さ
    社会、文化、ソフトウェア工学、そしてあなた
    謝辞
    参考文献

3章 システマチックレビューから学べるもの(バーバラ・キッチンハム)
    システマチックレビューの概要
    システマチックレビューの強みと弱み
    ソフトウェア工学におけるシステマチックレビュー
    結論
    参考文献

4章 ソフトウェア工学を質的手法で理解する(アンドリュー・コー)
    質的手法とは何か ?
    質的研究を読む
    実践において質的手法を使用する
    質的研究の結果を一般化する
    質的手法は系統的
    参考文献

5章 NASAのアプリケーションを通じて学んだこと:品質改善パラダイムの成熟(ビクター・ R・バシリ)
    ソフトウェア工学の研究を困難なものとする独特の要因
    実証研究に対する現実的アプローチ
    NASAソフトウェア工学研究所:実証研究の活発なテストベッド
    品質改善パラダイム
    結論
    参考文献

6章 性格・知能・専門性がソフトウェア開発に及ぼす影響(ヨー・ E・ハナイ)
    優秀なプログラマを見分ける方法
    個人か環境か
    結論
    参考文献

7章 プログラミングを学ぶことはなぜそんなに困難か?(マーク・ガズダイアル)
    学生にとってプログラミングを学ぶことは困難か ?
    プログラミングについて人が自然に理解することは何か
    視覚的プログラミングへのシフトによる道具立ての改良
    動機の文脈情況へのあてはめ
    結論:まだ未熟な分野
    参考文献

8章 コード行数を超えて:さらなる複雑度メトリクスは必要か?(イスラエル・エライス、アハマド・ E・ハッサン)
    ソフトウェアを調査する
    ソースコードを測定する
    計測の例
    統計分析
    統計的手法に対するコメント
    結局、さらなる複雑度メトリクスは必要か ?
    参考文献

第Ⅱ部ソフトウェア工学における個別の話題

9章 欠陥数予測の自動化(イレーヌ・ J・ワイユーカー、トーマス・ J・オストランド)
    欠陥の分布
    欠陥を含んだファイルの特徴
    予測モデルの概要
    予測モデルの反復実験と変形
    ツールの構築
    警告しておくこと
    参考文献

10章 アーキテクティング:いつ、どれだけ?(バリー・ベーム)
    プロジェクトライフサイクル経過に伴いソフトウェア修正コストは増大するか ?
    どれだけアーキテクティングを行えば十分なのか ?
    修正コストのデータからアーキテクティングの価値について学べること
    結局アーキテクティングはどれだけやれば十分か ?
    アーキテクティングは前もって行う必要があるのか ?
    結論
    参考文献

11章 コンウェイの法則の系(クリスチャン・バード)
    コンウェイの法則
    コーディネーション、調和、そして生産性
    マイクロソフト内部の組織上の複雑さ
    オープンソースソフトウェアのバザールにおけるチャペル
    結論
    参考文献

12章 テスト駆動開発はどれくらい効果的か?(ブラーク・ターハン、ルーカス・レイマン、マデリン・ディープ、ハーカン・エルドマス、フォレスト・シュール)
    TDDという錠剤 ―それは一体何なのか ?
    TDD臨床試験のまとめ
    TDDの有効性
    臨床試験における適正な TDD服用の実施
    注意点と副作用
    結論
    謝辞
    参考文献
    TDD臨床試験に関する参考文献

13章 コンピュータサイエンスに女性が増えない理由(ミシェル・ A・ホワイトクラフト、ウェンディ・ M・ウィリアムズ)
    なぜそんなに女性が少ないか ?
    気にすべきか ?
    結論
    参考文献

14章 プログラミング言語の比較 2通り(ルッツ・プルシェルト)
    特定の探索アルゴリズムに特化した言語バトル
    Plat_Forms:Web開発技術と文化
    それで結局のところ ?
    参考文献

15章 品質戦争:オープンソース対有償ソフト(ディオミディス・スピネリス)
    過去の小ぜり合い
    戦場
    戦闘へ
    結果と余波
    謝辞および利害関係の表明
    参考文献

16章 コードを語る人(ロバート・デライン)
    あるプログラマの 1日の生活
    何について話していたか
    コミュニケーションについて考えるためのモデル
    参考文献

17章 ペアプログラミング(ローリー・ウィリアムズ)
    ペアプログラミングの歴史
    産業界でのペアプログラミング
    教育場面でのペアプログラミング
    分散ペアプログラミング
    チャレンジ
    学んだ事柄
    謝辞
    参考文献

18章 近年のコードレビュー(ジェイソン・コーエン)
    常識
    開発者はほとんどコードレビューをしない
    集団力学
    結論
    参考文献

19章 共同作業場か、閉じるドアか?(ジョージ・アランダ)
    閉じるドア(個室)
    共同作業場
    作業パターン
    もう一言……
    参考文献

20章 グローバルなソフトウェア開発における依存関係の認識と管理(マルセロ・カタルド)
    GSDではなぜコーディネーションが難題なのか ?
    依存関係とその社会=技術における二重性
    研究から実践へ
    将来動向
    参考文献

21章 モジュール化はどれくらい効果的か?(ニール・トーマス、ゲイル・マーフィー) 353
    システム
    変更とは何か ?
    モジュールとは何か ?
    結果
    有効性を脅かすもの
    まとめ
    参考文献

22章 デザインパターンのエビデンス(ウォルター・ティッチー)
    デザインパターンの例
    デザインパターンが使える理由
    第 1の実験:パターンドキュメントのテスト
    第 2の実験:パターンによる解法と素朴な解法の比較
    第 3の実験:チームコミュニケーションにおけるパターン
    学んだこと
    結論
    謝辞
    参考文献

23章 エビデンスに基づくエラー予測(ナチーアパン・ナガパン、トーマス・ボール
    はじめに
    コードカバレジ
    コード変更量
    コード複雑度
    コード依存性
    人々と組織に関する指標
    エラー予測に対する統合的アプローチ
    まとめ
    謝辞
    参考文献

24章 バグレポート収集の技芸(ラーフル・プリムラージ、トーマス・ジマーマン)
    良いバグレポートと悪いバグレポート
    何が良いバグレポートたらしめるか ?
    調査結果
    情報のミスマッチのエビデンス
    バグレポートの問題点
    重複したバグレポートの価値
    すべてのバグレポートが修正されるわけではない
    結論
    謝辞
    参考文献

25章 ソフトウェアの大半の欠陥はどこから生じる?(ディエイン・ペリー)
    ソフトウェアの欠陥に関する研究
    調査の文脈
    フェーズⅠ:全般調査
    フェーズⅡ:設計とコードの欠陥調査
    この結果について何を信じるべきか?
    私たちが学んだことは?
    謝辞
    参考文献

26章 若葉マークのプロ:最近の卒業生、はじめてのソフトウェア工学のお仕事(アンドリュー・ベーゲル、ベス・サイモン)
    調査手法
    ソフトウェア開発タスク
    新人ソフトウェア開発者たちの強みと弱点
    自省
    学習を妨げる誤解
    教育学についての考察
    変化の可能性
    参考文献

27章 自力でのエビデンスマイニング(キム・セバスチャン・ハーツイグ、アンドレアス・ツェラー)
    何をマイニングするのか?
    調査を設計する
    マイニングの手引き
    ここからどこへ行くか
    謝辞
    参考文献

28章 工学ツールとしてのコピーペースト主義(マイケル・ゴッドフリー、コーリー・カプサー)
    コピーペーストの例
    ソフトウェア中のコピーされたコードを検出する
    クローン作成の作業内容を吟味する
    私たちの研究
    結論
    参考文献

29章 あなたの APIはどれくらい使いやすいか?(スティーブン・クラーク)
    なぜ APIのユーザビリティ研究は重要か?
    APIのユーザビリティを調べる最初の試み
    最初の試みがうまく行かなかった場合……
    異なる作業スタイルへの適合
    結論
    参考文献

30章 10倍が意味するものは?プログラマの生産性のばらつき測定(スティーブ・マコネル)
    ソフトウェア開発における個人間の生産性のばらつき
    プログラマ個人の生産性を測定する際の問題
    ソフトウェア開発におけるチーム生産性のばらつき
    参考文献

『Making Software』日本語版発刊記念鼎談
児玉公信×中谷多哉子×久野靖「今こそエビデンスを生かしたソフトウェア開発を」
    足場固めに入ったソフトウェア工学の研究/まずはデータ/日本の企業の現場/失敗させて育てる/日本独自のペアプログラミングの効用/大学教育の問題点/モジュラリティの計測はしてみたい/ MakingSoftwareの実践

著者・編者紹介
索引

コラム目次
    実証科学の 3大チャレンジ
    知能の因子
    専門性の因子
    知能と専門性の統合
    知能の他の側面
    コード品質の測定
    箱ひげ図の読み方