Requirements Engineering – Introduction (Part 1)
要件エンジニアリングの主な4つの活動については、以前説明しました。
システムがビジネスに役立つかどうかを評価し(フィージビリティ・スタディ)、要件を発見し(エリシテーションと分析)、これらの要件を何らかの標準フォーマットに変換し(仕様)、要件が顧客の望むシステムを定義しているかどうかを確認する(バリデーション)ことに重点を置いています。
実際には、要求工学は連続したプロセスではなく、アクティビティが交互に繰り返される反復プロセスです。
たとえば、まずユーザー要求、抽出、仕様、検証を繰り返し、システム要求についても同じステップを繰り返します。
プロセスの初期には、高レベルのビジネスおよびユーザー要件を理解することにほとんどの労力が費やされるでしょう。 プロセスの後半では、詳細なシステム要件の引き出しと理解に多くの労力が費やされます。
要件エンジニアリングを、オブジェクト指向分析などの構造化分析手法を適用するプロセスであると考える人もいます。 これは、システムを分析し、ユースケースモデルなどの一連のグラフィカルなシステムモデルを開発し、それをシステム仕様とするものである。
オブジェクト指向の分析および設計については、別のチュートリアル シリーズで説明します。
User and System Requirements
通常、要件はユーザー要件とシステム要件の 2 つのレベルに分けて提示されます。
異なるレベルの詳細を持つことは、異なるタイプの読者に対して開発中のシステムに関する情報を伝えることができるため、有用である。
だからエンドユーザーは詳細には関心がない、汎用で抽象化した書かれた要求が必要なんだよ。
開発に携わる人々は、システムがまさに何をすべきかを必要としています。
異なるレベルの詳細の間で明確に分離していなかった場合、おそらく多くの問題や誤解で終わるでしょう。
ユーザー要件
システムが提供すべきサービスおよびシステムが動作すべき制約を記述しています。 通常、自然言語で記述され、ダイアグラムで提供されます。
要求を指定するさまざまな方法については、このシリーズの後半で説明します。
システム要件
システム要件とは、システムサービスのより詳細な記述と、システムの使用方法などの運用制約、およびプログラミング言語などの開発制約のことです。
機能要件
非機能要件
ソフトウェア要件は、機能要件と非機能要件に分類されます。
非機能要件
システムによって提供される機能に対する制約である。
制約とは、システムが処理できるプロセス数(パフォーマンス)、SQL インジェクションなどシステムが対処しなければならない(セキュリティ)問題とは何か(信頼性)、使用する言語とツール(開発)、システムが組織の法律内で動作することを保証するために従う必要のあるルール(立法)、などである。
個々の機能要件より非機能要件が重要なことが多い。 ユーザーは通常、自分のニーズを本当に満たしていないシステム機能を回避する方法を見つけることができます。 しかし、非機能要件を満たせないと、システム全体が使用できなくなる可能性があります。
たとえば、航空機が信頼性要件を満たさない場合、安全に運用できませんし、組み込み制御システムが性能要件を満たさない場合、制御機能が正しく作動しません。
非機能要件は測定可能であるべき
可能な限り、非機能要件を定量的に書き、テストできるようにすべきです。
実際には、システムのユーザーは、しばしば目標を測定できる要件に置き換えることが困難であることを発見します。 彼らは、必要な速度や信頼性を定義するいくつかの数値が何であるかを理解していません。 1036>
Non-functional and functional requirements are dependent
Non-functional requirements often conflict, interact, or even generate other functional or non-functional requirements.
Measureable non-functional requirements の検証費用は非常に高く、顧客はこの費用が正当化されると考えないかもしれない。
許可されたユーザーへのアクセスを制限するなど、セキュリティに関するユーザー要件は、システムにユーザー認証機能を含める必要性など、機能的な他の要件を生成することがあります。
機能要件と非機能要件の区別
実際には、機能要件と非機能要件を分けることは難しいものです。 その定義が示唆するように、区別は明確ではない。
Separate between functional and non-functional requirements
非機能要件が機能要件と別々に述べられていると、それらの関係が理解しにくいかもしれない。
しかし、性能や信頼性などの創発的なシステム特性に明らかに関連する要件は明示的に強調すべきです。
創発特性とは、個々のシステム部品の特性から導かれる特性ではなく、システム全体としての特性です
。