質の高い情報システムを構築したい——発注側も受注側もその思いは共通である(はずだ)。しかし、当然ながらそこにはコストという壁が存在する。
決められたコストの範囲内で品質の高いシステムを作り上げるためには、要件定義の際に実現すべき機能や非機能の優先順位付けを行わなくてはならない。また非機能要求においては要求間で実にさまざまなトレードオフが発生する。セキュリティを重視して伝送データを暗号化すれば、オンライン性能が悪くなり、性能を求めて伝送データを暗号化しなればセキュリティが脆弱になる、のように、“あちらを立てればこちらが立たず”といった状態があちこちで発生する。
今回は非機能要求の“鉄則3カ条”の中でも、バランスの取り方が難しいとされる「要求間のトレードオフを見極める」コツについて検討していきたい。
要求間だけじゃない!? 導入時と運用時のトレードオフ
トレードオフを考える上で最初に留意しておきたいのは、情報システムの“ビフォーアフター”のイメージを描くことである。そのシステムを導入する前と後では、何が、どう変わるのか——至極当然のことなのだが、意外と発注側と受注側の間でこの導入する前(構築時)と導入後(運用時)に発生する事象や費用の認識が一致していないケースが多い。さらにいうなら「目先の利益(導入時のコスト、手間、期間)にとらわれて、導入後の運用を考慮せずに構築され、ちょっとした障害でストップしてしまったり、維持するために必要な費用がどのくらいか、またシステム拡張ができるのかどうか、誰もわからない情報システム」が世の中には結構な割合で存在する。
こうした不幸なシステムが誕生する背景には、発注側であるユーザー企業が導入後の具体的な運用イメージ(毎月の運用コスト、人員配置、OS/ミドルウェア/ファームウェアのバージョンアップやセキュリティパッチなどのアップデートの間隔、ユーザー教育の有無など)を描けていないところに大きな原因があるのだが、受注側である開発ベンダーのほうも「納期が早く済むほうが助かる」「納品後の対応は別」とする傾向が少なからずある。システムを構築するのに精一杯で、運用まで検討している時間がないというのが実状だろう。
開発ベンダーにとっては“作って終わり”でも、ユーザー企業にとっては“納品されてからが始まり”なのである。その情報システムが導入された前と後のイメージを両者ですりあわせ、導入後の運用まで含めた長期的な展望で、何かを優先すれば何かを犠牲にせざるを得ないというトレードオフが必ず発生する。こうした認識の下で情報システムを構築することの重要性を、今一度認識してほしい。
もう少し具体的に考えるために、前回用いた「チケット販売システム」の非機能要求を再掲する(カッコ内は非機能要求グレード)。
チケット販売システム
- いつでも…深夜2〜4時の保守時間を除き、サービスを提供する(可用性)。大量のアクセスがあっても目標性能に対し、99%の遵守率で捌けるように、クラウドでリソースを柔軟に増やす(性能・拡張性)
- だれでも…購入画面を日本語以外にも英語と中国語の多言語対応にする(システム環境・エコロジー)
- 安心して…個人情報を管理するので、蓄積データを暗号化する(セキュリティ)
- コストを安く…誰でも保守できるように、保守マニュアルの整備を行い、保守作業自動化のためのツールや仕組みを導入する(運用・保守性)
仮に、このシステムの発注側が「サービスインは◯月×日。これは絶対に譲れない」と稼働日を最優先事項として挙げてきたとする。そこで受注側は「パブリッククラウドを使って構築すれば、コストも安く上がり、予定の納期を守れる」と判断したとする。しかし、発注側のユーザー企業にパブリッククラウドを運用した経験がない場合、マニュアルだけで運用が可能なのか、ユーザー教育が必要であればどのくらいの費用/期間がかかるのか……といった問題が後で生じるかもしれない。この場合、発注側には導入後のイメージを描く力、受注側には導入時と運用時のトレードオフを説明できる力、それぞれが求められることになる。