回答:
通信機器用の組み込みソフトウェアを作成します。私の問題領域は、イーサネット、音声、およびビデオプロトコルです。言い換えれば、私がプログラミングしている言語とは何の関係もないが、ソフトウェアを書くためにはまだ理解しなければならないことすべてです。写真サービスを販売するためのWebサイトを作成している場合、問題の領域は写真とeコマースです。軍用機のファームウェアを作成する場合、問題の領域は武器、センサー、制御システムです。写真をゲット?
問題領域に関するウィキペディアの記事から:
問題領域は、問題を解決するために検討する必要が専門知識やアプリケーションの領域です。問題のある領域とは、関心のあるトピックのみを参照し、他のすべてを除外することです。
アプリケーションが解決しようとする問題が属する領域です。
誰もがコンパイラー、バグトラッカー、フレームワーク、またはその他のコンピューターソフトウェアパッケージを書くわけではありません。
一部の人々は、砂および砂利産業向けのソフトウェアを作成します。精製所の屈折塔を監視するためのソフトウェアを書く人もいます。一部の人々は、プラスチック製の食料品袋の製造を制御するソフトウェアを作成します。一部の人々は、ケチャップパケットを満たすソフトウェアを作成します。
これらはすべて問題のあるドメインです。優れたソフトウェアを作成するには、ドメインについて少し知っておく必要があります。たとえば、レディミックスコンクリートなどです。
Ian K. Brayは、著書「An Introduction to Requirements Engineering(p9)」で、問題領域を次のように定義しています。
問題が存在する宇宙のその部分。
たとえば、リフト制御システムの場合、既存のハードウェア(リフト、モーター、ボタン、インジケーター、センサーなど)、建物の特性(床とリフトシャフトの数)、予想されるパターンが含まれます。使用法、ユーザーの特性、クライアントのリフト使用ポリシー(ユーザーが短い旅行にリフトを使用しないようにする必要がありますか?)など。
リフト制御問題の領域内では、前述のように、「この建物のリフトをより効率的に使用する制御システムが必要です」という問題があります。実際には、通常は問題を一連の副問題に絞り込みますが、現時点では、問題を解決するためには、ソリューションシステムが問題領域内で何らかの効果を生み出すことが明らかに必要であることに注意してください。要件を構成するのは、これらの望ましい効果です。
そのため、問題領域は、新しいソリューションシステム(SSと略されることもある)が動作し、必要な効果を生み出す世界の一部と同様に見なすことができます。ソフトウェアベースのソリューションシステムはアプリケーションと呼ばれることが多いため、問題のあるドメインはアプリケーションドメインと呼ばれる場合があります。