わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

ウォーターフォールモデルの最初は,要求定義? 要件定義?

「それでは第3問です.

ウォーターフォールモデルのプログラム開発工程は,《 ① 要求 ‖ ② 要件 ‖ ③ 用件 ‖ ④ 仕様 》定義,外部設計,内部設計,コーディング,テストからなる.

どの選択肢にも読みに『よう』があって,まぎらわしいですが……答えは①の『要求』です.『要求定義』という四字熟語を,覚えてください.そして,ウォーターフォールモデルの工程の最初は,要求定義とされています.参考書の294ページでは,1ページをとって,要求定義について説明しています.
他の選択肢がなぜ間違いなのかを,確認しておきましょう.②ですが,『要件定義』という言葉は,一応あります.使われています.また要求も要件も,英語にしてしまえばrequirementで,おんなじです.ですが『要件定義』は,『要求定義』と似て非なるものとされています.
というのは,ソフトウェア開発において『要求』とは,解くべき課題や,ソフトウェアを使う人などの立場から見て,『何々ができるようにしたい・してほしい』を表すからです.この観点で取捨選択がなされ,文書化されて,それをもとに次の工程(設計)へと進みます.
それに対し『要件』というのは,開発するソフトウェアが満たすべき性質・事柄を意味します.先ほどの『何々ができるようにしたい・してほしい』に対応させて言うと,開発の結果出来上がったソフトウェアは『何々をする・ができる』となりますかね.
そしてソフトウェア開発について蓄積された経験や,ソフトウェアやコンピュータ使用よりも上に立った『問題解決』の視点などから,『(このソフトウェアは)何々ができます』が先にあってはいけないのです.私は,あなたは,もしくはユーザは『何々ができる』ようになることを要望し…これがrequirementなわけです…そのあとに,それはソフトウェアを開発して解決すべきことなのか,どのようにして実現するのがよいかを,考えていきましょう,という流れになっているのです.
さて,間違いの選択肢はあと2つありますね.③の『用件』ですが,ソフトウェア開発において,この言葉は不適切です.もし文書で見かけたら,高い確率で『要件』の誤変換と思っていいでしょう.
最後,④の『仕様』は,ここでは間違いですが,適切に使えるようになってほしい用語です.ハードウェアと言いますか,PCなどの製品でも,見かけます.英語にすると,specificationですが,spec(スペック)と略されることもよくあります.ソフトウェア開発で『仕様』という言葉が出てきたら,それは日本語あるいは何らかの自然言語で書かれたものかもしれませんが,ときには,人間が読めるだけでなく数学的あるいは機械的なチェックも可能な,特別な言語で書かれているかもしれません.
『仕様』ではなぜ間違いなのかというと,一つは②の『要件』で話したのと同じ,これもまたソフトウェアが満たす性質を表したものとなるからですが,もう一つ,言葉のつながりとしてみても,『仕様定義』という言い方は,ポピュラーではありません.四字熟語としてよく使われるのは,『要求仕様』です.要求仕様は,要求定義の作業において最終的に作られる文書のことです.

なにこれ

今週月曜日,授業最初の小テストの解説です.4択が3問で,最初の2問は前回授業の内容から,そして第3問は参考書(『Cプログラミング入門以前』)からです*1
以下の情報も,問題を作るにあたり参照しました.

授業では,参考書を事前に読むことなく,問題を解いた学生のために,ウォーターフォールモデルとは何か,またどのような問題点があるかについても,説明をしました.それらについては,上でリンクしたWikipedia解説を読んで理解するほうが良いと考え,本記事では割愛しました.

*1:この本での「要求定義」の初出は,ウォーターフォールモデルの全体像が記された,p.293です.

*2:「要求」と「要件」はともに,ソフトウェア開発の分野で特定の意味を持った用語(専門用語)ですが,説明の中で2度出現する「要望」は,専門用語ではなく一般的な(辞書に載っている)言葉と思うのがよさそうです.本文にも1箇所だけ,「要望」の言葉を入れました.