Edited at

『ソフトウェアシステムアーキテクチャ構築の原理(第2版)』読んだ

More than 3 years have passed since last update.

『ソフトウェアシステムアーキテクチャ構築の原理(第2版)』を読んだので、メモとして内容の一部を紹介します。


原書、著者など


  • Software Systems Architecture (2nd Edition)

  • 著者 Nick Rozansky, Eoin Woods

  • 監訳 榊原さん


何が書いてある?

「ソフトウェアシステムのアーキテクチャとは?」という深淵な課題について書いています。アーキテクチャ、システムとその関連概念群を定義しようという取り組みは古く、

これが、元となり、

となるのですが、この本は、上記の中で現れてきた概念である「ビュー」に加えて新しく、「パースペクティブ」を加えてカタログ化したものです。

すごくざっくり言うと、よく、

「非機能要件がシステムのアーキテクチャに影響を与える」

と言いますよね?本書は、この言説を徹底的に解説したものです。(非機能要件に限らず、横断的な視点を「パースペクティブ」として捉えている)

アーキテクチャは判断の連続であり(帯には、"Architecture is Decisions"とある)、その判断の原理を体系化(Systemize)しよう、ということです。


アーキテクチャとは何かを少しだけ形式的に


アーキテクチャの話をする時に核となる概念群

UML で描くとこう読める。



  • 「システム」「アーキテクチャ」を持つ。(真ん中の段)


  • 「アーキテクチャ」は、「アーキテクチャ要素」「要素間関係」からなる。(上の段)


  • 「システム」は複数の「ステークホルダー」のニーズに対応する。(右下)


  • 「アーキテクチャ」「アキーテクチャ記述」によって文書化される(かもしれない)。(左下)


  • 「アキーテクチャ記述」「ステークホルダー」のために文書化される。(下の段)

しかし、実際にアーキテクチャを記述しようとすると、1つの文書ではとっても複雑で巨大な説明になってしまいます。そこで、「ステークホルダー」「関心事」毎に分割する必要が出てくる。ここに「ビュー」「ビューポイント」を導入してみよう。


「ビュー」と「ビューポイント」



  • 「ビュー」「ビューポイント」に従う。


  • 「ビューポイント」は1つ以上の「関心事」をカバーする。

ここで、ビューとは、Krushten であれば、論理/プロセス/物理/開発の4のビューとなります。これらはカタログ化され、本書では


  • コンテクスト

  • 機能的

  • 情報

  • 並行性

  • 開発

  • 配置

  • 運用

とグルーピングされています。


パースペクティブ

さて、本書の白眉は「アーキテクチャパースペクティブ」です。これを入れた概念図は、このようになります。

「パースペクティブ」は、従来の言葉で近いものとして「非機能要求」「横断的関心事」がある。本書ではこの「ビューポイント」と「パースペクティブ」のカタログを作っています。


  • セキュリティ

  • パフォーマンスとスケーラビリティ

  • 可用性とレジリエンス

  • 発展性

  • アクセシビリティ

  • 開発リソース

  • 国際化

  • 配置場所

  • 規則

  • 使用性

そして、本書の後半のほとんどをこのカタログの記述に当てています!


まとめのマインドマップ(メモ)

参考


メモ(本書の間違いかぼくの考え違いか分からない点)

特にUMLでかかれたコンセプトクラス図で気になった点。


  • 日本語版の図、「アーキテクチャ」から「アーキテクチャ要素」へ向かう関連の多重度を1..nとして追加した。(多分、「アーキテクチャ」から「要素間関連」へ向かう関連の多重度と位置がずれたのだと思っている。ちなみに原著も日本語版と同じ。)

  • 図の中のUMLの関連は、Navigabiity で記述されているが関連の方向で示した。

  • 多重度の1は常に省略されている、と解釈している。

  • 「ビュー」と「ビューポイント」の関連の関連端の多重度は、ISO/IEC42010では、しっかり 1:1 なのに、ここでは、違っている。どうしてだろう。。。

もし榊原さん真相ご存知なら、教えてください。