■はじめに
システム開発において機能要件・非機能要件という観点があることを知ったので備忘録として調べたことを残しておきます。
■機能要件
機能要件とは、要件定義で決まった「実装する機能」のことを指す。
発注者側が満たして欲しい事項となるため、要件通り実装できていなければ「失敗」となる。
■非能要件
システム開発をする上で、機能面以外の要件を非機能要件という。
非機能要件は専門性が高いため、開発側が率先して定義する必要がある。
また、範囲が広いためQCDを考慮して決めていく必要がある。
非機能要件は、ヒヤリングベースで作成することが難しいため、IPAが提供している「非機能要求グレード2018」に定めている以下6つの大項目に従って定義するらしい。
表は下記リンク先より「「非機能要求グレード」実践セミナー システム基盤の非機能要件定義を講義と演習で身につける」のPDFより抜粋
大項目 | 要求例 |
---|---|
可用性 | ・運用スケジュール(稼働時間・停止予定など)
・障害、災害時における稼動目標 |
性能・拡張性 | ・業務量および今後の増加見積り
・システム化対象業務の特性 (ピーク時、通常時、縮退時など) |
運用・保守性 | ・運用中に求められるシステム稼動レベル
・問題発生時の対応レベル |
移行性 | ・新システムへの移行期間および移行方法
・移行対象資産の種類および移行量 |
セキュリティ | ・利用制限
・不正アクセスの防止 |
システム環境・エコロジー | ・耐震/免震、重量/空間、温度/湿度、騒音など、システム環境に関する事項
・CO2排出量や消費エネルギーなど、エコロジー に関する事項 |
■非機能テストの一部
①パフォーマンステスト
想定に近い状態で動作させ、要件を満たした挙動となるかテストを行う。
例)リクエストに対しての応答時間
②負荷テスト
過負荷な状態となった時に、システムにどういった症状が出るかテストを行う。
例)データの不整合
③ユーザビリティテスト
ツールなどを活用してユーザが使いやすいシステムであるかテストを行う。
例)Google Analyticsを活用してシステム利用者の行動を確認する。
実際に複数のユーザに使用してもらい、問題点を聞く。
④セキュリティテスト
システムのバグにより発生する、情報セキュリティの欠陥を調べるテスト
例)SQLインジェクション
クロスサイトスクリプティング