ソフトウェア設計に関する名著
1980年、「高信頼性ソフトウェア-複合設計」の続編であり前著の内容を整理し、拡張した専門書が発売されていることを知りました。
J.マイヤーズの「ソフトウェアの複合/構造化設計」という本で近代科学社から1979年に初版が発売されています。この本も興味深かったので、購入してソフトウェア設計について勉強しました。
- 『ソフトウェアの複合/構造化設計』 Composite / Structure Design
- Glenford J.Myers 著
- 近代科学社
- 昭和54年6月20日 初版
目次
1. プログラム設計の主眼点
2. 定義と表記法
3. よい設計のための土台
4. モジュール強度
5. モジュール結合度
6. その他の設計目標
7. 設計の思考過程
8. 源泉/変換/吸収分割
9. トランザクション分割
10. 共通機能分割
11. データ構造分割
12. 分割の事例
13. 最適化と検討
14. プログラミング言語
15. 他の方法論との関係
16. まとめ
よい設計とは
モジュールの独立性を高くする考え方を電子回路の例でシステムの区分けについて説明しています。モジュールの独立性を高めるには、モジュールの強度を最大にし、モジュール間結合度を最小にすることです。
よいプログラム設計の目的は、プログラムを単に階層構造に区分けするのではなく、各モジュールが他のすべてのモジュールからできるだけ独立するように、プログラムを階層構造に区分けする方法を決定することである。
モジュールの強度と結合度
「高信頼性ソフトウェア-複合設計」と内容は同じですが、詳しく説明しています。
モジュール強度の要約として、以下のように述べられています。理想的に近いことですが、確かにモジュール強度に注意したモジュール分割は、メリットを持っていると思います。
プログラムの構造化設計における1つの重要な目標は、機能的強度モジュールと情報的強度モジュールだけをつくることである。
このようなモジュールは、プログラムのモジュール独立性を最適化し、プログラムのエラー率を減少させ、プログラムの拡張性を高める。また、このプログラムあるいは将来作成されるプログラムでの、いろいろな用途にたいするこれらのモジュールの使用率の確率を普通以上に高める。
分割技法
分割技法について、STS(source:源泉/transform:変換/sink:吸収)分割について、前書より詳細に説明されています。データの流れから最大抽象点を見つけて、源泉・変換・吸収機能に分割します。
データ構造分割
この本で私が特に興味を持ったのは、データ構造分割技法のJackson法でした。
プログラムの構造は、プログラムの入力と出力データの構造に対応したものであるべきです
ジャクソン法は、入力と出力のデータ構造を連続・繰返し・選択という構造の木構造で記述すると、プログラムの構造は、入力と出力の関係から導き出せるというものらしいです。