メイヤー オブジェクト指向入門読書ノート2
メイヤー本を読む続き
オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)
- 作者: バートランド・メイヤー,酒匂寛
- 出版社/メーカー: 翔泳社
- 発売日: 2007/01/10
- メディア: 単行本(ソフトカバー)
- 購入: 11人 クリック: 307回
- この商品を含むブログ (132件) を見る
- 1H実施
p10「1.2.6効率性」からp18「ドキュメントについて」まで読んだ。 次回はp19「1.2.13トレードオフ」から
第一章ソフトウェアの品質
1.1外的品質要因と内的品質要因
1.2 外的品質要因
1.2.6 効率性(efficiency)
定義
効率性とは、処理時間、内部記憶および外部記憶所の空間、通信装置で使用する帯域幅などのハードウェア資源をできる限り必要しないソフトウェアシステムの能力である
- ソフトウェア業界での似た概念「性能」
開発者の態度は二分化する
- 最適化に多大な労力を費やす
- 効率軽視。未来のスペックアップしたコンピュータに期待(ムーアの法則的なアレ)
正しくないならば、速さを気にするな
- 極端な最適化により特殊化されたソフトウェアは度々変更や再利用に不向きなものになる
ハードウェアの能力の進化は著しい(疑問:これは本書出版から数十年たった今も有効な考え方なのか?)
性能に対して無関心でいることはそれなりの覚悟が必要。
- 最終的なシステムがおそすぎたり大きすぎたりしてはいけない
- リアルタイムシステム
- 効率性が正確性(仕様)の一部となるものもある
- 本書は効率性についてはあまり入り込まない
- オブジェクト指向的と関連する効率性の話題は扱う
- オブジェクト指向的計算処理のための管理手法
- 例:
- ガーベージコレクション
- 動的束縛
- 総称性
- 多重継承
- 例:
- オブジェクト指向的計算処理のための管理手法
効率性は品質要因の一つに過ぎない。効率性によって我々の光学的生活が支配されるべきではない
※当たり前だが設計の本であり実装の本ではないため、あまりアルゴリズムのパフォーマンスなどには深入りしないようだ
1.2.7 可搬性(portability)
定義
可搬性とは多様なハードウェア及びソフトウェア環境へのソフトウェア製品の移植しやすさである。
プラットフォーム(ハードウェア + ソフトウェアマシン)
プラットフォーム間の非互換性の多くは正当化出来ない
- エンジニアリングの大きな課題
1.2.8 使いやすさ(end of use)
定義
使いやすさとは、経験も資格も異なる人々がいかに容易にソフトウェア製品の利用法を学習し、問題解決に応用できるかである。これにはインストールや、操作、監視の容易さも含まれる。
多種多様なユーザーのレベルに対応すること
- 上級レベルユーザーの仕事を邪魔しない作りであること
- 入門レベルユーザーのに対して詳細な指示と説明を与えること
「使いやすさ」はオブジェクト指向と相性が良い
成功したシステムは最初に想定したユーザーよりも広い範囲のユーザーに利用される
ユーザーについてあまり多くの前提を置かないことが重要
- 最終的に誰がユーザーになるかわからないため
ユーザーインターフェース設計の原則:そのユーザーのことを知っている気になるな。あなたは知らない。byハンセン(誰?)
1.2.9 機能性(functionality)
定義
機能性とは、そのシステムが提供できるサービスの範囲である。
機能主義
- より多くの機能を求める圧力が存在する
- 競合製品との機能比較
- ユーザーからの要望
- より多くの機能を求める圧力が存在する
機能主義の問題点
1.2.10 適時性(timeliness)
定義
適時性とはユーザが必要としているとき、または、必要とする前にソフトウェアシステムをリリースできること
- ソフトウェア産業に対する圧力の一つ
- 機を逃せばターゲットを失う
- 変化のペースが他の産業より速い
1.2.11 その他の品質要因
これまでに説明したもの以外で ユーザー、購入者、開発委託者などに影響を与える要因
- 実証性(verifiability)テストしやすさ
- 統合性(integrity)認証されていないアクセスや修正からソフトウェアを守る
- 修復性(repairability)血管の修復を助ける
- 経済性(economy)安い
1.2.12 ドキュメントについて
- ドキュメントは独立した品質要素ではない
- ドキュメントは上記品質要素の結果である
ドキュメントの分類
- 外部向けドキュメント:ユーザー向け
- 内部向けドキュメント:保守、開発者向け
- モジュールインターフェースドキュメント:ライブラリユーザー向け
- 中身の実装を理解せずにモジュールの機能を理解することを助ける
上記すべての3ドキュメントでソフトウェア自体をドキュメント化することが望まれる
オブジェクト指向により従来のドキュメントの役割を軽減する
- ドキュメントをすべてなくすことは期待しない