
システムエンジニアリングおよびソフトウェア開発における機能仕様(機能仕様、仕様書、機能仕様書(FSD)、機能要件仕様とも呼ばれる)とは、システムまたはコンポーネントが実行しなければならない機能を指定する文書である(多くの場合、要件仕様の一部である)(ISO/IEC/IEEE 24765-2010)。[ 1 ]
ドキュメントには通常、システムユーザーが必要とするもの、および入力と出力(ソフトウェアシステムなど)の要求される特性が記載されます。機能仕様書は、対応する要件文書(例えば、製品要件文書「PRD」)に対する、より技術的な回答です。したがって、要件分析段階の結果を反映します。より複雑なシステムでは、通常、複数のレベルの機能仕様書が相互にネストされます。例えば、システムレベル、モジュールレベル、および技術的な詳細レベルなどです。
機能仕様書は、提案されたシステムの内部動作を定義するものではなく、システム機能がどのように実装されるかの仕様も含まない。
機能仕様書における機能要件は、以下のように記述される可能性があります。
このような要件は、外部エージェント(ユーザー)とソフトウェアシステムとの間の相互作用を記述するものです。ユーザーが「OK」ボタンをクリックしてシステムに入力を行うと、プログラムは「OK」ボタンを含むダイアログウィンドウを閉じることで応答します(または応答するべきです)。
機能仕様には多くの目的があります。チームプロジェクトにおける主な目的の一つは、ソースコードやテストケースの作成、そしてデバッグといった時間のかかる作業に取りかかる前に、プログラムが達成すべき目標についてチーム内で合意を形成することです。通常、このような合意は、ソフトウェアが満たすべき要件を費用対効果の高い方法で実現するための交渉を経て、当該プロジェクトの関係者による1回以上のレビューを経て達成されます。
産業用ソフトウェア開発の体系的なライフサイクル(ウォーターフォールモデル)では、機能仕様書は実装すべき内容を記述します。次に、システムアーキテクチャ文書は、選択したソフトウェア環境を用いて機能がどのように実現されるかを記述します。非産業的なプロトタイプ開発においては、機能仕様書は通常、要件分析の後、または要件分析の一部として作成されます。
チームが機能仕様に関する合意に達したと判断すると、通常、機能仕様は「完了」または「承認済み」と宣言されます。その後、ソフトウェア開発チームとテストチームは、機能仕様を参考にソースコードとテストケースを作成します。テストの実施中は、プログラムの動作が機能仕様で定義された期待される動作と比較されます。
機能仕様書を作成する一般的な方法の一つは、シンプルなワイヤーフレームまたは正確なグラフィックデザインのUIスクリーンショットを描画またはレンダリングすることです。これが完了し、画面例がすべての関係者によって承認されたら、グラフィック要素に番号を付け、画面例の各番号に対応する説明文を追加できます。例えば、ログイン画面では、ユーザー名フィールドに「1」、パスワードフィールドに「2」というラベルを付け、各番号を文書で宣言することで、ソフトウェアエンジニアが使用したり、後でベータテストで機能が意図どおりであることを確認したりすることができます。この方法の利点は、画面例に無数の詳細情報を追加できることです。