要件定義とは、「顧客が作りたい機能の完成図をまとめる工程」のことです。
図で書くとこんな感じ。
「なんとなくわかったような、わからないような。う~ん、微妙」となったら。
要件定義は、本格的にシステム開発(ものづくり)をはじめる前段階のそもそも論。
わかりやすく言えば、「そもそも、何を作りたくて、具体的にどんな機能が欲しいのか?」を、「システム」を作る前に、ゴールをまとめる作業だと思ってください。
要件定義とは、顧客が作りたい機能の完成図をまとめる工程のこと
要件定義とは、顧客が作りたい機能の完成図、言ってしまえばゴールをまとめる工程のこと。
繰り返しになりますが、実際にシステム開発をはじめる前段階のお話です。
要件定義はシステム開発に入る前にお客様にいろいろと聞く
システム開発を始める前に。
「そもそも何がしたいのか?」は、使う人、つまりはお客様に聞くしかありません。
その作業が、要件定義だと思ってください。
- お客様にはどんな課題があって、そもそも何をしたいのか?
- どんなシステムを作りたいのか?どんな機能が欲しいのか?
- お客様の費用(予算)はどれくらいあるの?
よく「家を建てる前に、どんな家にしたいかを聞く」のに例えられますが。
イマイチピンとこない人は、「どんな家にしたいかを聞くイメージなんだなぁ」で問題なしです。
(「家はどんな間取り・デザインにしたくて、予算おいくらよ?」っていうのと同じ)
要件定義のざっくりイメージ【顧客が作りたい機能の完成図をまとめる】
要件定義のざっくりイメージはこんな感じです。
- 【課題】請求書の発行を自動化したい。エクセルで手入力で作成して、郵便局に出す日に毎回、請求書を印刷するのは面倒だし忘れる可能性がある。
- 【システム化する機能】請求書のもとになるデータを入力すれば、郵便局に出す日はシステムで判定するので、その日が来たら、プリンタで出力する。
この場合、少なくとも2つのプログラムが必要。
- 請求書のもとになるデータを入力する画面(プログラム)
- 請求書を郵便局に出す日を判定するプログラム
あとは、「先方(取引先)によって、郵便局に出す日は、ちがいますよね。請求書を出す条件を教えてください」とか、「請求書のレイアウトはどうしますか?」みたいな感じで、話を進めていきます。
1つのシステムを作り終わった後に、「思ってたのと違う」とならないように「顧客が作りたい機能の完成図をまとめるところ」まで持っていきます。
聞いた内容をもとにシステム的な設計・製造・テストへと進んでいく
要件定義でお客様から、聞いた話をもとに、実際にシステム開発が始まります。
1.システムを使う人に見えるデザインや、ボタンを押したときの動きを設計(基本設計)
2.見た目には見えないプログラムの中身(実際の処理や流れ)を設計(詳細設計)
詳細設計まで終われば、プログラミング⇒テスト(単体テスト/結合テスト/総合テスト)と、着々とモノ作りは進んでいきます。
ちなみにだけど、要件定義で決めた内容をもとに後ろの工程も進むので、ここがふわっとしていると・・・。
設計・プログラミング・テストで、手戻りが発生してちっとも進まないなんて地獄があったりするのです(*´ω`)。
基本情報技術者試験における要件定義は利害関係者がキーワード
基本情報技術者試験における要件定義は、利害関係者(実際に誰がシステムを使って、それにかかわるの人たちのこと)のニーズを識別する模様。
実際の出題例は、下記のとおりです。
企画,要件定義,システム開発,ソフトウェア実装,ハードウェア実装,保守から成る一連のプロセスにおいて,要件定義プロセスで実施すべきものはどれか。
ア システムに関わり合いをもつ利害関係者の種類を識別し,利害関係者のニーズ,要望及び課せられる制約条件を識別する。
「平成30年秋期問65 要件定義プロセスで実施すべきもの」より引用
イ 事業の目的,目標を達成するために必要なシステム化の方針,及びシステムを実現するための実施計画を立案する。
ウ 目的とするシステムを得るために,システムの機能及び能力を定義し,システム方式設計によってハードウェア,ソフトウェアなどによる実現方式を確立する。
エ 利害関係者の要件を満足するソフトウェア製品又はソフトウェアサービスを得るための,方式設計と適格性の確認を実施する。
正解は、アです。
選択肢のイ(計画段階の話)と、エ(システム方式設計。作ったシステムを動かすのに必要なマシンのスペックを決めたりする)はともかく。
ウも正解に思えるのだけど(前半は正しいので、ひよこSE(@PiyoOct)はひっかかりました 笑)・・・。
後半の「システム方式設計によってハードウェア,ソフトウェアなどによる実現方式を確立」がNGかな~って気がするので、消去法的にアが正解。
「利害関係者」(実際に誰がシステムを使って、にかかわる人たちのこと)というキーワードが出てくるのが少し違和感あるけど。
実際にシステム開発をやっている身として、利害関係者が出てくるのは間違ってはないので。
「そんなもんかなぁ~」くらいで覚えたって下さい。
まとめ
要件定義ときたら、「顧客が作りたい機能の完成図をまとめる工程」のこと。
もっとくだけて言えば、「そもそも、何を作りたくて、具体的にどんな機能が欲しいのか?」について。
本格的に「システム」を作る前に、ゴールをまとめる作業なんだぁと思ってくださいまし(-_-;)。
コメント