Code Reading オープンソースから学ぶソフトウェア開発技法


Code Reading ~オープンソースから学ぶソフトウェア開発技法~ (プレミアムブックス版)


マイナビ


著者:Diomidis Spinellis
翻者:(株)トップスタジオ
監訳:鵜飼文敏、平林俊一、まつもとゆきひろ


序文
はじめに
まえがき
付録CD-ROMについて

第1章 序論
1.1 コードを読む理由と方法論
1.1.1 文芸作品としてのコード
1.1.2 手本としてのコード
1.1.3 保守
1.1.4 進化
1.1.5 再利用
1.1.6 インスペクション
1.2 本書の読み方
1.2.1 表記上の規則
1.2.2 ダイアグラム
1.2.3 練習問題
1.2.4 副教材
1.2.5 ツール
1.2.6 本書の大要
1.2.7 大いなる「言語論争」

第2章 プログラミングの基本要素
2.1 最初に取り上げる完全なプログラム
2.2 関数とグローバル変数
2.3 whileループ、条件、ブロック
2.4 switchステートメント
2.5 forループ
2.6 breakとcontinueステートメント
2.7 文字式とブール式
2.8 gotoステートメント
2.9 小規模なリファクタリング
2.10 doループと性数式
2.11 制御構造再考

第3章 Cのデータ型(上級編)
3.1 ポインタ
3.1.1 リンクデータ構造
3.1.2 データ構造の動的割り当て
3.1.3 参照呼び出し
3.1.4 データ要素へのアクセス
3.1.5 配列による引数と戻り値
3.1.6 関数のポインタ
3.1.7 ポインタによる別名参照
3.1.8 ポインタと文字列
3.1.9 ダイレクトメモリアクセス
3.2 構造体
3.2.1 データ要素のグループ化
3.2.2 関数から複数のデータ要素を返すケース
3.2.3 データ構造のマッピング
3.2.4 オブジェクト指向プログラミング
3.3 共用体
3.3.1 記憶域の効率的な使用
3.3.2 多態の実装
3.3.3 さまざまな内部表現による操作
3.4 動的メモリ割り当て
3.4.1 空きメモリの管理
3.4.2 動的に割り当てられる配列を持つ構造体
3.5 typedef宣言

第4章 Cのデータ構造
4.1 ベクタ
4.2 行列とテーブル
4.3 スタック
4.4 キュー
4.5 マップ
4.5.1 ハッシュテーブル
4.6 集合
4.7 連結リスト
4.8 ツリー
4.9 グラフ
4.9.1 ノード記憶
4.9.2 エッジ表現
4.9.3 エッジ記憶
4.9.4 グラフの性質
4.9.5 隠れた構造
4.9.6 その他の表現

第5章 制御フロー(上級編)
5.1 再帰
5.2 例外
5.3 並列性
5.3.1 ハードウェアとソフトウェアの並列性
5.3.2 制御モデル
5.3.3 スレッドの実装
5.4 シグナル
5.5 非ローカルジャンプ
5.6 マクロ置換

第6章 大きなプロジェクトへの取り組み
6.1 設計と実装のテクニック
6.2 プロジェクトの編成
6.3 ビルドプロセスとMakefile
6.4 設定
6.5 リビジョン管理
6.6 プロジェクト固有のツール
6.7 テスト

第7章 コーディング標準と規約
7.1 ファイルの名前と編成
7.2 インデント
7.3 書式
7.4 名前付け規則
7.5 プログラミング作法
7.6 プロセス標準

第8章 ドキュメント
8.1 ドキュメントの種類
8.2 ドキュメントを読む
8.3 ドキュメントの問題点
8.4 いろいろなドキュメントソース
8.5 オープンソースにおける一般的なドキュメント形式

第9章 アーキテクチャ
9.1 システム構造
9.1.1 中央リポジトリと分散型の手法
9.1.2 データフローアーキテクチャ
9.1.3 オブジェクト指向構造
9.1.4 階層型アーキテクチャ
9.1.5 ヒエラルキー
9.1.6 スライシング
9.2 制御モデル
9.2.1 イベントトリブンシステム
9.2.2 システムマネージャ
9.2.3 状態遷移
9.3 要素のパッケージ化
9.3.1 モジュール
9.3.2 名前空間
9.3.3 オブジェクト
9.3.4 ジェネリックインプリメンテーション
9.3.5 抽象データ型
9.3.6 ライブラリ
9.3.7 プロセスとフィルタ
9.3.8 コンポーネント
9.3.9 データリポジトリ
9.4 アーキテクチャの再利用
9.4.1 フレームワーク
9.4.2 コードウィザード
9.4.3 デザインパターン
9.4.4 分野固有のアーキテクチャ

第10章 コードを読むためのツール
10.1 正規表現
10.2 コード閲覧ツールとしてのエディタ
10.3 grepによるコード検索
10.4 ファイル間の差異の検索
10.5 ツールの自作
10.6 コードを読むツールとしてのコンパイラ
10.7 コードブラウザと美化ツール
10.8 ランタイムツール
10.9 ソフトウェア以外のツールや手法

第11章 総合的な例
11.1 下準備
11.2 進め方の作戦
11.3 コードの再利用
11.4 テストおよびデバッグ
11.5 ドキュメント
11.6 講評

付録A 本書に収録したコードの概要
付録B ソースコードの著作者
付録C 参照ソースコード一覧
付録D ソースコードのライセンス
D.1 ACE
D.2 Apache
D.3 ArgoUML
D.4 DemoGL
D.5 hsqldb
D.6 NetBSD
D.7 OpenCL
D.8 Perl
D.9 qtchat
D.10 socket
D.11 vcf
D.12 X Window System
D.13 Ruby
D.14 WideStudio
付録E コードリーディングのための名言
E.1 第1章 序論
E.2 第2章 プログラミングの基本要素
E.3 第3章 Cのデータ型(上級編)
E.4 第4章 Cのデータ構造
E.5 第5章 制御フロー(上級編)
E.6 第6章 大きなプロジェクトへの取り組み
E.7 第7章 コーディング標準と規約
E.8 第8章 ドキュメント
E.9 第9章 アーキテクチャ
E.10 第10章 コードを読むためのツール
E.11 第11章 総合的な例

参考文献
索引
題辞
あとがき
著者紹介/監訳者紹介

書籍目次

Posted by shi-n