索引 / 001 JA
A Philosophy of Software Design(ソフトウェア設計の哲学) cover

コンピュータサイエンス

コンピュータサイエンス

A Philosophy of Software Design(ソフトウェア設計の哲学)

John Ousterhout

英語原題: A Philosophy of Software Design

ソフトウェア設計の中心的な課題である複雑さの管理を扱う短い本。設計に重点を置いたソフトウェアの授業を教えてきた著者の経験をもとに、単純なインタフェースを持つ深いモジュール、情報隠蔽、注意深い命名とコメントを提唱し、設計が理解しにくく変更しにくくなりつつあることを示す警告サインの一覧を示す。

前提知識: 授業での大きめの課題など、何らかの言語で中規模のプログラムを書き、保守した経験。

難易度レベル
初級
学術レベル
学部
software designcomplexitymodularityabstractioncode quality

01 / 経典教科書推薦

経典教科書推薦

対象読者

構造の悪さがもたらす負担を実感できる程度にコードを書いてきた、ソフトウェア工学やソフトウェア設計の授業を受ける学生や、システムをどうモジュールに分けるかを決める原則がほしい若手開発者に向く。プロセスやツールの概観ではなく、自分のコードに当てはめられる設計の考え方を求める読者に適している。

前提知識

授業での大きめの課題など、何らかの言語で中規模のプログラムを書き、保守した経験。

扱う内容

複雑さの性質と原因。動くコードとよい設計、戦略的プログラミングと戦術的プログラミング。深いモジュールと浅いモジュール。情報隠蔽と情報漏洩。汎用的なインタフェースと特化したインタフェース。抽象化の層。複雑さを下層へ押し下げること。コードを統合すべきときと分けるべきとき。エラーを定義によってなくすこと。二度設計すること。コメントを先に書き、自明でないことを記述すること。命名。一貫性。設計上の危険信号。

使い方

トーマスとハントの The Pragmatic Programmer が職業プログラマとしての技能や習慣について幅広く助言するのに対し、本書はコードを単純に保つための構造化の仕方に絞っている。設計上の判断が主な関心である場合に向く。数回に分けて読み通し、その後自分のプロジェクトを見直す際に危険信号を当てはめるとよい。

版と出典

第2版で、Yaknyam Press より2021年7月に刊行(ペーパーバック、ISBN 9781732102217)。何が重要かを見極めることに関する章と、他の設計論との比較が加えられた。本レコードの書誌情報は AbeBooks に基づく。