uncategorized

要件定義って何それ?美味しいの?

The animals made their noises and then adjourned

プロ・プロジェクトマネージャの古川です。色んな規模のシステム開発案件のプロジェクトマネージャや新規事業開発のコンサルタントなどをやっています。主に業務システム開発を手がけてきましたが、ICタグシステムのベンチャーで新規事業開発や物流会社で経営管理などを手がけ、システム開発の受託側、発注側、自社サービス開発、事業に寄与する情報システムなど多様な経験があります。ですので、システム開発に関して要件定義から設計・開発、シナリオ設定に至るまで多面的な視点で話をしていきたいと思います。

本日は要件定義のお話。そもそも要件定義とは何か、さらに要件定義の上手な手法や進め方を紹介します。

要件定義は「合意形成」

システム開発は、その規模や性格にもよりますが、大抵の場合は以下の様な工程で進められます。

開発フロー

そして、システム開発にあたって、何で一番つまずくか・・・というと、最初の「要件定義」という工程です。要件定義をしっかりやらなければ、最終的な目標である、業務に役立つシステムの構築は難しくなります。というわけで、要件定義とはシステム開発において最も大事ともいえる工程なのですが、そもそも要件定義という言葉自体が曖昧で何をアウトプットとするのか?というのが決まっていなかったりします。

要件定義とは、簡単に言えば「システムを作らせる側」と「システムを作る側」が「何を作るか?」ということを合意するためのものです。「作らせる側=発注者」と「作る側=受注者」は当然ながら違う人なので、お互いの要求を明確に伝え合うことは非常に難しいものです。それが違う会社であれば、更に難易度は増します。

前提条件や“文脈”を揃える

発注者と受注者が同じ組織に属している場合は、その会社の事業に対する理解とか背景とか、所謂“文脈”を共有しているので、合意形成のための前提条件が整っています。よって、事業にとって何が必要でそのために何をどう設計すべきなのかなどについて、それなりの認識共有が最初からあります。しかし、両者が違う会社であり情報の非対称性が少なからずある場合は、その前提条件を整えるために多大な労力がかかります。多くの会議や文書が必要で、要件定義書も何度も書き直すことになるでしょう。しかし、そうしてもなお互いの認識レベルを揃えることは容易ではありません。また、同じ会社に所属している場合であっても、情報システムを主管する部門が比較的新しい時や事業との距離がある場合等はやはり同じ様なことが発生し、要件定義は難しくなります。

更に、オフショア開発の場合は、一層難易度が上がります。というのも、海外には日本人や日本の組織に必要不可欠な「空気を読む」とか「集団圧力」という習慣がないからです。それがないのはビジネスの現場においても同様です。「なんとなく分かった気になる」とか「みんなで時間を共有したのだから、互いに分かりあっただろう」と言った様な曖昧な「空気形成」というのはオフショア開発では期待出来ないのです。オフショアチームとの議論ではこの「空気形成」が機能しづらいので、要件定義の難易度は一気に上昇します。

一方で、オフショア開発には様々な利点もあります。コストを低く抑えられるし、エンジニアリングの質も確保されています。(→参考リンク:ベトナムで聞いてきた!オフショア開発のメリットって結局なんなのさ?)。よって、オフショア開発と要件定義を同時にこなせるのが最もいいわけです。では、要件定義をうまく進めるためにはどうしたらいいのでしょうか?簡単に手法や進め方を紹介します。

要件定義に際して発注側ができること

発注者側として要求定義を成功させるために最も必要だと言えるのは、自分たちにとって自明であるものも含めて全て明確に「定義」するということです。そのシステムの「目的」や「内容」、使っている「用語」、「手順」、システムを使う「ユーザ」、さらには「システム開発業務に関する関連情報」なども含め、あらゆるものです。「めんどくさい」ですね。しかし、この「めんどくさい」業務をしっかりこなすことで初めて受注者と発注者の認識レベルを揃え情報の非対称性をなくし、お互いの要求をしっかり伝えあえ、要件定義がうまくいくわけです。

もちろんこのように要件定義をすることが最善なわけですが、通常業務と一緒にやるのはとても大変です。そういう時のために、システム開発会社はいます。要件定義という、設計や開発以前の工程から、システム開発会社に協力を依頼するのです。そうすることで、要件定義がうまくいく確率は上がり、ひいてはシステム開発全体の質向上にも繋がるでしょう。よって、時間と費用をシステム開発会社にかけることを躊躇してはいけません。

以上見てきましたように、要件定義は中々難しい工程でありますが、上手に出来なければシステム開発全体の質に影響を与えてしまいます。よって要件定義にかける労力を惜しんではいけないのです。

SEKAI LAB TIMESは、アプリ・Webサービス開発を世界中のエンジニアチームに依頼・発注できるグローバルソーシングプラットフォーム「セカイラボ」が運営しているブログメディアです。詳しくはこちら→「SEKAI LAB TIMES始まりました


KENTARO FURUKAWA / Project Manager
業務システムからスマホアプリ開発まで多様なシステム開発現場でプロジェクトマネージャをつとめる。ICタグシステム開発のベンチャーや物流会社の経営企画などで、事業開発や事業改善を主導。現在はフリーのプロ・プロジェクトマネージャとして活躍。