ソフトウェア設計に関する名著
1979年、先輩からソフトウェア設計に関する名著があるので勉強したら良いとアドバイスを受けました。
- 『高信頼性ソフトウェア-複合設計』
- Reliable Software Through Composite Design Glenford
- Glenford J.Myers 著
- 近代科学社
- 昭和51年3月1日 発行
- 昭和53年8月1日 第5刷
目次
1. ソフトウェア設計の現状
2. 複合設計の概念
3. モジュール強度
4. モジュール結合度
5. その他の尺度
6. 複合分析
7. 設計問題
8. 設計と管理
9. モジュラリティーと仮想記憶装置
10. プログラム安定性モデル
内容
J.マイヤーズの「高信頼性ソフトウェア-複合設計」という本で近代科学社から1976年に初版が発売されています。ソフトウェア設計について専門書で勉強したことがなかったので、その内容にとても感動しました。
訳者まえがきにも書かれていますが、ハードウェアの制約から省メモリで実行速度の速い職人芸的なプログラムが良いと思われていた時代から、「わかりやすさ」を重視する時代になってきています。1970年代は、確かにそういう時代でしたが、2016年現在は明らかに、「わかりやすさ」重視です。
「わかりやすさ」は開発を技術的にも管理的にも容易にし、できあがったプログラムの品質性を向上させるものである。規模が大きくなっていく適用業務をいかに「小さく分割し、その分割した単位だけで問題を解決するにはどうすれば良いか」という解決策が、この本の中で示されている。
ソフトウェア設計をモジュールの強度と結合度という考え方で説明しているのが本書です。
モジュール | 説明 |
---|---|
強度 | モジュール自身の良さを測る尺度 |
結合度 | モジュール間の相互の関連性を測る尺度 |
最適なモジュール設計は、異なったモジュールにある要素間の関係を最小にする設計です。実現するには2通りの観点でモジュール分割します。
- モジュール間の関係を最小にする → 結合度
- モジュール内の関係を最大にする → 強度
モジュールの強度
強度 | 説明 | |
---|---|---|
A | 暗合的 | モジュール内の要素の間に特別な関係がない |
B | 論理的 | モジュールの各要素間に論理的に抽象化された関係がある |
C | 時間的 | モジュールの要素が時間的に関係している |
D | 手順的 | 複数の逐次的な機能を実行するために関係している |
E | 連絡的 | 複数の機能がデータに関連して関係している |
F | 情報的 | 1個のデータ構造を扱う複数個の機能を実行するために関係している |
G | 機能的 | 1つの機能を実行するために関係している |
モジュールの強度は、暗合的強度が一番弱く、A→Gの順に強くなり、機能的強度が一番強い。
情報的強度は、情報の局所化という考え方で、1個のデータ構造に関する情報を1個のモジュール内で扱うことになる。後に現れるオブジェクト指向の情報隠蔽は、この考えに基づくものです。
モジュールの結合度
結合 | 説明 | |
---|---|---|
A | 内容 | あるモジュールが他のモジュールの内容を直接参照する |
B | 共通 | 共有する大域データ構造を参照する |
C | 外部 | 複数モジュールで外部宣言したデータ要素を参照する |
D | 制御 | 一方のモジュールが制御要素を引数として他方のモジュールに渡す |
E | スタンプ | 2つのモジュールが大域データではないデータ構造を参照する |
F | データ | モジュールへの入出力のデータ要素はすべて引数で渡す |
モジュールの結合度は、内容結合が一番高く、A→Fの順に弱くなり、データ結合が一番低い。