ソフトウェア開発における「要求」を正しく理解しよう
はじめに
ソフトウェア開発を行ってこなかった人とソフトウェアエンジニアが会話すると、
要求(仕様)という言葉の捉え方が全然違う
と感じることがあります。この認識のズレがまさに「顧客が本当に必要だったもの」問題を引き起こすわけですが、
今回は「要求」という言葉について解説していきます。
いわゆる「V字モデル」について
「ソフトウェア開発者がこれを知らなきゃモグリ」という言葉の一つに、V字モデル(Vモデル)があります。
このV字モデルで「要求分析」「基本設計」「詳細設計」と書かれている部分でそれぞれ何をするのか? を正しく理解できていれば、その人はソフトウェア開発プロセスを理解している人です。しかし、
ほぼすべての人はその違いをわかっておりません。
要するに、このような開発プロセスに沿ってITシステムは作られているということを知っている人は、エンジニアが思っている以上にずっと少ないのです。
エンジニアに「何がしたいのか?」と聞かれる理由
エンジニア以外の人が、ITに詳しい人に「○○のプログラムを作りたい」とか相談すると決まって聞かれるのがこのセリフです。
正直、鬱陶しいと思ったことはないですか?
そんなことはいいから早く「パッと動くソフト作ってくれや」と思われるはずです。ですが、実はエンジニア側こそがパッと作りたいのです。そのうえで最も必要な情報がこの「何がやりたいのか」という点なのです。
エンジニアが「要求」を確認する理由は明確です。簡単にいうと
あなたのやりたいことを、詳細かつロジカルに言えますか?(コンピュータは、持っている機能しかできませんよ)
あなたのやりたいことに、ITが本当に必要ですか?(人力で運用という対応でよくないのはなぜですか?)
という2点を確認したいだけなのです。
ユーザーの要求とソフト要求仕様
1番の「やりたいことを、詳細かつロジカルに言える」という点はなによりも重要です。「ITを使うと(きっと)すごく便利になる(はず)」と想像されることが多いですが、実は
自分がITに何をさせたいのかがよくわかっていない
ということがとても多いです。そして、
コンピュータは言われたことしかできない
ということを忘れてはいけません。最近では、ChatGPTに代表される生成AIなどが出てきたせいで、何でもできるような錯覚を持っている方もいるかもしれませんが、自分がITに何をさせたいのかがわかっていないと、ITを使っても決して便利にはならないのです。
2番の「やりたいことに、ITが本当に必要ですか?」も重要な問いです。実際、ITはなくてもやりたいことができる場合もありますし、もっと言うと
「あれ、ITを使うとなると意外とめんどくさいことになる」
などという場合もありえます。
これらはそれぞれ「ユーザーの要求」と「ソフトに求める要求仕様」という形で整理されるべきであり、逆に言うと、これらが明確でないと良いITを得ることはできないのです。
おわりに ~ 「要求」を整理し、次に「設計」しよう
最初のV字モデルの話に戻ると、「ユーザーの要求」と「ソフトに求める要求仕様」を順に作成し、ITを作り込んでいくということをわかりやすく図示しているのがV字モデルの図ということができるでしょう。
ただし、良いITを作るには要求の整理だけではだめで、次に
良い「設計(デザイン)」が必要
です。この設計(デザイン)は、要求の整理とはまた別のスキルが必要で、また設計(デザイン)がITの質を決めるといっても過言ではありません。設計についてはまた改めて解説を行いますので、ご期待ください。
(つづく)