Design It! の1章を読んだ.
各章ごとにまとめる予定です.
ソフトウェアアーキテクト
どんなもの?
利害関係者と一緒に,ソフトウェアのビジネス目標や,ソフトウェアへの要求を定義. この要求には,機能や品質特性が含まれる. この際,今後の設計に影響を与えそうな制約などにも注意しておく.
システムをそれぞれが小さい責務を持つコンポーネントに分割. これにより,設計を行う上で,上で決めた要求を満たすため方法について考えやすくなる.
設計判断を行う上で,その判断が影響を与える技術的および非技術的な様々な要素について考え,それらの要求におけるトレードオフを考える必要がある.そして利害関係者と一緒に最も良い妥協案を考える. 妥協案には,技術的負債を利用するというようなことも含まれる.
ソフトウェアアーキテクチャ
どんなもの?
利害関係者と定義した品質特性やその他の性質について,それらがシステム中に現れるにはシステムをどのように構成すればよいか考えた際の設計判断が集まったもの
アーキテクチャを選択する=システム上に現れてほしい品質特性や性質を選択する
システムの構造を定義する.ここでの構造とは,コードや実行中のソフトウェア上での要素の関係や,それら2つと物理要素(サーバ,チーム,人などを含む)の関係(あるモジュールはどのチームが開発するかなど)を示したもの. なお,構造には,それらがシステム上のどこに現れるかによりいくつか種類があり,考える品質特性に応じて,定義対象とする構造を変える.
考える利点
- 全体では複雑なシステム構築について,分割した問題を示してくれる.
- システムの構造が定義されており,そこには人やチーム間の関係も含まれていることから,開発において人・チームがどのように協働するか示してくれる.
- 考える過程で,機能だけでなく,品質特性や制約などについて注意を向けることができる.