はじめに
現在、受託開発企業でシステムエンジニアをしている@fusassyといいます。
最近、インフラ(クラウド)の非機能要件定義を担当しました。その際、参考にした情報を備忘録として残します。以下で挙げた資料を利用すれば、非機能要件定義書の作成は可能ですが、最後は利害関係者の方々(受託開発であればお客様)との合意が必要となります。
非機能要件の6つのカテゴリ
そもそも要件定義とは、ソフトウェアやサービスを実装する前に、「どのような機能を持つか」を定める工程となります。要件定義のうち「実装する機能」の要件を「機能要件」といい、「実装する機能以外」の要件を「非機能要件」といいます。非機能要件は、情報処理推進機構(IPA)によって、6つのカテゴリに分類されています。
可用性
システム稼働・停止の運用スケジュールや、障害発生時の復旧に関する水準を要求を定めたもの。継続性、耐障害性や回復性を含んでおり、通常時のみならず災害発生時の対応も定めておくと良いです。
性能・拡張性
通常時とピーク時のシステム負荷の許容量と、業務量増加の対応に関する要求を定めたもの。アプリ側の処理効率化は前提で、インフラ(CPU・メモリ・ディスク等)の利用率を概算し、スケールアップ・スケールアウトによる拡張性を検討します。ただしオンプレミスとは異なり、クラウド利用の場合はインフラ性能の拡張は容易なので、厳密に定義する必要はないかもしれません。
運用・保守性
システム運用時の監視方法・方針、稼働率や障害・問題発生時の対応に関する要求を定めたもの。正常稼働のためのサービスマニュアル(サービスデスクも検討)や、インシデントマニュアルが必要となります。各種運用管理(インシデント管理・問題管理等)の方針についても定めておきます。自動化・簡素化も可能な範囲で実現できると良いと思います。
移行性
新システムの移行時期、方針と対象の要求を定めたもの。リハーサルの実行計画も定めておきましょう。
セキュリティ
情報セキュリティ・コンプライアンスの方針や適用範囲、システム関係者の認証・認可に関すること、また不正監視や各種マルウェア対策に関する方針を要求を定めたものです。
システム環境・エコロジー
システムの設置環境や消費エネルギー量などに関する要求を定めたもの。システムの利用(利用者)範囲、対応言語の幅、利用端末等、システム環境に関する全般的な要件を定めます。エコロジー観点として消費エネルギー量も算出できれば良いですが、現実的には困難なので割愛して良いと思います。
上記のほか、新システムの開発で利用する技術や導入する製品について、導入方針、開発・検証手法、ドキュメントの種類・整備方法・標準化も定めておくと良いです。
参考にした資料
非機能要求に関する分類・項目
非機能要求グレード(IPA)
情報処理推進機構(IPA)が提供している、ユーザと開発者の両者間で非機能要件の確認をするためのツール群。非機能要件定義のためのバイブル的な存在です。非機能要求グレードの項目一覧における事項を網羅するように、まずは非機能要件を整理すれば良いです。そして、どのレベルまで要求を満たすべきか、システムの特徴や予算との兼ね合いで決めていきましょう。
セキュリティに関する文書
脆弱性診断士スキルマッププロジェクト
「特定非営利活動法人日本ネットワークセキュリティ協会」の日本セキュリティオペレーション事業者協議会のセキュリティオペレーションガイドラインWG(WG1)と、「OWASP Japan」主催の共同ワーキンググループである 「脆弱性診断士スキルマッププロジェクト 」が提供する資料群です。Webシステム・アプリを安全に構築するために必要な要件定義書等が整備されています。文書「Webシステム/Webアプリケーションセキュリティ要件書」の様に、開発言語やフレームワークに依らない、セキュアコーディングに関する要件も整理されています。
セキュリティ関連NIST文章
米国国立標準技術研究所(NIST)のセキュリティ関連の和訳資料。セキュリティ界隈では影響力が非常に大きいみたいです。文書によっては非常にボリューミーなので、必要なものを選択して確認すれば良いと思っています。
クラウドサービス情報セキュリティ提供における対策
クラウドサービス利用時における、総務省が提供するセキュリティガイドライン。2021年9月に第3版が発行されています。地方公共団体や民間事業者が利用するクラウドサービスで求められる情報セキュリティ対策(ベストプラクティス)が記載されています。クラウドサービスの提供主体としてはSaaS・PaaS・IaaSの全ての事業者を想定しています。
ログに関する文書
企業における情報システムのログ管理に関する実態調査
非機能要件定義では、ログの保存期間も定めておく必要があります。特に、監査ログは1年の保管が必要なため、場合によっては別ストレージへの保存処理が必要な場合があります。