非機能要件とは? 何から決めればよいか
非機能要件とは、機能そのものではなく、速さや止まりにくさといった品質の水準を定めた要件です。まずIPA(独立行政法人 情報処理推進機構)の非機能要求グレードの6大項目に沿って、決める対象を洗い出すところから始めます。
非機能要求グレードは、非機能要求を定量的な水準で表現するための指標体系です。発注者と受注者の間で認識の食い違いを防ぐことを目的に公開されています(出典: IPA「非機能要求グレード」)。
非機能要件の6大項目
6大項目は次のとおりです(出典: IPA「システム構築の上流工程強化(非機能要求グレード)」紹介ページ)。
| 大項目 | 何を決めるか |
|---|---|
| 可用性 | 運用時間、目標復旧時間、稼働率 |
| 性能・拡張性 | 応答速度、処理件数、将来の増加余地 |
| 運用・保守性 | 監視、バックアップ、保守の体制 |
| 移行性 | 既存データの移行方法と期間 |
| セキュリティ | アクセス制御、ログ、脆弱性対応 |
| システム環境・エコロジー | 設置環境、電力、規格への適合 |
なお、非機能要求グレードは2018年版が公開されており、IPAは2019年3月に利用ガイド(活用編)と経営層向け読本の改訂を公表しています(出典: IPA「非機能要求グレード2018 利用ガイド[活用編]と経営層向け読本を改訂」)。
性能だけを決めても足りない理由
発注時に相談されるのは、ほとんどが性能の話です。しかし6大項目のうち性能・拡張性は1つに過ぎません。
たとえば可用性を決めずに進めると、障害時に何時間で復旧するのかが誰も答えられない状態で運用が始まります。可用性の項目には、運用時間、目標復旧時間、稼働率といった指標が含まれ、表現の例としては24時間無停止の運用時間、2時間以内の目標復旧時間、99.99%の稼働率といった水準が挙げられます(出典: Qbook「非機能要求グレードとは?6つのカテゴリと使い方・活用ポイント」)。これらは表現の例であり、自社に必要な水準は別に決める必要があります。
最初にやることは次の3つです。
- 6大項目を紙に書き出し、自社にとって重要な順に並べる(所要時間の目安: 1時間)。
- 各項目について、決めるのが自社か受注側かを振り分ける(つまずきやすい点: 全部を受注側に任せてしまうこと。水準の判断は業務を知る発注側にしかできません)。
- 重要度の高い項目から、具体的な数値を入れる作業に移る。
水準の決め方は次のセクションで扱います。ここでは、性能の秒数だけを議論の対象にしないことを押さえてください。
自社の水準はどう決める? 社会的影響度から逆算する
自社のシステムがどのモデルシステムに当たるかを決め、そこから水準を選びます。中小企業の社内システムに、社会基盤システム並みの水準は要りません。
非機能要求グレードのグレード表は、システムの社会的影響度に応じた3つのモデルシステムに対応しています(出典: IPA「システム構築の上流工程強化(非機能要求グレード)」紹介ページ)。まず自社がどれに当たるかを決めれば、水準の議論は一気に具体的になります。
3つのモデルシステムと自社の当てはめ
3つのモデルは次のとおりです。
| モデル | 例 | 想定される当てはめ |
|---|---|---|
| 社会的影響がほとんど無い | 小規模なWebシステム | 社内の申請フォーム、予約受付 |
| 社会的影響が限定される | 企業の基幹システム | 販売管理、在庫管理、生産管理 |
| 社会的影響が極めて大きい | 不特定多数が利用する社会基盤システム | 中小企業の社内システムでは通常あてはまりません |
中小企業の社内システムは、前の2つに当たることが多くなります。つまり、最上位の水準をそのまま求める必要はないという判断の根拠が、公式資料の側にあるということです。
判断が分かれるのは、社外の取引先が使うシステムです。止まったときに取引先の業務が止まるなら、社内だけで完結するシステムより一段上の水準で考えてください。
レベル0から5の考え方
各指標はレベル0からレベル5までの6段階で評価し、数字が大きいほど実現の難易度が高くなります(出典: 同紹介ページ)。難易度が上がるほど、費用と期間も増えます。
この段階表があると、発注側の伝え方が変わります。「速くしてほしい」ではなく、「この項目はレベル3で」と言えるようになるためです。
- モデルシステムを1つ選び、社内で合意する(所要時間の目安: 半日)。
- 重要な項目から順に、目安のレベルを仮置きする(つまずきやすい点: 全項目を高いレベルに置くこと。費用が跳ね上がります)。
- 仮置きしたレベルを受注側に示し、費用と期間への影響を確認する。
- 影響の大きい項目だけ、レベルを上げ下げして調整する。
このやり取りを見積もり前に済ませておくと、提案の比較もしやすくなります。実際の数値の書き方は次のセクションで扱います。
性能要件は何を数字で書く? 応答速度と同時利用者数
性能要件は、どの操作が、どの条件で、何秒以内に終わるかという3点セットで書きます。条件を書かない秒数は、検収で必ず揉めます。
「画面表示は3秒以内」とだけ書かれた要件は、実務では機能しません。どの画面か、何件のデータが入った状態か、同時に何人が使っているときかで、結果がまったく変わるためです。
書き方の型と記入例
型は「対象の操作」「前提条件」「目標値」の3列で持つと、そのまま検収の確認表に使えます。
| 対象の操作 | 前提条件 | 目標値 |
|---|---|---|
| 受注一覧の表示 | 登録件数10万件、同時利用20人 | 3秒以内 |
| 受注データの検索 | 同上、検索条件3項目 | 5秒以内 |
| 月次集計の実行 | 1か月分、約3万件 | 10分以内 |
| 帳票のPDF出力 | 50ページ | 30秒以内 |
目標値を決めるときは、現行の運用でどれくらい待っているかを起点にします。今より遅くならないことが最低線で、そこからどこを改善したいかを選ぶ順番です。
すべての操作に目標値を付ける必要はありません。1日に何十回も使う操作と、月に1回の処理では重みが違います。
ピーク時の同時利用者数の見積もり方
同時利用者数は、全社員数ではなく、同じ時間帯に実際に操作する人数で考えます。ここを大きく見積もると、必要のないサーバ構成に費用を払うことになります。
- 対象業務の担当者数を数える(所要時間の目安: 30分)。
- 1日のうち操作が集中する時間帯を特定する(つまずきやすい点: 月末や締め日など、月に数回だけ跳ね上がる山を見落とすこと)。
- その時間帯に同時に画面を開いている人数を見積もる。
- 将来の増加分を見込み、何年後にどれくらいまで伸びるかを添える。
将来の増加分は、性能・拡張性の項目で扱う話です。今の人数だけで決めると、増員のたびに作り直しになります。何人までなら構成を変えずに耐えられるか、という形で受注側に確認してください。
なお、ここで決めた数値は測定条件とセットで初めて意味を持ちます。測り方の揃え方は次のセクションで扱います。
測り方をどう揃える? 条件を統一しないと比較できない
性能値は測定条件で簡単に変わるため、要件と同時に測定条件を決めます。当社の実測調査でも、条件を揃えずに比べると、差が機材の違いで説明できてしまいました。
当社がFeliCaの検出時間をOSバージョン別に調べたとき、いちばん危なかったのは「端末が違うだけではないか」と言われて結論が崩れることでした。同じ問題は、システムの性能検収でも起きます。
揃えるべき測定条件
当社の調査で実際に取った手当ては、次のとおりです。これは発注時の測定条件の決め方にそのまま応用できます。
| 揃えた条件 | 当社の調査での具体 | 発注時に置き換えるなら |
|---|---|---|
| 計測区間 | セッション開始からカード検出まで | 操作の開始から画面表示完了まで |
| 測定対象 | 全計測で同一のカード1枚 | 同一のデータ件数と同一の検索条件 |
| 最悪ケース | 目的のコードを常にリスト末尾に固定 | 件数が最も多い取引先や期間で測る |
| 試行回数 | 各条件10回から20回 | 各操作を複数回、時間帯を変えて測る |
| 集計方法 | 平均ではなく中央値 | 中央値と最遅値の両方を見る |
| 環境差の排除 | 同一端末のOSアップデートで比較 | 同一サーバ構成、同一ネットワークで比較 |
集計に中央値を使ったのは、タイムアウトが混じる条件では平均が外れ値に引きずられるためです。検収の場でも、たまたま1回速かった結果を根拠にされると、実運用と合わない判定になります。
制約事項を先に明示する
測っていない範囲を、測ったように扱わないことが重要です。当社の調査では、端末を分けざるをえなかった条件について、1コードあたりの速度が一致していることを根拠に、観測された差が機材差では説明できないことを示しました。
さらに、外挿した推定値には実測値と区別できる印を付け、未実測であることを明記しています。対象外にしたOSバージョンや、単一のシステムコードのカードしか試していない点も、制約として書きました。
発注側がやることは次のとおりです。
- 測定条件を要件書に併記する(つまずきやすい点: 条件を口頭で合意して書き残さないこと)。
- 本番相当のデータ件数を用意する時期を決める(所要時間の目安: データ準備に数日かかることがあります)。
- 測定に使う環境を1つに固定し、途中で変えない。
- 測れなかった条件を、検収報告に制約として書いてもらう。
測っていないことを測ったように書かない。この1点が、性能レポートの信頼性を最後に決めます。検収での確認手順は次のセクションで扱います。