勘と経験と読経

略すとKKD。ソフトウェア開発やITプロジェクトマネジメントに関するあれこれ。

アーキテクチャ構築の原理 第2版を読んだ

「ソフトウェアシステムアーキテクチャ構築の原理 第2版」を読了した読書メモ。なお書籍版だと898g、616頁の大著をKindle版で手軽に持ち運べるのは有難い(もちろん、必要に応じてPCでも閲覧できる)。今後、何度も読み返すような本である。

ソフトウェアシステムアーキテクチャ構築の原理 第2版

ソフトウェアシステムアーキテクチャ構築の原理 第2版

最後には監訳者である榊原さんのあとがきが。

本書の真骨頂は、ビューポイントとパースペクティブのカタログ化にある。十二分なボリュームの書籍でもあり、生真面目に最初から600頁を読み進める必要はない。まずは第30章から読み始めてみるのもいいかもしれない。どこでどのテクニックを使うのか、インデックス的な使い方をするのも本書を有効に活用する1つの手だ。
ソフトウェアシステムアーキテクチャ構築の原理 第2版

すいません、生真面目に読み進めてしまいましたorz。というわけで、これから読む方は監訳者あとがきから読むことをまずオススメする。上記だけでなく、本書の読み解き方についてアドバイスがしっかりと書かれている......

なお、30章は「ソフトウェアアーキテクトとして仕事をする」である。この章では規模(小規模/アジャイル/計画駆動/大規模)や形態(社内システム/製品開発/エンプラシステム/既存エンハンス/パッケージ/ネット対応/廃止)ごとにアーキテクトとして検討する事項と、どの章を読むべきかがとりまとめて記載されている。第1部、第2部と読んだあと、自分の置かれている状況に応じて第30章を読み解き、ガイダンスに従って残りの章を読むのが良いかと思う。

ますます重要になるアーキテクチャ

現代では、いろいろな要因からソフトウェアの仕様はますます変化し易くなり、固定化や文書化が難しくなってきている。

  • ビジネス側の要請により、要求されるデリバリーサイクルが非常に短くなった
  • 慎重に計画・検討して構築するのではなく、迅速に構築して試行し、結果評価をすぐに再反映するような開発プロセスや基盤技術が実用的になった
  • 取り扱うニーズが高度化、複雑化したことにより、「作らずに仕様を決定する」ことそのものが困難になった。「作りながら考える」ことが必然となった

このような状況で「要件」や「仕様」をきちんと文書化するのは難しいだけではなく、無駄にもなりがちだ。最近見聞きするプロジェクト事例だと、専用の要求管理ツールやチケットシステムで管理することも多くなっているようである。アジャイル開発プロセスの文脈だと「ストーリー」とか「フィーチャー」と呼ばれるものが管理する対象である。

では、随時登録/更新される「ストーリー」のリストをインプットにソフトウェアは開発できるのかというと、そうではない。土台として必要となるのが開発の軸としての「アーキテクチャ」である。

最近、グローバルでアジャイル開発を啓蒙している組織の事例を見聞きする機会があったのだけど、やはり「アーキテクチャ」はきちんと文書化して共有し、その上で随時変化する要求を管理ツールで共有しながら順次開発していると聞いた。

思うに古き良き滝の時代に時間をかけて作成していた「要件定義書など」はある程度アーキテクチャの記述や表現を含んでいたんじゃないだろうか。しかし、時代の要請で「要件定義書」は失われ、別の形に変化してしまった。そこで、これまで以上にアーキテクチャを分析し、明確化する重要性は高まってきているのではないかと考えている。

アーキテクチャ構築の原理

さて、本書に何が書かれているかだけれども、詳細な目次は以前に新旧版の比較をした際の記事を見ていただきたい。概観としては以下の通りである。

  • 第1部 アーキテクチャの基本
    • アーキテクチャの概念についての整理。本書を読む上でも重要な「ビュー」「ビューポイント」「パースペクティブ」の関係について論じられている。
    • 第5章に「核となる概念間の相互関係」がモデルとして提示されているので、それを中心に読んでいくと良いと思う。
  • 第2部 ソフトウェアアーキテクチャのプロセス
    • どのようにアーキテクチャを検討し、最終的にアーキテクチャ記述(AD)に落とし込んでいくか、について記述されている。
    • 第13章で、サンプルとしての具体的なアーキテクチャ記述(AD)の章立てが提示されており、これと5章の「核となる概念間の相互関係」の関係を意識すると分かりやすい印象。

手書きの整理をしてみた。
https://www.instagram.com/p/BCLABITnEKC/

  • 第3 部 ビューポイントカタログ
    • ここからはアーキテクチャ検討において具体的に活用する観点のカタログである。
    • 「ビューポイントカタログ」はアーキテクチャ検討上の重要点が書かれているので、目を通して損は無いような気がする。

ビューポイントと、それぞれで作成する主要なモデルの関係を手書きで整理してみた。
https://www.instagram.com/p/BCVP6I9nEPF/

  • 第4部 パースペクティブカタログ
    • ここは、必要に応じて閲覧すればよい印象
  • 第5部 すべてを1つにまとめる
    • ソフトウェアアーキテクトとしてどのように取り組むべきか、についての論考。
    • 冒頭で紹介した監訳者あとがきにある、第30章はここに含まれている。

体力が許すならば第1部~第2部までは通して読んで、その後第5部を読んでから、必要に応じて第3部と第4部を読むのが良いような気がする。とはいえ、通読するのも非常に勉強になる、今後も何度も立ち返っていく教科書のような本であった。