『ソフトウェアシステムアーキテクチャ構築の原理(第2版)』を読んだので、メモとして内容の一部を紹介します。
原書、著者など
- Software Systems Architecture (2nd Edition)
- 著者 Nick Rozansky, Eoin Woods
- 監訳 榊原さん
何が書いてある?
「ソフトウェアシステムのアーキテクチャとは?」という深淵な課題について書いています。アーキテクチャ、システムとその関連概念群を定義しようという取り組みは古く、
- 1970s David Parnas
- 1990s Dewayne Perry, Alexander Wolf
- 1995 Philipe Kruchten, RUP (The “4+1” View
Model of Software Architecture) ... 論理/プロセス/物理/開発 + シナリオ(Use Case)
これが、元となり、
- 2000 IEEE1471 ===> ISO/IEC42010
となるのですが、この本は、上記の中で現れてきた概念である__「ビュー」に加えて新しく、「パースペクティブ」__を加えてカタログ化したものです。
すごくざっくり言うと、よく、
「非機能要件がシステムのアーキテクチャに影響を与える」
と言いますよね?本書は、この言説を徹底的に解説したものです。(非機能要件に限らず、横断的な視点を__「パースペクティブ」__として捉えている)
アーキテクチャは判断の連続であり(帯には、"Architecture is Decisions"とある)、その判断の原理を体系化(Systemize)しよう、ということです。
アーキテクチャとは何かを少しだけ形式的に
アーキテクチャの話をする時に核となる概念群
UML で描くとこう読める。
- __「システム」は「アーキテクチャ」__を持つ。(真ん中の段)
- __「アーキテクチャ」は、「アーキテクチャ要素」と「要素間関係」__からなる。(上の段)
- __「システム」は複数の「ステークホルダー」__のニーズに対応する。(右下)
- __「アーキテクチャ」は「アキーテクチャ記述」__によって文書化される(かもしれない)。(左下)
- __「アキーテクチャ記述」は「ステークホルダー」__のために文書化される。(下の段)
しかし、実際にアーキテクチャを記述しようとすると、1つの文書ではとっても複雑で巨大な説明になってしまいます。そこで、__「ステークホルダー」の「関心事」毎に分割する必要が出てくる。ここに「ビュー」と「ビューポイント」__を導入してみよう。
「ビュー」と「ビューポイント」
- __「ビュー」は「ビューポイント」__に従う。
- __「ビューポイント」は1つ以上の「関心事」__をカバーする。
ここで、ビューとは、Krushten であれば、論理/プロセス/物理/開発の4のビューとなります。これらはカタログ化され、本書では
- コンテクスト
- 機能的
- 情報
- 並行性
- 開発
- 配置
- 運用
とグルーピングされています。
パースペクティブ
さて、本書の白眉は「アーキテクチャパースペクティブ」です。これを入れた概念図は、このようになります。
「パースペクティブ」は、従来の言葉で近いものとして「非機能要求」「横断的関心事」がある。本書ではこの「ビューポイント」と「パースペクティブ」のカタログを作っています。
- セキュリティ
- パフォーマンスとスケーラビリティ
- 可用性とレジリエンス
- 発展性
- アクセシビリティ
- 開発リソース
- 国際化
- 配置場所
- 規則
- 使用性
そして、本書の後半のほとんどをこのカタログの記述に当てています!
まとめのマインドマップ(メモ)
参考
- The 4+1 View
http://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf - 『アーキテクチャとは? Grady Booch によると』
http://blogs.itmedia.co.jp/hiranabe/2008/10/grady-booch-dd7.html - ISO/IEC42010
http://en.wikipedia.org/wiki/ISO/IEC_42010
メモ(本書の間違いかぼくの考え違いか分からない点)
特にUMLでかかれたコンセプトクラス図で気になった点。
- 日本語版の図、「アーキテクチャ」から「アーキテクチャ要素」へ向かう関連の多重度を1..nとして追加した。(多分、「アーキテクチャ」から「要素間関連」へ向かう関連の多重度と位置がずれたのだと思っている。ちなみに原著も日本語版と同じ。)
- 図の中のUMLの関連は、Navigabiity で記述されているが関連の方向で示した。
- 多重度の1は常に省略されている、と解釈している。
- 「ビュー」と「ビューポイント」の関連の関連端の多重度は、ISO/IEC42010では、しっかり 1:1 なのに、ここでは、違っている。どうしてだろう。。。
もし榊原さん真相ご存知なら、教えてください。