勘と経験と読経

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

評価と改善のための『ソフトウェアアーキテクチャメトリクス』を読んだ

読むのがホネな技術書やビジネス書を取り上げて2週間の読書期限を課して読んでアウトプットする仮想読書会「デッドライン読書会」の第70回。同僚と読書期限を約束することによって積読が確実に減るという仕組み。過去記事はこちら

さて、今回読む本は「ソフトウェアアーキテクチャメトリクス ―アーキテクチャ品質を改善する10のアドバイス」である。骨太のソフトウェアアーキテクトが書いた論文集といった本である。

本書を読む準備として読んだ(読んでた)こと

さて本書は翻訳者の皆さんの情報を見る限りでは読む前にちゃんと準備をしたほうが良さそうだった。
訳者の島田さんがこんなスライドを公開している。

speakerdeck.com

詳細はスライドを参照していただくとして、補助線として紹介されていたのは以下の本である。

あとこれは意図したことではなかったのだけれども、全般的には「進化的アーキテクチャ ―絶え間ない変化を支える」への言及が多く、この本を読んでおいたのも良かった。

ソフトウェアアーキテクチャメトリクスの概略と感想

概要は前述の訳者の島田さんのスライドに書かれている通りなのだけれども、個人の印象としてはこんな本だと思っている。

  • 薄々多くの人が気づいていた「アーキテクチャの継続的な改善の方法」について「進化的アーキテクチャ ―絶え間ない変化を支える」で良いコンセプトが提言された
  • 一方で同書が提示しているのはコンセプトであり、「良さそうだけど、コレ実際にどうやるの?」という疑問が芽生えた
  • 本書はこの疑問に対して、一線のアーキテクトであり論者である人々が考えたことが示されている

というわけで大変に興味深い本なのだけれども、本当に10人の意見が述べられているだけという点は読み解きも難しかったと思う。全体を俯瞰したり、総括するような章が無いのである。とはいえ様々な意見に触れることができるので、異論反論を考えながら対話的に読むのが正しいように思う。その点では「ソフトウェアアーキテクトが知るべき97のこと」に似た感じともいえる。

当然の大前提

よいソフトウェアを作るためにはよいアーキテクチャが必要、というのは言うのは簡単だが難しいことである。本書のアプローチは(私の理解では)測定して改善するというものである。だからソフトウェアアーキテクチャ「メトリクス」が必要というわけだ。そして、測定して改善するということは、一発で良いものを作るというよりは継続的に(長期的に)良くしていくということでもある。ここは、SI屋的には難しい課題であもる。

第9章のこの言葉が重要だと思った。

ゴールに達するごとに少しずつ基準を上げていきながら、継続的改善を続けていくようにしましょう。もちろん、それをする意味があるのは、ビジネス的な価値があり、開発が継続しているシステムに限ります。開発が終わっているコードベースのメトリクスを改善することには、ほとんど意味がありません。
ソフトウェアアーキテクチャメトリクス ―アーキテクチャ品質を改善する10のアドバイス、9章 ソフトウェアメトリクスを使用して保守性を確保する より

とはいえ「評価してくれ」「測定してくれ」というのはよくあるトピックであるので知っておくことには大きな意味があるだろう。10章のGQMあたりは取り掛かるのが容易でありここから始めるのが良いのではないかと思った(GQMは確かIPAが推していたこともあって、情報入手しやすかったはず)

むすび

読み解くためには前提知識や書籍などもあり、なかなかに歯ごたえのある本だった。書かれていることすべてを実践するというより、いくつかのヒントをいただく感じ。実際にいくつかのトピックについては試してみたいと思うものがあった。
あと、Apache Cassandraを使ったアーキテクチャの経年変化(エントロピーの増大)についての話は興味深い。本書で紹介された話のベースは同じ著者の以下のブログエントリーのようである。面白い。
blog.hello2morrow.com

さて本書はこれで終わり。次は何を読みますかね。 直近で手に取ってみたいのはこのあたりです。