【読書ログ】『Design it プログラマーのためのアーキティング入門』のⅠ部を読んで
今回、取り上げる本のタイトルはこちら。
「Design it プログラマーのためのアーキティング入門」
一旦は、読破しているものの、現在、自分の頭の中で整理途中。
『Design it プログラマーのためのアーキティング入門』を読むに至った背景
読むに至った背景は以下の通り。
- 仕事でソフトウェア開発の上流工程を任されることが多く、今までの経験知だけでなく、ソフトウェアを開発する際の設計について学びたいと感じたから。
- ソフトウェアアーキテクトに興味があった。
- デザイン思考に興味があった。
- 自分自身のキャリアを考えた時に、PMというよりはアーキテクチャとしてキャリアを開発していきたいという思いがあったから。
ソフトウェアアーキテクトとは?
言葉の定義としては、様々あると思う。
一言で言ってしまえば、「設計判断が集まったもの」ということだと思う。
なぜ、このような方式にしたのかを明記したものと考えている。
ソフトウェアアーキテクトを考えることによって、問題の早期発見にも繋がる。
後工程に行けば行くほど、設計判断の変更には高い工数が降りかかってくる。
ソフトウェアアーキテクトの責任とは?
そもそもソフトウェアアーキテクトにはどのような責任があるのか。
何をすべきなのか。
全体を見る
ソフトウェアアーキテクトは設計書やコードだけを見ればいいわけではなく、ビジネス面も含めてソフトウェアに関わる全体を見る必要がある。
・どのようなソフトウェアか
・どのようにソフトウェアが開発されるべきか
・どのようなメンバでソフトウェアを開発するのか
・どのようなプロセスでソフトウェアを開発するのか
・どのようにソフトウェアを顧客に届けるのか
・ソフトウェアがどのように顧客の目的を果たすのか
もちろん、ソフトウェア全体を見通すことも必要。
ソフトウェアの基本構造を定義する
ソフトウェアの基本構造とは、ソフトウェアがどのように構成されるかを定義したもの。
基本構造を定義するうえで大事になるのが、要素と要素間を繋ぐ関係。
要素:ソフトウェアの基本構成単位
関係:要素が責務を全うする際に、どのように連携するかを示したもの
この、要素と要素を関係で繋いだものが、構造となる。
ほとんどの、ソフトウェアはモジュールとモジュールがなんかしらの関係で繋がっている。
品質特性を見通す
ソフトウェアアーキテクトにとって一番重要なのが、品質特性の見通し。
ソフトウェアによって、どの品質特性に重きを置くのか、品質特性間のトレードオフを判断する責任が、アーキテクトにはある。
ソフトウェアを利用する状況によって、重視する品質は異なってくる。
ソフトウェアを分解する
ソフトウェアをどのような構成で開発していくかを考えるためには、ソフトウェアを分解して考えていく必要がある。
また、分解した各要素に対して責務を与える必要もある。
分解することのメリットして下記が挙げられる。
・大きいものを小さなものに分解していくことによって、戦略が立てやすくなるし、品質特性の見通しもしやすくなる。
・管理しやすくなるし、戦略も立てやすくなる
・設計に柔軟性が生まれる