5章アーキテクチャ上重要な要求を掘り下げる

設計に関する議論はすべて、「誰が」「何を」「なぜ」で始まる。「4章 ステークホルダーに共感する」では、誰がソフトウェアシステムの影響を受けるか、そして彼らがなぜそれを気にするかを明らかにする方法を学んだ。この章では、ソフトウェアアーキテクチャの観点から、何を、つまり要求を定義する方法を学んでいく。

アーキテクチャ上重要な要求(Architecturally Significant Requirement:ASR)とは、アーキテクチャ構造の選択に強く影響する要求のことをいう。ASRを明らかにするのは、ソフトウェアアーキテクトの責任だ。これを行うには、次の4つの要求分類について考える必要がある。

制約
変更できない設計判断。通常は与えられるものだが、選択することもある。
品質特性
システムが特定の状況でどのように動作するかを特徴付ける、外部から観察できる性質。
影響を与える機能要求
アーキテクチャにおいて特別な注意を必要とするフィーチャーや機能。
その他の影響を及ぼすもの
時間、知識、経験、スキル、社内政治、あなた自身の余計なバイアス、そして意思決定を左右するその他すべてのもの。

こうしたASRの種類を詳しく見ていきながら、ステークホルダーと協力してそれらを定義する方法を学んでいこう。

5.1 制約によって設計の選択肢を絞る

制約とは、選んだか与えられたかによらない、変更できない設計判断のことをいう。大半のソフトウェアシステムは、多少の制約を持っているものだ。すべての制約は選択を制限するものだが、適切に選択された制約は問題を単純化し、満足のいくアーキテクチャ設計をずっと容易にする。逆に、制約は、要求を満たせないほど選択肢を厳しく制限することで、アーキテクトにとっての生き地獄を作り出すこともある。 ...

Get Design It! ―プログラマーのためのアーキテクティング入門 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.